易 旭,白 天
(中國科學技術大學 軟件學院,安徽 合肥 230026)
隨著深度學習技術的興起,圖像處理相關的研究有了一項強有力的技術支持。人臉互換在圖像處理方面作為一個里程碑式的技術,意味著計算機能夠理解人臉圖像。如何通過對抗生成網絡實現人臉互換,提升生成效果是現如今計算機視覺的一大熱點。
對于傳統的方法Face-swap[1],人臉互換只是把目標人臉截取,粘貼到原始人臉上面,使用圖像融合的相關算法(如泊松融合)消除邊界,后續的改進一般是在圖像融合方面進行突破。
近年來,隨著深度神經網絡技術的成熟,KORSHUNOVA I[2]提出基于深度學習的人臉互換,將兩個人臉的身份信息看成是兩個不同圖片風格,為一個目標人物訓練一個深度神經網絡提取人臉特征,換臉其實就是替換人臉的高維隱空間向量,而后再用訓練好的人臉生成器進行生成,這種方式要求同一身份大量的人臉數據,其訓練得到的模型只適用于這兩個身份。YUVAL N[3]提出先使用3DMM模型擬合人臉,再互換人臉,解決了需要大量同一身份人臉圖片的問題,但3DMM仍然有人臉匹配失敗的問題,最終導致模型出錯。NATSUME R[4-5]提出了FSnet和RSGAN,使用編碼器學習整體人臉的編碼,對所有的人臉只學習一個單一的人臉身份編碼器網絡,但由于輸出的編碼是一個高維的人臉身份向量,特征信息依然高度糾纏。
本文借鑒前人的思想,使用Star-Gan模型作為生成器,利用Arcface[6]身份編碼器提取人臉高維身份特征,針對人臉細節的生成,使用基于U-net[7]的人臉特征編碼器模型為多層級的輸入,解決人臉特征糾纏的問題,使用Patch-Gan的思想改造判別器網絡結構,引入實例歸一化層提升生成效果。
Star-Gan模型的目的是解決人臉在多個域之間的轉換問題,通過使用循環損失保證生成圖像和背景圖像的一致性,判別器保證生成圖像的真實性,域分類器保證轉換的有效性。調節多個損失,在生成效果上當時達到了較優的水平。
Star-Gan可以作為一個不錯的條件生成模型框架用于其他的生成任務。即將它的條件輸入替換成身份圖片的身份編碼。該模型包括3個下采樣模塊、6個殘差模塊和3個上采樣模塊。網絡的輸入是背景人臉圖片,在殘差層添加身份人臉的高維身份信息。最后端輸出換臉圖片。圖1是整體網絡架構圖,詳細的損失細節見2.4節。

圖1 模型整體框架圖
為了增強本模型的魯棒性及泛化能力,在保證數據標簽不變的情況下增大數據集。本文使用圖像翻轉、添加高斯噪聲的方法擴充數據,提高模型魯棒性。
(1)圖像翻轉
使用圖像水平翻轉擴充數據,可直接將數據集擴充一倍。如圖2所示,左邊的九張圖為數據集中的原始圖片,右邊為水平翻轉圖片。

圖2 圖像水平翻轉效果
(2)添加高斯噪聲

(1)
Ixy=min (0,max (1,Ixy+0.05N(0,1)))
(2)
傳統的GAN使用批歸一化(Batch Normalization)的處理方式,雖然能提高收斂速度,但是卻會降低最終的生成效果,因為它注重的是一個batch的數據,而更少地考慮單一圖像本身的一致性。Star-Gan使用實例歸一化,將輸入的圖像四個維度記為[N,C,H,W],N代表Batch_size,C代表通道數,H和W分別是圖像的長和寬。實例歸一化是在H和W維度上進行歸一化,這樣的好處是它更加關注圖像本身的一致性,具體處理如式(3)~式(5)所示,三個公式中,t表示batch的數目,i表示通道數,j和k表示圖像的像素位置,l和m表示圖像的長和寬,式(3)中ε是一個極小的常數,防止出現除以0的計算。通過式(3)處理原始圖像x,計算得出歸一化后的圖像y;式(4)計算得到原始圖像x本身像素的均值;式(5)計算得到原始圖像x本身像素的方差。
(3)
(4)
(5)
Resnet18[9]通過在block的輸出增加殘差層,使得網絡有了逼近恒等映射的能力,解決了網絡傳播過程中信息丟失的問題,由于殘差層的存在,避免了深度乘法對梯度的影響。Star-Gan通過引入殘差層訓練提升了深度學習訓練效果,同時解決了由于網絡層數加深,出現的梯度消失現象。具體殘差塊如圖3所示。

圖3 Resnet18殘差層
圖3中,X是上一層的輸入,通過兩層的卷積層學習到新的特征輸出F(x),最后的輸出是F(x)和輸入X的疊加,梯度可以從兩條支路進行傳播,避免過深的網絡導致的梯度消失。
通過一個類U-net的編碼解碼結構提取人臉身份特征,如圖4所示,使用特征重構損失約束編碼器學習圖片各個維度的特征。X特征是輸入圖片,X重構是輸出圖片,中間層的特征輸出作為生成器的圖片高維特征輸入。
Patch-Gan與傳統的GAN十分相似,不同的是它的判別器是一個全卷積網絡,其輸出不是一個數字,而是一個二維矩陣,這樣的好處是它能夠保證圖片的局部一致性。判別器具體結構如圖5所示。

圖4 編碼器詳細結構

圖5 判別器詳細結構
本文使用Arcface最后一層的特征作為人臉身份信息的特征表示,并將它作為生成器前三層的身份特征輸入。
固定Arcface網絡,網絡訓練時不更新參數,特征編碼器損失使用MSE損失訓練確保每一層網絡能夠提取出不同維度的特征。解碼后能夠還原初始圖片。
(6)

為了保證生成器具有生成能力,使用了三個損失函數:對抗損失LD、身份損失Lid和特征損失Latt,保證生成圖片Ys,t的真實度。具體公式如式(7)~式(9)所示。
式(7)中X是從真實圖片中的采樣,來自于Xs和Xt,Zs和Zt是圖片分別經過Arcface和特征編碼器提取的特征向量。
LD=-Ex~pr[logD(X)]-Ez~pz[log(1-D(G(Zs,Zt,Xt)))]
(7)
式(8)中Ys,t表示換臉后的圖片,zid表示將人臉圖片輸入Arcface得到的身份特征,用兩張圖片的余弦距離作為身份相似度。
Lid=1-cos(zid(Xs),zid(Ys,t))
(8)
提取多層級的人的身份特征后,使用Latt損失函數評估身份特征的保持。因為使用了5層的身份特征,此時式(9)中n=5。
(9)
為了達到人臉互換的目的,需要最小化上述所有三個損失,最終損失L如式(10)所示,其中λid和λatt是訓練時的兩個超參數,調節三個損失的比例,這里設定λid=10和λatt=1。
L=LD+λidLid+λattLatt
(10)
實驗環境為:Linux16.04的64位操作系統;顯卡型號為RTX1080ti,并行化處理,每張顯卡擁有12 GB 顯存;使用Pytorch1.0.1環境;Python3.6包括python-open-cv庫以及Scipy。
因人臉互換的輸出判別較為主觀,本文將輸出圖像與FF++的人臉互換模型中的Faceswap和Deepfake模型進行比較。
初始訓練時使用最新的FFHQ人臉數據集進行訓練,Arcface模型使用原Arcface論文提供的預訓練模型。為了加速模型訓練,將FFHQ的圖片縮放到3×256×256進行訓練,圖6是最終輸出結果,最上面一行為身份人臉Xs,最左邊是特征人臉,可以看出本文模型在很好地保持背景人臉的背景風格的同時可以很好地保持人臉的身份特征,且較少出現圖像失真的情況。即使在雙方差異很大的情況下,模型仍然能夠保持良好的生成情況。第二列身份圖片和背景臉部朝向有很大的差距;第三列、第五列和第六列改變了性別,但生成器仍然能夠得到他們的合成圖片;第四列和第五列分別測試了年齡上的差異性,結果顯示模型在兩張圖片差異較大的情況下仍然能夠處理相應的人臉圖片,具有較好的泛化能力。

圖6 模型基于FFHQ數據集訓練人臉互換結果
為了衡量本文模型的生成效果,將模型生成的圖片和Deepfake以及Faceswap的生成圖片進行比較,此時不使用人臉數據集FFHQ進行訓練,僅使用FaceForensics++[10]數據集中視頻人臉數據進行訓練和替換。訓練時對視頻幀進行采樣,每1秒采樣10幀,為了保持背景盡量一致,保持Arcface固定不變,訓練時提升L1損失的權重λatt=20,訓練效果如圖7所示。

圖7 模型與Faceswap、Deepfake視覺效果對比
由圖7可以發現Faceswap方法的人臉會出現強烈的失真和臉部變形,其主要是由于Faceswap的方法著重于將身份人臉直接替換到背景人臉,導致前后幀不一致從而形成失真。而Deepfake著重于人臉框的替換,這樣的好處是其不需要關注背景的信息,但顯而易見地,它趨向于模糊化人臉,目標人臉無法很好地融合進背景人臉中。
Face-net是一個人臉識別的框架,它可以通過計算人臉圖片的高維特征的余弦距離衡量兩張人臉之間的身份相似性。表1是將圖7的五種圖片分別與身份人臉比較,輸入Face-net網絡后計算得到的歐氏距離。距離越小表示身份越相似。經過大量數據的測試,可以認為兩張人臉是同一個人的閾值約為1.1,即余弦距離低于1.1,則可以認為兩張圖片是同一個人,當圖片完全一致時,距離為0。

表1 模型與Faceswap,Deepfake身份保持對比
由于人臉互換模型的重點是保持身份特征,所以只需要關注表1第一行身份人臉和其他所有人臉的相似度。本文模型最大限度地保持了人臉身份,Deepfake也比較出色地完成了人臉互換,但是由于它只考慮到臉部中心區域,因此最后的效果比本文模型略差。而Faceswap只用了簡單的扣取加替換方式,導致生成的人臉的一致性較低,與身份人臉的相似性較低。第二行顯示出本文模型轉換的圖片與特征人臉的身份差距較大,高于其他兩個人臉互換模型,證明本文模型更少地依賴特征人臉的身份信息。
本文基于Star-Gan構造了一個人臉互換模型,針對人臉身份獨立設計了一個編碼器用于提取身份,使用多層級的思想改良了生成器Star-Gan,實現了一個人臉互換的模型。在FaceForensics++數據集上的實驗效果表明,該模型在生成效果和人臉身份保持上優于現有的人臉互換模型。但該模型仍有缺陷,其雖然有良好的泛化能力,但針對初始身份人臉數量較少時,模型效果仍然有待提升。