換臉方法之FaceShifter

 

2019年,國外論壇的,大表姐珍妮佛勞倫絲和史蒂夫布什密通過Deepfake技術的實時換臉視頻。

鏈接:https://www.youtube.com/watch?v=iHv6Q9ychnA

 

論文:FaceShifter: Towards High Fidelity And Occlusion Aware Face Swapping

github:https://github.com/taotaonice/FaceShifter

 

論文提出了一個基於2階段的GAN方式的換臉方法FaceShifter。整體網絡結構包含,AEI-Net ,HEAR-Net兩個網絡。FaceShifter通過獲取輸入的2個圖片中,第一張圖片的ID特徵,第二張圖片的屬性特徵,來通過GAN生成最終的合成圖片。合成的圖片具有第一個圖片的ID特徵,第二個圖片的屬性特徵,從而實現了換臉,並且取得了目前state-of-the-art的效果。

 

換臉的相關方法:

  1. 基於3d的方法,3D-Based Approaches

包括,3DMMFace2Face

     2. 基於GAN的方法,GAN-Based Approaches

包括,CageNetSwiftNetDeepFakesRSGANFSNetIPGANFSGAN

 

FaceShifter結構:

 

 

Adaptive Embedding Integration Network (AEINet)

網絡輸入圖片爲256*256,訓練數據從CelebA-HQFFHQVGGFace3個數據集中獲取得到。

AAD部分,加權attention方式融合了ID特徵和Attributes特徵。多個AAD+Relu+Conv堆疊,形成了AAD ResBlk模塊。多個AAD ResBlk的組合,形成了最終的AEINet

AEINet包括3個部分,

  1. 身份ID編碼模塊,Identity Encoder

該模塊是一個已經訓練好的人臉識別模塊,即Archface模塊。在整個網絡中,該模塊只進行前向傳遞,不進行loss回傳訓練。

     2. 屬性ATTRIBUTES編碼模塊,Multi-level Attributes Encoder,屬性包括姿勢,表情,光照,背景等(pose, expression, lighting and background)。

該模塊的網絡結構是一個U-Net形狀的結構。有助於編碼不同層的屬性特徵。

其中,n=8,一共編碼了8個分支的特徵。

該階段的訓練,不需要任何屬性的標籤進行監督訓練,整個過程完全是無監督的方式進行訓練學習。

那麼問題來了,沒有屬性標籤進行約束,那麼這個模塊是怎麼按照作者設計的意願,去學習人臉的屬性特徵呢?

這個問題講到這裏就回答,其實不合適,但是還是得提前劇透。

整個網絡的訓練過程是隨機的輸入2組圖片進行,而這2組圖片是從數據集中隨機取到的。可能是同樣的人,也可能不是。而採樣中,作者控制了同樣的人的概率是80%。不同人的概率只有20%。如果是網絡的輸入是2個同樣的人,那麼網絡的輸出肯定也還是同樣的人。而ID編碼網絡部分是提前訓練好的,不參與訓練。也就是說ID編碼模塊肯定是學習的人臉的ID特徵。假設人臉特徵=ID特徵+attributes特徵,要保證最終合成的圖片還是那個原來的人,那麼attributes編碼模塊就只能學習屬性特徵。就是通過這樣的方式,來實現無監督的讓attributes編碼網絡自動學習屬性特徵。所以也需要80%這樣相對大的概率,來保證該模塊的收斂。這也就是本方法的一個亮點。試想,如果整個訓練全部都是不同的人的組合,那肯定是學習不出這個網絡模塊的。這個可以自己訓練的時候調節這個比例嘗試。

 

     3. 融合IDATTRIBUTES,並且生成人臉的模塊,也就是GAN的生成器部分,Adaptive Attentional Denormalization (AAD) Generator

AAD部分的輸入包括2個部分,分別是ID部分和Attributes部分。

Attributes部分的輸入爲2個屬性輸出的加權,

ID部分的輸入也是2ID輸出的加權,

AAD部分進行了基於attention方式的IDAttributes的加權融合。

首先AAD模塊對前一層的輸入進行conv降維+sigmoid歸一化操作,得到1個0-1的特徵圖,然後使用該特徵圖進行ID和Attributes的融合。

 

 

AEINetloss包括4部分,分別爲

GAN的判別器的loss Ladv,也就是AAD生成的圖片,判別器判斷是真實圖片還是造的圖片的loss

ID模塊的lossLid,也就是cos loss,將AAD生成的圖片輸入ID模塊,得到輸出特徵,然後和之前的輸入Xsource的輸出特徵計算cos距離,保證2個特徵相似。

屬性模塊的lossLatt,也就是L2範數,將AAD生成的圖片輸入Attributes模塊,得到輸出的特徵圖,計算其和原始輸入XtargetL2距離。

識別的lossLrec,該loss只有在輸入的2張圖片Xsource==Xtarget的時候,纔會有loss,也就是AAD的輸出和輸入XtargetL2 loss。其餘時刻,該loss0

最終AEINet模塊的lossLAEI-NET

 

 

Heuristic Error Acknowledging Refinement Network(HEAR-Net)

HEAR-Net也是一個U-Net類型的網絡結構。U-Net的取特徵的分支n=5。

前面的AEINet生成的換臉圖片雖然可以處理背景,光照,姿勢,表情等問題。但是卻處理不了遮擋問題。爲此,論文引入了HEAR-Net。

同時,作者發現一個現象,當AEI-Net的連個輸入圖片都相同的時候,得到的生成圖片也會吧遮擋部分給去掉。

we observe that if we feed the same image as both the source and target images into a well trained AEI-Net, these occlusions would also disappear in the reconstructed image.

爲了恢復遮擋部分,可以使用原始的輸入XtargetAEI-Net的生成圖片作差,得到遮擋部分的特徵圖Yt

然後使用AEI-Net的輸出Y^st和遮擋部分的特徵Yt經過HEAR-Net生成最終的換臉圖片Yst。

 

 

HEAR-Net的loss,包含3部分,

(1)ID部分的loss,同樣還是cos loss

(2)第一個stage AEI-Net和第二個stage HEAR-Net的生成換臉照片的連續性保證的loss。

(3)只有輸入的2個圖片相同的時候Xsource==Xtarget,纔會有的重建loss,保證重建的圖片和輸入的圖片一樣。

 

最終,HEAR-Net的loss爲,

 

詳細網絡結構:

實驗結果:

 

 

DeepFake vs FaceShifter

 

DeepFake

FaceShifter

模型結構

Encoder+Decoder生成模型

GAN,設計了屬性提取器和身份提取器提取特徵,設計了嵌入器去組合特徵。

屬性保持

較好

較好

圖片質量

一般

較好

可拓展性

 

總結:

  1. FaceShifter 可以對任意2個沒有見過的人臉進行換臉。而DeepFakes只能對訓練中已經“見過”的人臉進行合成,不具備外插能力。這也成了限制DeepFakes算法商用的重要原因。
  2. FaceShifter對保身份和保屬性的能力不錯,生成圖片質量也還可以。
  3. FaceShifter設計了一些針對有遮擋、大角度的臉的處理方法,所以有不錯的處理遮擋、大角度等極端情況的目標人臉的能力。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章