FaceShifter:一秒換臉的人臉交換模型
點擊上方“小白學(xué)視覺”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達
如今,深度學(xué)習(xí)已近在圖像合成、圖像處理領(lǐng)域中取得驚人的成果。FaceShifter [1]便是其中之一,它是一種深度學(xué)習(xí)模型,可以非常先進的技術(shù)實現(xiàn)人臉交換。在本文中,我們將了解它是如何工作的。
01.問題描述
我們有一張源人臉圖像X?和一張目標人臉圖像X?,我們想要產(chǎn)生一個新的人臉圖像Y??。它具有X?圖像中的屬性(姿勢,照明,眼鏡等)和X?圖像中人的身份。圖1總結(jié)了該問題陳述?,F(xiàn)在,我們繼續(xù)解釋模型。

圖1.換臉的問題描述,所示結(jié)果來自FaceShifter模型
02.FaceShifter模型
FaceShifter由AEI-Net和HEAR-Net的兩個網(wǎng)絡(luò)組成。AEI-Net產(chǎn)生初步的面部交換結(jié)果,而HEAR-Net對該輸出進行細化。
AEI-Net
AEI-Net是“自適應(yīng)嵌入集成網(wǎng)絡(luò)”的縮寫,AEI-Net包含3個子網(wǎng):
1.身份編碼器:與將X?嵌入描述圖像中人臉身份的空間有關(guān)的編碼器。
2.多級屬性編碼器:一種與將X emb嵌入到空間中有關(guān)的編碼器,該空間描述了交換面部時要保留的屬性。
3.AAD生成器:一種生成器,它集成了前面兩個子網(wǎng)的輸出,以生成X?的面與X?的標識交換。

圖2. AEI-Net的體系結(jié)構(gòu)
身份編碼器
該子網(wǎng)將源圖像X?投影到低維特征空間。輸出只是一個矢量,我們將其稱為z?,如圖3所示。此矢量編碼X?中人臉的身份,這意味著它應(yīng)提取人類用來區(qū)分不同人的人臉的特征,例如眼睛的形狀,眼睛與嘴巴之間的距離,嘴巴的彎曲度等。
使用了經(jīng)過訓(xùn)練的人臉識別網(wǎng)絡(luò)。這可以滿足我們的要求,因為區(qū)分面部的網(wǎng)絡(luò)必須提取與身份相關(guān)的特征。

圖3.身份網(wǎng)絡(luò)
多級屬性編碼器
該子網(wǎng)對目標圖像X?進行編碼。它產(chǎn)生多個向量,每個向量以不同的空間分辨率描述X的屬性,稱為z?。這里的屬性表示目標圖像中人臉的配置,例如人臉的姿勢,輪廓,面部表情,發(fā)型,膚色,背景,場景照明等。它是具有類似U-Net結(jié)構(gòu)的ConvNet,例如可以在圖4中看到,其中輸出矢量只是放大/解碼部分中每個級別的特征圖。但是這里的子網(wǎng)并沒有經(jīng)過預(yù)訓(xùn)練。

圖4.多級屬性編碼器體系結(jié)構(gòu)
我們需要將X?表示為多個嵌入的形式,因為在單個空間分辨率下使用會導(dǎo)致生成需要交換面部的輸出圖像所需的信息丟失(即,我們想從X from保留太多精細的細節(jié),使壓縮圖像不可行)。這在作者進行的燒蝕研究中很明顯,他們嘗試僅使用前3個z?嵌入而不是8個嵌入來表示X?,從而導(dǎo)致圖5所示的輸出更加模糊。

圖5.使用多個嵌入表示目標的效果。如果使用前3個z?嵌入,則壓縮為輸出
而當(dāng)使用全部8個z 8嵌入時,則為AEI-Net
AADGenerator
AAD Generator是“ Adaptive Attentional Denormalization Generator”的縮寫。它以提高的空間分辨率集成了前兩個子網(wǎng)的輸出,以生成AEI-Net的最終輸出。它是通過堆疊如圖6所示的稱為AAD Resblock的新塊來實現(xiàn)的。

圖6.左圖為AAD Generator架構(gòu),右圖為AAD ResBlock
此塊的新塊是AAD層。讓我們將其分解為3部分,如圖7所示。從較高的層次來看,第1部分告訴我們?nèi)绾卧趯傩苑矫鎸⑤斎胩卣饔成鋒??編輯為更像X?。具體來說,它輸出兩個張量,它們的大小與h??相同。一個包含比例值,該比例值將與h??中的每個單元相乘,另一個包含位移值。第1部分層的輸入是屬性向量之一。同樣,第2部分將告訴我們?nèi)绾螌⑻卣鲌Dh??編輯為更像X?。

圖7. AAD層的體系結(jié)構(gòu)
第3部分的任務(wù)是選擇每個單元/像素應(yīng)聽哪一部分(2或3)。例如,在與嘴相關(guān)的單元/像素處,該網(wǎng)絡(luò)將告訴我們更多地收聽第2部分,因為嘴與身份之間的關(guān)系更大。通過圖8所示的實驗以經(jīng)驗證明了這一點。

因此,AAD生成器將能夠逐步構(gòu)建最終圖像,其中在給定身份和屬性編碼的情況下,AAD生成器將在每個步驟中確定最佳的方法來放大當(dāng)前特征圖。
現(xiàn)在,我們有了一個網(wǎng)絡(luò),即AEI-Net,可以嵌入X?和X?并以實現(xiàn)我們目標的方式將它們集成。我們將AEI-NetY??*的輸出稱為。
03.損失函數(shù)
一般而言,損失是我們希望網(wǎng)絡(luò)做什么的數(shù)學(xué)公式。培訓(xùn)AEI-Net有4個損失:



HEAR-Net
AEI-Net是一個可以進行面對面交換的完整網(wǎng)絡(luò)。但是,在保留遮擋方面還不夠好。具體來說,只要有一個項目遮擋了目標圖像中應(yīng)該出現(xiàn)在最終輸出中的面部部分(例如眼鏡,帽子,頭發(fā)或手),AEI-Net就會將其刪除。這些項目仍應(yīng)保留,因為它與將要更改的身份無關(guān)。因此,作者實現(xiàn)了一個名為“啟發(fā)式錯誤確認細化網(wǎng)絡(luò)”的附加網(wǎng)絡(luò),該網(wǎng)絡(luò)的工作就是恢復(fù)此類遮擋。
他們注意到,當(dāng)他們將AEI-Net(即X?和X?)的輸入設(shè)為相同的圖像時,它仍然沒有保留如圖9所示的遮擋。

圖9.當(dāng)我們輸入與X?和X?相同的圖像時,AEI-Net的輸出。注意頭巾的鏈子如何在輸出中丟失
因此,他們沒有將其輸入到HEAR-NetY??*和X?中,而是將其設(shè)為Y??*&(X?-Y??*),其中X??和X?是同一圖像時,Y??*是AEI-Net的輸出。這會將HEAR-Net指向未保留遮擋的像素。HEAR-Net可以在圖10中看到。

圖10. HEAR-Net的體系結(jié)構(gòu)
培訓(xùn)損失
HEAR-Net的損失為:
1.保留身份的損失:

2.由于不改變Y??*而造成的損失:

3.如果X?和X?是相同的圖像,則HEAR-Net的輸出應(yīng)為X?的事實造成了損失:

總損失是這些損失的總和。
結(jié)果
FaceShifter的結(jié)果是驚人的。在圖11中,您可以找到在其所設(shè)計的數(shù)據(jù)集之外(即從野外獲?。┑膱D像上的泛化性能的一些示例。請注意,它如何能夠在不同的惡劣條件下正常工作。

圖11.結(jié)果證明了FaceShifter的出色性能
參考文獻
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~
