栗子 發(fā)自 凹非寺
量子位 報(bào)道 | 公眾號(hào) QbitAI
△笹木咲
△童田明治
只要輸入一張靜態(tài)的老婆,就能讓她動(dòng)起來(lái),會(huì)張嘴會(huì)眨眼,還能東張西望,抬眼看天。仿佛成了3D老婆。
并且,你想讓妹子怎樣動(dòng),姿勢(shì)都可以定制。比如,渴望她一直對(duì)你wink,就調(diào)眼睛的參數(shù):
這里有一只造福人類的AI,作者是名叫Pramook Khungurn的死宅少年。
此宅因長(zhǎng)期沉迷虛擬偶像小姐姐,想到用深度學(xué)習(xí)自己做一只,結(jié)果成功了。
他把喜訊發(fā)上Reddit,7小時(shí)熱度便突破200點(diǎn)。樓下有小伙伴發(fā)來(lái)賀電:
為了科學(xué)!
為了科學(xué)!
完全無(wú)法反駁。
既然如此,背后的科學(xué)究竟是怎樣的?
靜態(tài)老婆動(dòng)起來(lái)
我們先粗略了解一下,打造一只虛擬老婆,原本是個(gè)怎樣的技術(shù)任務(wù)。
Pramook說(shuō),至少得有一個(gè)人物模型,ta的動(dòng)作要能控制:
一種方法是做3D模型,有些虛擬偶像 (VTuber) 的確是這樣誕生的。只是比較貴,需要人物設(shè)計(jì)師和3D建模師,一人很難完成。如果是沒(méi)有藝術(shù)技能的普通人類,就更做不到了。
另一種是做2D模型,成本比較低,這種方法制造的VTuber更常見(jiàn)。2D人物的動(dòng)作也會(huì)簡(jiǎn)單一些。
于是Pramook明白了,2D老婆更容易獲得。但即便這樣,2D模型還是分成幾個(gè)可動(dòng)的部分,建模師要把這些部分的動(dòng)作整合到一起,依然非常耗時(shí)。
既然如此,作為一只合格的技術(shù)宅,當(dāng)然要用深度學(xué)習(xí),把手動(dòng)2D建模的繁瑣步驟跳過(guò)去,直接用一張靜態(tài)圖,生成會(huì)動(dòng)的老婆了。(至于靜態(tài)圖從哪來(lái),有GAN可以直接生成啊↓↓↓)
△來(lái)自waifulabs
少年打定主意之后,第一步就是要搞個(gè)數(shù)據(jù)集,才好訓(xùn)練算法:
自制數(shù)據(jù)集
這里需要的是,標(biāo)注好姿勢(shì)的臉部數(shù)據(jù)集。
如果是真實(shí)人臉,就有EmotioNet這樣的數(shù)據(jù)集可以用。但二次元應(yīng)該還沒(méi)有這樣直接可用的數(shù)據(jù)集。
少年機(jī)智地想到,雖然自己要的是2D老婆,但訓(xùn)練數(shù)據(jù)可以用3D模型來(lái)提取。熟悉初音的他,知道MikuMikuDance里面有大量的3D模型,于是下載了8000多個(gè)虛擬人物。
這些人物的動(dòng)作都可以控制,只要想到一個(gè)姿勢(shì),就能渲染出一張這種姿勢(shì)的圖片來(lái)。
每個(gè)3D模型都可以得出成百上千張圖,8000多個(gè)模型合在一起,就是很大的數(shù)據(jù)集了。
一個(gè)訓(xùn)練實(shí)例分三張圖,第一張是原圖 (直視前方) ,第二張是表情修改后的圖 (如閉眼/閉嘴) ,第三張是在第二張基礎(chǔ)上轉(zhuǎn)動(dòng)了臉的朝向。
表情的變化,是由6個(gè)參數(shù)決定的:兩個(gè)負(fù)責(zé)眼睛開(kāi)閉,一個(gè)負(fù)責(zé)嘴巴開(kāi)閉,還有三個(gè)負(fù)責(zé)臉部轉(zhuǎn)向 (x、y、z軸) 。
數(shù)據(jù)集有了,算法又是怎樣的呢?
兩步走
一是表情變化器 (Face Morpher) ,二是臉部旋轉(zhuǎn)器 (Face Rotator) 。
表情變化器比較簡(jiǎn)單,少年借用了中選ECCV 2018的GANimation算法:
原理是,把從原圖到第二張圖之間要發(fā)生的變化,用另一張圖表示出來(lái)。
然后用一個(gè)Alpha Mask,把這張圖片和原圖結(jié)合起來(lái),就有了第二張圖 (Mask也是網(wǎng)絡(luò)自己生成的) 。
這個(gè)算法很適合用來(lái)修改圖像的一小部分,比如閉眼。
臉部旋轉(zhuǎn)器就復(fù)雜一些,用到了兩個(gè)互補(bǔ)算法。
其中一個(gè)依然是GANimation (下圖紅框) ,原本它只用來(lái)改變表情,但少年又讓它去做臉部旋轉(zhuǎn)了。
另一個(gè)是來(lái)自Zhou等人2016年的視角合成算法 (下圖藍(lán)框) ,用來(lái)讓圖片里的3D物體轉(zhuǎn)起來(lái)。要做到這一點(diǎn),網(wǎng)絡(luò)會(huì)計(jì)算出一個(gè)外觀流 (Appearance Flow) :它知道,輸出的每個(gè)像素,色彩是來(lái)自輸入中的哪個(gè)像素。
外觀流擅長(zhǎng)保存原圖的紋理,生成精細(xì)的結(jié)果,但不擅長(zhǎng)腦補(bǔ)旋轉(zhuǎn)之后才露出的部分 (如下圖a) ;
而GANimation生成的圖像比較模糊,卻能腦補(bǔ)出旋轉(zhuǎn)前沒(méi)有露出的部分 (如下圖b) 。
最后,把兩個(gè)互補(bǔ)算法輸出的結(jié)果合為一體,用到的主要是U-Net結(jié)構(gòu)。
現(xiàn)在觀看一下成果吧。
順利遷移
首先,既然AI是用3D模型里提取的圖片訓(xùn)練的,就先用3D模型的圖片測(cè)試一下:
3D考試順利通過(guò)。
那么,輸入2D圖片也能行么?試一下手繪圖:
AI依然沒(méi)有被難住,不論輸入的是彩虹社虛擬偶像的照片,還是用Waifulabs自動(dòng)生成的新妹子 (上圖右) 。
不過(guò),這還不算完。
還能怎么玩
和一個(gè)面部追蹤算法搭配食用,就能讓妹子隨著視頻里的人臉,做出一樣的動(dòng)作。
比如,輸入一段奧巴馬的視頻,妹子就學(xué)著他說(shuō)起話來(lái):
大叔變老婆,一點(diǎn)也不難。這就是虛擬偶像的本質(zhì)吧 (誤) 。
另外,視頻不一定要從網(wǎng)上找,也可以自己錄,作者Pramook已經(jīng)試過(guò)了:
這樣,教二次元老婆用溫柔的表情,說(shuō)出愛(ài)你的話,就可以順暢地戀愛(ài)了。要是找不到可愛(ài)的聲優(yōu),可以考慮一下谷歌娘啊。
一切就等算法開(kāi)源啦。
論文傳送門:
https://pkhungurn.github.io/talking-head-anime/
作者系網(wǎng)易新聞·網(wǎng)易號(hào)“各有態(tài)度”簽約作者
— 完—
大咖齊聚!參會(huì)嘉賓重磅揭曉
量子位 MEET 2020 智能未來(lái)大會(huì)啟幕,李開(kāi)復(fù)、倪光南、景鯤、周伯文、吳明輝、曹旭東、葉杰平、唐文斌、王硯峰、黃剛、馬原等AI大咖與你一起讀懂人工智能。觀眾票即將售罄,掃碼報(bào)名預(yù)定席位 ~
量子位 QbitAI · 頭條號(hào)簽約作者
?'?' ? 追蹤AI技術(shù)和產(chǎn)品新動(dòng)態(tài)
喜歡就點(diǎn)「在看」吧 !


