文|tech說
1974年,我國的考古學家在陝西省西安市發掘出了兵馬俑,並被其神態各異惟妙惟肖的面部表情所震撼。同年,一篇名為《A Parametric Model for Human Faces》論文邁出了人臉屬性編輯這一領域的第一步。
而半個世紀後的今天,BIGO自主研發的FaceMagic的換臉技術讓你隨心所欲地化身為兵馬俑,世界名畫,或者電影裡的超級英雄, 產品一推出即風靡全球。
技術挑戰主要來源於三個方面:第一是人臉特徵遷移技術,我們創新性地嘗試把風格遷移的思路用於人臉特徵遷移中,克服了當時主流的deep fake、 3D方案等技術的不足。 第二是全球化問題,因為BIGO用戶來源於全球各地,為了解決不同人種的膚色、五官結構的差異問題,我們構建了千萬量級的全球化的人臉數據集,極大地涵蓋膚色、性別、年齡等差異性,力求把全球每一位用戶的效果做到最佳 。
第三是多屬性,多場景的效果優化,我們在不斷優化網絡結構的同時嘗試人臉屬性、人臉姿態等約束,並大力提升大規模數據的訓練效率,充分挖掘數據的多樣性特徵,把換臉效果做到更加魯棒、真實、自然。
FaceMagic仍在吸引越來越多人的參與,自上線以來,全球生產總量接近1億。功能推出後,每天有超過百萬級的內容生產量。
背景
人臉屬性編輯是計算機視覺領域的一項重要技術,廣泛用於內容生產,電影製作,娛樂視頻中。早期的人臉屬性編輯主要集中在人臉的表情上,比如通過修改張嘴或者閉眼來體現人的喜怒哀樂。
隨著算力的提升,這項技術隨後便升華為即時的表情編輯或遷移,也就是將一張臉的表情作為輸入,來控制另一張臉的表情作為輸出,當下我們看到的三維動畫或者虛擬偶像都在廣泛地利用這項技術。
然而僅僅換個表情顯然已經跟不上科研人員的腦洞,Volker 一行人在論文《Exchanging faces in images》[1]中首次提出了在自然圖像中置換人臉的概念。文章中使用了一種較為原始的3D模型方案來粗估姿態與光線,並將目標人臉替換至源人臉上。這項技術由於需要人工參與標定關鍵點,主要被應用於圖像編輯等工作。在漫長的學術發展過程中,換臉技術發生了天翻地覆的變化,逐漸衍生出來了基於3D臉部建模,以及對抗生成網絡(GAN) [2]的兩個派系。
3D臉部建模的方案比較直觀,即先對源圖片和目標圖片進行關鍵點檢測並進行3D建模,然後提取目標圖片中的身份信息(ID)替換源圖片中的相應部分。Dmitri Bitouk et al.[3]針對[1]中需要進行人工參與,同時也不能處理表情的問題,提出了一個全新的方案,可以解決自動化以及表情的問題。
而近代通過3D建模來實現換臉的始祖,Face2Face [4]則通過擬合一個3DMM[5]模型來進一步遷移表情。作為第一個能實時進行面部轉換的模型,Face2Face的準確率和真實度樹立了業界標杆 。
隨後的一些研究也多基於此,對生成人臉的自然度進行強化,例如Suwajanakorn et al.[6]對嘴部的模型進行修正,使得嘴部的動作更加自然。Nirkin et al.[7]結合臉部分割,基於一個固定的三維人臉來進行換臉,避免擬合三維人臉形狀。這些方法雖然能取得一定的換臉效果,但是要麼計算量太大,要麼就是生成換臉後的圖片依舊不自然,且很難處理遮擋等問題。
近年來,隨著大規模的GPGPU算力的出現,基於GAN的換臉方案異軍突起,一舉擊破了基於傳統3D換臉方案的大本營。這個突破首先出現在Pix2pixHD [8]中,Ting-Chun等人使用了一個多尺度的cGAN結構進行圖片對圖片的變化,例如給定一個臉部的輪廓信息,cGAN則能將其轉變成一個真實人臉。
緊接著GANimation[9] 提出一個雙分支生成器來解決人臉表情的問題,其中一個分支通過回歸注意力圖來控制表情,另一個分支則提供背景和光線信息。GANnotation [10]則在添加約束條件的道路上更進一步,通過約束人臉關鍵點來驅動生成對應的人臉。除此以外,研究者們也在嘗試著與傳統方案結合,亦或通過先驗知識來指導GAN的生成質量。
Kim等人在 Deep video portraits [11] 結合了傳統3D與GAN的技術來進行人臉的生成;RSGAN [12]提出一種解耦臉部和頭髮的方法來換臉;FSGAN [13]通過結合臉部分割來評估遮擋區域,在一定程度上解決了換臉當中的遮擋問題。基於GAN的方法生成的換臉圖片相比3D方法更加真實自然,但是很難產生高清的換臉效果,另外源圖片姿態比較大時很難兼顧姿態的一致性和換臉的ID遷移能力。
BIGO的算法團隊經過探索,提出了基於風格遷移+ID注入的FaceMagic方案,在生成高清自然人臉的同時能夠保持人臉姿態、屬性一致。目前FaceMagic已在線上運營,每日用戶使用量過百萬級。
風格遷移的風起
這一切要從風格遷移(Neural Style Transfer)的研究脈絡講起。2016年ECCV的一篇《Image Style Transfer Using Convolutional Neural Networks》[14] 給一張阿姆斯特丹的風景照加上了星空的感覺。
文章提出的基於Gram matrix的方法,也就是神經網絡的特徵圖各個通道的相關性,將真實圖片(content)與風格圖片(style)融合。這使得合成後的圖片具有原始圖片的內涵,但是視覺上又會感受到不一樣的風格。
當然,這種方案的代價也是巨大的,每一組不同的content到style的轉換,都需要訓練一個專用的神經網絡,這在實際的應用當中顯然是不現實的。2017年的另一篇論文《Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization》(AdaIN)[15]則對此問題做出了回應。這篇文章證實了一個至關重要的結論:style信息隱藏在特徵層中每一層的統計量中(也就是每一層的均值μ和標準差σ)。
故而,文章通過定向改變Instance Normalization(IN)層後特徵的均值以及標準差,來獲取風格遷移效果。這個方法只要通過訓練一次網絡,即可以實現任意content至任意style的風格遷移。
把人臉當做一種風格
2019年英偉達發表了論文《A Style-Based Generator Architecture for GAN》[16],也就是大名鼎鼎的StyleGAN,這種網絡結果生成最高1024*1024解析度的人臉,且相當的真實與自然,驚豔全場。而這背後的核心,則是通過深層全連接神經網絡,將一組隨機編碼的向量轉變成一組均值μ和標準差σ,再送入不同尺度的AdaIN模塊,最終生成高清人臉。
StyleGAN的工作給我們帶來的不僅是新的網絡結構、訓練方法,更重要的是思維上的顛覆:「人臉特徵也可以作為一種風格來描述」。那麼,到底什麼是content, 什麼是style?
在藝術風格遷移中,content 作為真實照片中的實物形狀、輪廓,style則是藝術家畫作中的色調、筆觸、畫風等獨特的藝術特點。
在StyleGAN中,則沒有content,一切的人臉特徵皆為style。從這個角度重新審視風格遷移,我們會得出結論:對於content跟style的界定,沒有統一的標準,完全取決於你如何劃分!應用時,需要保留的部分作為content,而需要改變的部分則作為style。
從風格遷移到換臉
我們再一次回到換臉這個話題,StyleGAN在生成人臉的時候,使用了隨機編碼的向量作為種子,生成了所需的人臉style,那麼我們可否使用類似的思想,抽取目標人臉的style,用來替換源人臉的呢?答案自然是肯定的。
接下來我們將通過四步演化過程來闡述我們的FaceMagic模型:1)化我為我;2)化我為他;3)融於你我;4)止於平衡。
化我為我
算法的第一步自然是確定我們的content,也就是面部姿態與表情等屬性信息,這個目標我們通過讓模型學會生成自己來達成。整個流程採用了如圖3所示的經典Encoder-Decoder結構,網絡的輸入輸出為同一張人臉圖像I,通過疊加了多層的ResBlock結構的Encoder,獲取特徵圖F。實踐上我們採取了較大的d值來保存更多的content信息。
化我為他
當模型確定了源人臉中的content信息,我們下一步的目標便是將目標人臉的ID信息,以style的形式注入至content當中。這個目標可以進一步拆解為目標人臉的ID提取以及注入兩步。ID提取部分,我們借用了使用VGG-Face[17]數據集預訓練的人臉識別網絡ID-Net。
通過ID-Net提取的特徵向量G能夠很好地區分人臉之間的相似程度,因此可以很緊緻地表徵一個人的身份特徵,同時不會引入其他幹擾信息。而在至關重要的信息注入部分,我們的基本思路,則是首先通過全連接層,將目標人臉的G_Tar轉化為所需的均值與方差μ_Tar,σ_Tar,再依照AdaIN的方式將style注入content。
然而在實際操作中,我們注意到了以下兩個問題:I)訓練網絡時的收斂速度很慢;II)容易產生人工造成的不自然缺陷(artifacts)。
這兩個問題讓我們重新反思換臉問題的本質:目標人臉的ID固然可以按照style的思路注入源人臉的content中,但是這種方案很類似於傳統的2D/3D視覺中的「貼臉」策略——完全採用目標人臉的ID信息而拋棄源人臉的;而要達成「換臉」,我們實際上只需要關注一個從目標人臉的ID到源人臉ID信息的變化。
於是,我們重新定義了要注入進AdaIN的style為「信息增量」,如下式所示:
其中ε是一個較小的量以穩定數值。依照這個思路,我們設計了基於AdaIN-ResBlock的風格融合模塊Style Mix Block,在多個空間尺度上將ID的信息增量通過AdaIN注入至從源人臉中抽取的content當中。
我們另外也採用了一種基於信息增量的訓練模式:通過混入一部分源與目標人臉為同一張圖片的訓練數據,使注入的style信息恆定為μ_diff =0,σ_diff = 1。這個方案極大地提高了模型在學習重構損失時的收斂速度,並且抑制了大部分因為「貼臉重構」導致的artifacts。圖4為Style Mix Block的詳細結構。
然而到這裡,BIGO算法團隊對目標人臉的ID注入方案的思考,依舊沒有結束。真實場景中的換臉,原人臉以及目標人臉肯定不會像證件照一樣整潔標準,而經常會涉及到大尺度上的pose轉換或者被帽子眼鏡遮擋的情況。
在這種情況下,信息增量本身存在一個不準確的問題,這就會導致一個在實際效果中依舊存在「換臉的結果並不像目標人臉」的情況。在經過激烈的討論之後,我們做了一個大膽的決定:將原始用來描述ID信息的特徵G,直接拼接(Concatenate)到Style Mix Block的特徵上,並將這個整體特徵送入Decoder來生成最終結果。整體網絡構架如圖5所示。
融於你我
故事講到這裡,卻依舊只是個開頭,接下來一個問題出來哪裡呢?
這就牽扯到對抗生成網絡的一些本質了,我們常說,對抗生成網絡實質上是學習了真實樣本的特徵流形,在生成的時候通過選取一組作為種子的隨機變量,選取流形上的點並映射到圖像空間上。這就導致了,我們雖然可以保證一張生成的圖像「真實且自然」,但是卻難以保證在一連串的視頻幀上的連續性。
例如,在大尺度上的pose轉換的場景下,很容易出現提供content的源人臉的pose信息「丟失」的情況;另外源人臉的ID信息在視頻中本身也會存在擾動,而這些擾動由會被注入操作進一步放大。這些情況都導致了在對視頻進行按幀換臉的操作時,會產生姿態擺動或者膚色光照抖動等不連續的情況。
這裡我們通過Pose Constraint以及Skipping connection來緩解視頻換臉中存在的連續性問題,如圖6紅色部分所示:
1)Pose Constraint:我們通過臉部的landmark來強約束源人臉以及生成人臉之間pose差異的問題。這樣即便源人臉在某些幀出現大尺度的pose轉換,生成的也依舊會被約束在源人臉的pose上。
2)Skipping Connection:為了讓生成的圖片能夠穩定的保留源圖片的特徵,我們嘗試將一些Encoder的低層次的特徵直接通過Skipping Connection直接植入到Decoder的特徵當中。
止於平衡
我們先做一個小總結,目前我們有了很多的模塊,我們的total loss可以寫成下面的形式:
很顯然,加大L_recon和L_pose的權重,可以使得生成的人臉能更多地保留源人臉的特徵,加大L_ID的權重,則會更多地遷移更多目標的身份特徵,L_GAN的權重則用於保證生成的人臉儘可能的真實自然。那麼,終於,我們可以開始愉快地去調參數了?
顯然,終極的平衡不是調參就可以獲得的。BIGO的算法同學在深挖了L_ID後發現:對於兩個本來長得就有點像的人,換臉後的結果從視覺上幾乎看不出變化,原因在於他們的ID特徵距離本來就小,如果僅僅使用簡單的l2損失或者cos相似度的話,網絡對這部分的懲罰會很小,但是簡單的加大L_ID的權值又會使整個網絡的訓練變得艱難。為了解決這個問題,我們提出了衡量換臉效果的相對ID距離。簡單來說,就是對比源人臉在換臉前後與目標人臉的距離差異。用公式可以表達為:
其中,為l2損失或者cos相似度。式子的前半部分為原始的ID信息損失,後半部分為對比損失。
參考文獻
1. Volker Blanz, Kristina Scherbaum, Thomas Vetter, and Hans-Peter Seidel. Exchanging faces in images. In Computer Graphics Forum, volume 23, pages 669–676. Wiley Online Library, 2004. 1, 2, 3
2. Ian Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, and Yoshua Bengio. Generative adversarial nets. In Advances in neural information processing systems (NPIS), pages 2672–2680, 2014.
3. Dmitri Bitouk, Neeraj Kumar, Samreen Dhillon, Peter Belhumeur, and Shree K Nayar. Face swapping: automatically replacing faces in photographs. ACM Trans. on Graphics (TOG), 27(3):39, 2008.
4. Justus Thies, Michael Zollhofer, Marc Stamminger, Chris- tian Theobalt, and Matthias Nießner. Face2face: Real-time face capture and reenactment of rgb videos. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), pages 2387–2395, 2016.
5. Volker Blanz, Sami Romdhani, and Thomas Vetter. Face identification across different poses and illuminations with a 3d morphable model. In Int. Conf. on Automatic Face and Gesture Recognition (FG), pages 192–197, 2002.
6.Supasorn Suwajanakorn, Steven M Seitz, and Ira Kemelmacher-Shlizerman. Synthesizing obama: learning lip sync from audio. ACM Transactions on Graphics (TOG), 36(4):95, 2017.
7. Yuval Nirkin, Iacopo Masi, Anh Tran Tuan, Tal Hassner, and Gerard Medioni. On face segmentation, face swapping, and face perception. In Automatic Face & Gesture Recognition (FG), 2018 13th IEEE International Conference on, pages 98–105. IEEE, 2018.
8. Ting-Chun Wang, Ming-Yu Liu, Jun-Yan Zhu, Andrew Tao, Jan Kautz, and Bryan Catanzaro. High-resolution image synthesis and semantic manipulation with conditional gans. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2018.
9. Albert Pumarola, Antonio Agudo, Aleix M Martinez, Al- berto Sanfeliu, and Francesc Moreno-Noguer. Ganimation: Anatomically-aware facial animation from a single image. In Proceedings of the European Conference on Computer Vision (ECCV), pages 818–833, 2018.
10. Enrique Sanchez and Michel Valstar. Triple consistency loss for pairing distributions in gan-based face synthesis. arXiv preprint arXiv:1811.03492, 2018.
11. Hyeongwoo Kim, Pablo Carrido, Ayush Tewari, Weipeng Xu, Justus Thies, Matthias Niessner, Patrick Pe ́rez, Chris- tian Richardt, Michael Zollho ̈fer, and Christian Theobalt. Deep video portraits. ACM Transactions on Graphics (TOG), 37(4):163, 2018.
12. Ryota Natsume, Tatsuya Yatagawa, and Shigeo Morishima. Rsgan: face swapping and editing using face and hair representation in latent spaces. arXiv preprint arXiv:1804.03447, 2018.
13. Nirkin Y, Keller Y, Hassner T. Fsgan: Subject agnostic face swapping and reenactment. In Proceedings of the IEEE International Conference on Computer Vision (ICCV). 2019: 7184-7193.
14. Gatys L A, Ecker A S, Bethge M. Image style transfer using convolutional neural networks. In Proceedings of the IEEE conference on computer vision and pattern recognition (CVPR). 2016: 2414-2423.
15. Huang X, Belongie S. Arbitrary style transfer in real-time with adaptive instance normalization. In Proceedings of the IEEE International Conference on Computer Vision (ICCV). 2017: 1501-1510.
16. Karras T, Laine S, Aila T. A style-based generator architecture for generative adversarial networks. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2019: 4401-4410.
17. Parkhi O M, Vedaldi A, Zisserman A. Deep face recognition[J]. 2015.