作者:微視團(tuán)隊(duì)
隨著小視頻越來越流行,兼具趣味與人物個(gè)性的人臉特效成為小視頻軟件的標(biāo)配,美顏?zhàn)圆槐卣f,現(xiàn)在的人臉特效可謂“千變?nèi)f化”,人臉年輕化、變歐美范兒、發(fā)型改變、各種表情、胖瘦等。
不僅人臉變?nèi)四?,還可以變成非真實(shí)風(fēng)格的臉,如變成王者臉、迪斯尼形象臉。
另外,最近隨著《你好,李煥英》電影的熱映,根據(jù)一張老照片“復(fù)活”李煥英讓她動(dòng)起來的視頻也幾乎火遍全網(wǎng)。這種老照片修復(fù)+人臉遷移的技術(shù),仿佛讓我們走進(jìn)了那個(gè)能夠看到她喜怒哀樂的年代。
以上種種人臉特效,傳統(tǒng)算法是無法完成的,賦予這一切魔法的是——GAN,生成對(duì)抗網(wǎng)絡(luò)。
本文將帶領(lǐng)大家認(rèn)識(shí)這神奇的GAN,分享騰訊微視相關(guān)研發(fā)團(tuán)隊(duì)在這一領(lǐng)域的探索和實(shí)踐。
生成對(duì)抗網(wǎng)絡(luò)(GAN, Generative Adversarial Networks)是近年來計(jì)算機(jī)視覺領(lǐng)域的研究熱點(diǎn),產(chǎn)生了大量的學(xué)術(shù)論文和產(chǎn)業(yè)應(yīng)用。
GAN與其他類型的神經(jīng)網(wǎng)絡(luò)采用不同的學(xué)習(xí)方法,GAN的算法體系結(jié)構(gòu)使用了兩個(gè)神經(jīng)網(wǎng)絡(luò),分別稱為Generator和Discriminator,Discriminator通過對(duì)Generator的批判來提升鑒別能力,Generator通過對(duì)Discriminator的欺騙來提升生成能力。其中,基于GAN的人臉特效是近年來學(xué)術(shù)研究和短視頻特效領(lǐng)域的熱點(diǎn)課題之一。
圖[1]. GAN的主要結(jié)構(gòu)包括一個(gè)生成器(Generator)和一個(gè)判別器(Discriminator)。Generator生成fake image,通過對(duì)Discriminator的欺騙來提升生成能力,Discriminator通過對(duì)fake image 和 real image的判斷來提升鑒別能力,最終Generator可生成逼真的圖片使Discriminator無法判斷真?zhèn)巍?/p>
雖然GAN是一種新興并且有強(qiáng)大潛力的技術(shù),但要駕馭它,并且成功的應(yīng)用于移動(dòng)端實(shí)時(shí)拍攝不是一個(gè)簡(jiǎn)單的任務(wù)。傳統(tǒng)的GAN模型往往需要大量的訓(xùn)練數(shù)據(jù),在可控性、畫質(zhì)方面有著較大的局限性,并且計(jì)算量龐大,難以部署在移動(dòng)端。
針對(duì)這些挑戰(zhàn),騰訊微視背后的技術(shù)團(tuán)隊(duì)在過去一年中,創(chuàng)新性的研發(fā)出了一套支持移動(dòng)端實(shí)時(shí)的GAN模型訓(xùn)練和部署框架,可以根據(jù)項(xiàng)目的特點(diǎn)選擇不同的技術(shù)方案,成功的運(yùn)用在了人臉特效上。目前已在微視上線了多種特效玩法,取得了良好的用戶反饋。
研發(fā)一款特效,首要的問題是選定模型的訓(xùn)練方式和收集相應(yīng)的訓(xùn)練數(shù)據(jù)。
GAN具有強(qiáng)大的圖像生成能力,但“巧婦難為無米之炊”,缺乏現(xiàn)成的成對(duì)數(shù)據(jù)(paired data)是研發(fā)人臉特效的最大難題。例如人種變換效果,我們當(dāng)然不可能同時(shí)擁有一個(gè)人作為不同人種的圖片。
因此,針對(duì)可獲得的數(shù)據(jù)的數(shù)量和類型,騰訊工程師們創(chuàng)新性的設(shè)計(jì)了多種模型訓(xùn)練方式,使得算法完全不需真實(shí)的成對(duì)數(shù)據(jù),便可達(dá)到預(yù)期的效果,例如圖2中展示的亞洲人變歐美人。
圖2. 變歐美人效果。由高參數(shù)量模型生成的成對(duì)數(shù)據(jù)
這三種高參數(shù)模型分別是1. Cycle-StyleGAN、2.基于隱向量的屬性編輯、3. 小樣本模型融合。下文將針對(duì)每一種模型的使用場(chǎng)景和技術(shù)原理逐一詳細(xì)介紹。
另外,移動(dòng)端模型的部署也是個(gè)大問題,這些模型的計(jì)算量往往動(dòng)輒上百G,不適合在移動(dòng)端部署。如何在不明顯損失視覺效果的前提下,高效的壓縮模型?
騰訊工程師巧妙的使用已有的高參數(shù)量模型(大模型)來生成成對(duì)數(shù)據(jù),并用該數(shù)據(jù)以全監(jiān)督的方式(Fully supervised training)來訓(xùn)練一個(gè)移動(dòng)端輕量化的模型。
另外,考慮到模型生成的圖像畫質(zhì)有可能有問題,還需使用畫質(zhì)增強(qiáng)技術(shù)來提升大模型生成圖片的畫質(zhì)(例如清晰度和降噪)。這種方式不僅能夠讓輕量化模型學(xué)習(xí)到大模型的能力,并且具有更高的畫質(zhì)和穩(wěn)定性。
總結(jié)起來,整體的技術(shù)流程可以總結(jié)為以下步驟:
1 按需求采集非成對(duì)數(shù)據(jù),并訓(xùn)練高參數(shù)量的模型生產(chǎn)成對(duì)數(shù)據(jù);
2 對(duì)成對(duì)數(shù)據(jù)進(jìn)行畫質(zhì)增強(qiáng);
3 以全監(jiān)督的方式訓(xùn)練移動(dòng)端輕量化模型。
針對(duì)不同的場(chǎng)景,我們研發(fā)了三種不同的大模型,并利用它們生成的成對(duì)數(shù)據(jù)來指導(dǎo)輕量模型的訓(xùn)練。
1 可收集海量非成對(duì)數(shù)據(jù)的場(chǎng)景。針對(duì)這類場(chǎng)景,可以較為容易的收集具有相應(yīng)屬性的人臉圖片,如變年輕和變明星效果。因此,我們選擇采用了對(duì)數(shù)據(jù)量需求較大的基于CycleGAN思想的Cycle-StyleGAN模型。
2 可收集較少非成對(duì)數(shù)據(jù)的真實(shí)人臉生成場(chǎng)景。針對(duì)這類場(chǎng)景,由于數(shù)據(jù)收集的可行性與成本,我們只收集少量的具有相應(yīng)屬性的數(shù)據(jù),如假笑(露齒笑)和瞇瞇眼。對(duì)于此類問題,我們選擇采用基于隱向量的屬性編輯思想,利用預(yù)訓(xùn)練的生成模型,如StyleGAN,在隱向量空間中找出代表目標(biāo)屬性的方向向量,來修改圖片中人臉的屬性強(qiáng)度。該方法能較為高效的利用有限數(shù)據(jù),并且具有良好的可控性。
3 只能收集極少量非成對(duì)數(shù)據(jù)的場(chǎng)景。該類場(chǎng)景的目標(biāo)往往針對(duì)非真實(shí)的風(fēng)格圖片,或者是某種精準(zhǔn)細(xì)致的屬性變換(如歐美臉和CG效果等)。針對(duì)這類場(chǎng)景,由于數(shù)據(jù)收集的可行性與成本,我們只收集極少量的數(shù)據(jù)。同時(shí),我們提出了基于小樣本的模型融合方法。其主要思想是,在極少量數(shù)據(jù)上對(duì)預(yù)訓(xùn)練模型進(jìn)行調(diào)優(yōu)訓(xùn)練(finetune),使預(yù)訓(xùn)練模型能夠較好的生成目標(biāo)風(fēng)格的圖片。然后,將調(diào)優(yōu)訓(xùn)練后的模型與原始模型進(jìn)行融合得到一個(gè)混合模型,該模型既能生成目標(biāo)風(fēng)格的圖片,又兼具原始預(yù)訓(xùn)練模型強(qiáng)大多樣的生成能力。
3.1 Cycle-StyleGAN 人臉生成
StyleGAN擁有強(qiáng)大的高清人臉生成能力,但由于StyleGAN是unconditional的生成模型,只能通過隨機(jī)向量生成隨機(jī)人臉,并不具備conditional的image-to-image的能力,針對(duì)這一問題,做了以下幾點(diǎn)優(yōu)化:
圖3. cycle stylegan結(jié)構(gòu)
增加encoder部分。通過encoder得到輸入圖的隱向量,與decoder部分結(jié)合,實(shí)現(xiàn)image-to-image的生成能力。
基于CycleGAN思想,引入兩個(gè)generator A2B和B2A互相輔助學(xué)習(xí),使其在具備強(qiáng)大的高清人臉生成能力的同時(shí),在兩個(gè)圖片域內(nèi)自由轉(zhuǎn)換,生成符合要求的成對(duì)數(shù)據(jù)。
基于以上模型設(shè)計(jì),研發(fā)了變年輕效果,并成功上線于微視。
圖4. 變年輕效果
3.2 基于隱向量的人臉屬性編輯
Cycle-StyleGAN雖然可以生成符合預(yù)期的數(shù)據(jù),但其高度依賴數(shù)據(jù)質(zhì)量和風(fēng)格。而基于隱空間的屬性編輯方案,對(duì)數(shù)據(jù)的依賴程度比較低,同時(shí)可以對(duì)生成效果進(jìn)行靈活調(diào)整,結(jié)果具有高可控性。
對(duì)人臉某個(gè)屬性做出改變,如眼睛變小,不應(yīng)該對(duì)其他屬性造成影響。如何進(jìn)行屬性解耦?然后對(duì)感興趣的屬性編輯?
首先,利用亞洲人臉數(shù)據(jù)集,訓(xùn)練了一個(gè)高質(zhì)量的生成模型。該模型通過AdaIN模塊來提取隱向量的信息,然后利用Decoder網(wǎng)絡(luò)來生成數(shù)據(jù)。目前,模型可以在1024的分辨率下生成逼真、高質(zhì)量的人臉數(shù)據(jù)。
在訓(xùn)練好模型后,固定模型的參數(shù),進(jìn)而通過調(diào)整隱向量來控制圖像的生成。由于圖像在隱空間的表達(dá)是符合當(dāng)前網(wǎng)絡(luò)參數(shù)下的映射規(guī)律的,通過理解和利用這些規(guī)律,就可以做到對(duì)人臉風(fēng)格以及屬性的調(diào)整。
但圖像的信息被壓縮在了一個(gè)維度更小的隱向量空間中,因此圖像的各個(gè)屬性耦合十分緊密。這會(huì)嚴(yán)重影響編輯的質(zhì)量和結(jié)果。為了克服數(shù)據(jù)解藕的問題,實(shí)現(xiàn)單屬性可控,團(tuán)隊(duì)做了以下優(yōu)化:
對(duì)方向向量進(jìn)行解耦。團(tuán)隊(duì)通過不斷的嘗試和優(yōu)化,摸索出了一套有效的屬性解耦方法。
在訓(xùn)練的過程中,通過監(jiān)督信息,控制隱向量的具體意義,比如限定某些維度控制鼻型,某些維度控制臉型。
通過以上操作,可以做到對(duì)大部分屬性的單獨(dú)控制,比如只修改眼睛屬性:
圖5. 修改輸入圖片的眼睛大小
然而,在對(duì)效果進(jìn)行微調(diào)的過程中,發(fā)現(xiàn)過于細(xì)致的屬性依舊無法做到干凈的解耦,例如眼袋、魚尾紋等。
針對(duì)這一情況,團(tuán)隊(duì)在屬性解耦方向上展開更加深入的研究,通過長(zhǎng)時(shí)間的研究,團(tuán)隊(duì)總結(jié)出了一套高效的基于風(fēng)格空間的屬性編輯方法,該空間相較于傳統(tǒng)的隱空間,自由度更大,控制更為精細(xì),甚至可以對(duì)法令紋,眼袋等細(xì)節(jié)進(jìn)行操控。
此外,由于真實(shí)數(shù)據(jù)與訓(xùn)練數(shù)據(jù)之間的差異,直接采用屬性編輯得到的paired數(shù)據(jù)訓(xùn)練的小模型在真實(shí)數(shù)據(jù)中會(huì)產(chǎn)生模糊、噪聲等問題。為了克服這些問題,進(jìn)一步對(duì)數(shù)據(jù)和模型進(jìn)行了優(yōu)化:
調(diào)整網(wǎng)絡(luò)和判別器結(jié)構(gòu),增強(qiáng)模型的特征抽取能力。
優(yōu)化損失函數(shù),使生成圖在數(shù)據(jù)分布上更接近真實(shí)圖。
目前,該模型可以穩(wěn)定的生成高清,高質(zhì)量的配對(duì)數(shù)據(jù)?;谶@套方案,已經(jīng)研發(fā)出了變假笑等效果,并成功上線在微視的移動(dòng)端。
圖7. 假笑效果
通過以上項(xiàng)目,團(tuán)隊(duì)總結(jié)了一套成熟的基于隱空間的屬性編輯方案。該方案對(duì)數(shù)據(jù)依賴度低,同時(shí)靈活性高。不僅可以調(diào)整風(fēng)格,臉型等宏觀屬性,還可以控制眉型,眉毛濃度,鼻型,以及法令紋等微觀屬性。
3.3小樣本模型融合
訓(xùn)練一個(gè)效果較穩(wěn)定的生成模型,通常需要上萬張數(shù)據(jù)。但在實(shí)際研發(fā)過程中,往往無法搜集到足夠的數(shù)據(jù)。比如CG風(fēng)格臉,符合風(fēng)格的可能只有幾十張數(shù)據(jù)。不僅數(shù)據(jù)質(zhì)量不高,數(shù)據(jù)還嚴(yán)重匱乏,大大增加了開發(fā)難度。
為了解決這個(gè)問題,團(tuán)隊(duì)從算法上著手,設(shè)計(jì)了基于小樣本的模型融合模型算法。訓(xùn)練兩個(gè)模型,一個(gè)真人模型一個(gè)風(fēng)格模型。把真人模型和風(fēng)格模型按照不同的blending策略進(jìn)行融合,就可以在盡量保持真人姿態(tài)的情況下得到風(fēng)格化的人臉,如下圖所示。
圖8. CG效果圖
然而,這樣的方案還無法直接落地到移動(dòng)端,還需要數(shù)據(jù)增強(qiáng)模塊。一般情況下,幾十張圖片的數(shù)據(jù)多樣性會(huì)非常低,以至于極度缺乏閉眼、張嘴、以及大角度側(cè)臉圖片。但在實(shí)際場(chǎng)景中,這些都是用戶的常見姿勢(shì)。這里創(chuàng)造性的把生成模型和3D人臉進(jìn)行了結(jié)合,生成出大量多姿態(tài)和豐富表情的數(shù)據(jù)。
基于以上小樣本模型融合算法,可以利用幾十張數(shù)據(jù)生成穩(wěn)定的移動(dòng)端效果,從而達(dá)到小樣本學(xué)習(xí)的目的,例如下圖中的歐美臉效果。
圖9. 變歐美臉效果
由于GAN的輸出是一張完整的人臉圖,沒有可標(biāo)注的數(shù)據(jù)來評(píng)價(jià)生成質(zhì)量的高低,而業(yè)務(wù)需求往往也比較主觀。所以在算法側(cè),一般根據(jù)生成的質(zhì)量、清晰度、美觀性來進(jìn)行自測(cè)。在進(jìn)行畫質(zhì)增強(qiáng)時(shí),每進(jìn)行一次效果的更換,都會(huì)進(jìn)行隨機(jī)調(diào)研以確定是否采取新效果。
美觀程度優(yōu)化。結(jié)合大眾的審美觀念,利用圖像處理技術(shù)和屬性編輯方案對(duì)大模型生成的圖片進(jìn)一步美化。例如,通過雙邊濾波增加皮膚的光滑程度。利用屬性編輯方案得到不同的改變屬性的模型,如去皺紋模型能夠去除眼袋和淚溝、雙眼皮模型將單眼皮變成雙眼皮、大眼模型將眼睛變大等。經(jīng)隨機(jī)調(diào)研,用戶對(duì)美化后的圖片的喜愛程度明顯提高。下圖展示了去眼袋和淚溝模型的效果。
圖10. 去眼袋和淚溝效果示意圖
穩(wěn)定性和清晰度優(yōu)化。由于采集的真實(shí)數(shù)據(jù)的質(zhì)量限制和生成模型本身的不穩(wěn)定性,大模型生成的數(shù)據(jù)清晰度可能較低,并且產(chǎn)生一些難以解決的artifacts。參考圖像修復(fù)和超分的相關(guān)方法,并且結(jié)合業(yè)務(wù)的特性和具體應(yīng)用場(chǎng)景,我們單獨(dú)訓(xùn)練了一個(gè)既能提升清晰度又能消除artifacts的GAN模型。經(jīng)隨機(jī)調(diào)研,清晰度的提升程度和artifacts的消除程度均達(dá)到了用戶的要求。下圖展示了大模型生成圖經(jīng)過畫質(zhì)增強(qiáng)處理以后的效果。
由于移動(dòng)端算法需要得到實(shí)時(shí)、穩(wěn)定的效果,騰訊微視工程師設(shè)計(jì)了能在移動(dòng)端流暢運(yùn)行的小模型結(jié)構(gòu),把大模型生成的成對(duì)數(shù)據(jù)作為小模型訓(xùn)練的監(jiān)督信息進(jìn)行訓(xùn)練和蒸餾。
5.1小模型結(jié)構(gòu)設(shè)計(jì)
整體backbone基于unet結(jié)構(gòu),參考mobilenet的深度可分離卷積和shufflenet的特征重利用等優(yōu)點(diǎn),設(shè)計(jì)輕量級(jí)模型。針對(duì)不同的任務(wù)增加了注意力機(jī)制,設(shè)計(jì)了不同的loss。為了滿足不同機(jī)型的需求,設(shè)計(jì)了多種計(jì)算量的模型,以適配在不同檔位的機(jī)型,保證上線覆蓋率以及用戶的體驗(yàn)。
5.2local discriminator
為了提升五官的清晰度以及整體質(zhì)量,不僅把整張圖放進(jìn)discriminator進(jìn)行訓(xùn)練,同時(shí)根據(jù)人臉點(diǎn)位裁剪出眼、眉、鼻、嘴分別輸入到discriminator進(jìn)行訓(xùn)練。
圖12. local discriminator多部件判別器
5.3小模型蒸餾
考慮到低端機(jī)部署的模型參數(shù)量較少,在某些任務(wù)下,直接對(duì)小模型進(jìn)行訓(xùn)練并不能得到符合預(yù)期的效果。所以采用知識(shí)蒸餾的方法用參數(shù)量較大的teacher model對(duì)student model進(jìn)行蒸餾,通過給到更加容易學(xué)習(xí)的監(jiān)督信息以及teacher中間層的分布,使student小模型學(xué)習(xí)到更多的信息。
除了image2image的生成效果,微視團(tuán)隊(duì)還實(shí)現(xiàn)了實(shí)時(shí)的輕量化人臉動(dòng)作遷移。人臉動(dòng)作遷移是指將一段人臉視頻中的面部動(dòng)作,包括頭部位置和朝向、面部表情、五官動(dòng)作等,遷移至另一張靜態(tài)人臉圖片中,使得靜態(tài)圖片呈現(xiàn)出相同面部動(dòng)作的效果。
要實(shí)現(xiàn)以上效果,一種做法是首先估計(jì)從目標(biāo)圖片到源圖片的反向光流,基于光流對(duì)源圖片的特征表示進(jìn)行扭曲(warping)操作,然后再恢復(fù)出重建結(jié)果,例如Monkey-Net、FOMM算法等。
在上述方案中,大模型層面,微視團(tuán)隊(duì)借鑒了Monkey-Net、FOMM等模型所采用的基于關(guān)鍵點(diǎn)軌跡的反向光流預(yù)測(cè)方法,即先以無監(jiān)督形式估計(jì)每一對(duì)關(guān)鍵點(diǎn)的位置并得到稀疏動(dòng)作光流,再預(yù)測(cè)加權(quán)掩膜得到稠密動(dòng)作光流。為了實(shí)現(xiàn)更強(qiáng)的變形能力和動(dòng)作建模能力,另外引入了透視變換項(xiàng),從而使得稀疏動(dòng)作光流可以學(xué)習(xí)到更加復(fù)雜的變換類型。
在小模型層面,為了實(shí)現(xiàn)手機(jī)端的實(shí)時(shí)推斷,需要在模型大小和計(jì)算量?jī)蓚€(gè)方面對(duì)大模型進(jìn)行優(yōu)化,微視團(tuán)隊(duì)主要從以下方面進(jìn)行改進(jìn):
網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)化。對(duì)于模型中的各個(gè)模塊,借鑒GhostNet分別設(shè)計(jì)了相應(yīng)的小模型結(jié)構(gòu),從而將模型大小縮減99.2%,GFLOPs降低97.7%;
分階段蒸餾訓(xùn)練。如果直接從零開始訓(xùn)練不同的小模塊,模型將無法收斂,主要是因?yàn)槟K之間為串行關(guān)系,前者的輸出將作為后者的輸入。此時(shí)采取了分階段訓(xùn)練的策略,并借鑒了知識(shí)蒸餾的思想,使得小模型可以成功學(xué)習(xí)到大模型的能力;
工程優(yōu)化。其他則是工程實(shí)現(xiàn)上的優(yōu)化,例如緩存模型中需要重復(fù)使用到的一些常量、優(yōu)化代碼邏輯、節(jié)省推斷時(shí)無需重復(fù)進(jìn)行的步驟等。同時(shí),借助騰訊自研的TNN推理框架,實(shí)現(xiàn)手機(jī)端上的部署和實(shí)時(shí)推理,從而使得用戶通過攝像頭驅(qū)動(dòng)任意人臉圖片的玩法變?yōu)榭赡堋?/p>
圖13. 人臉動(dòng)作遷移效果圖
以上技術(shù)由騰訊微視拍攝算法團(tuán)隊(duì)與騰訊平臺(tái)與內(nèi)容事業(yè)群(PCG)應(yīng)用研究中心(Applied Research Center,ARC)共同研發(fā)。
騰訊微視拍攝算法團(tuán)隊(duì)致力于圖像/視頻方向的技術(shù)探索,迅速匯聚了一批行業(yè)內(nèi)頂尖的算法專家和產(chǎn)品經(jīng)驗(yàn)豐富的研究員和工程師,擁有豐富的業(yè)務(wù)場(chǎng)景,持續(xù)探索前沿AI和CV算法在內(nèi)容生產(chǎn)和消費(fèi)領(lǐng)域的應(yīng)用和落地。
應(yīng)用研究中心作為PCG的偵察兵和特種兵,肩負(fù)著探索和挑戰(zhàn)智能媒體相關(guān)前沿技術(shù)的使命,旨在成為世界一流應(yīng)用研究中心和行業(yè)標(biāo)桿,聚焦于音視頻內(nèi)容的生成、增強(qiáng)、檢索和理解等方向。
工作機(jī)會(huì)
當(dāng)前還在持續(xù)擴(kuò)張招人中,具體方向包括(但不限于):
GAN生成
2D/3D人體/人臉
SLAM/3D視覺/ARAutoML
移動(dòng)端推理引擎特效工程
渲染引擎算法工程
歡迎聯(lián)系 quenslincai@tencent.com,jonytang@tencent.com
轉(zhuǎn)載請(qǐng)注明:《揭秘騰訊微視人臉技術(shù)「黑科技」,基于GAN的人臉魔法特效》
聯(lián)系客服