輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

△ 笹木咲

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

△童田明治

只要輸入一張靜態的老婆,就能讓她動起來,會張嘴會眨眼,還能東張西望,抬眼看天。彷彿成了3D老婆。

並且,你想讓妹子怎樣動,姿勢都可以定制。比如,渴望她一直對你wink,就調眼睛的參數:

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

這裡有一隻造福人類的AI,作者是名叫Pramook Khungurn的死宅少年。

此宅因長期沉迷虛擬偶像小姐姐,想到用深度學習自己做一隻,結果成功了。

他把喜訊發上Reddit,7小時熱度便突破200點。樓下有小伙伴發來賀電:

為了科學!

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

完全無法反駁。

既然如此,背後的科學究竟是怎樣的?

靜態老婆動起來

我們先粗略了解一下,打造一隻虛擬老婆,原本是個怎樣的技術任務。

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

Pramook說,至少得有一個人物模型,ta的動作要能控制:

一種方法是做

3D模型,有些虛擬偶像(VTuber)的確是這樣誕生的。只是比較貴,需要人物設計師和3D建模師,一人很難完成。如果是沒有藝術技能的普通人類,就更做不到了。

另一種是做2D模型,成本比較低,這種方法製造的VTuber更常見。2D人物的動作也會簡單一些。

於是Pramook明白了,2D老婆更容易獲得。但即便這樣,2D模型還是分成幾個可動的部分,建模師要把這些部分的動作整合到一起,依然非常耗時。

既然如此,作為一隻合格的技術宅,當然要用深度學習,把手動2D建模的繁瑣步驟跳過去,直接用一張靜態圖,生成會動的老婆了。(至於靜態圖從哪來,有GAN可以直接生成啊↓↓↓)

△ 來自waifulabs

少年打定主意之後,第一步就是要搞個數據集,才好訓練算法:

自製數據集

這裡需要的是,標註好姿勢的臉部數據集。

如果是真實人臉,就有EmotioNet這樣的數據集可以用。但二次元應該還沒有這樣直接可用的數據集。

少年機智地想到,雖然自己要的是2D老婆,但訓練數據可以用3D模型來提取。熟悉初音的他,知道MikuMikuDance

裡面有大量的3D模型,於是下載了8000多個虛擬人物。

這些人物的動作都可以控制,只要想到一個姿勢,就能渲染出一張這種姿勢的圖片來。

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

每個3D模型都可以得出成百上千張圖,8000多個模型合在一起,就是很大的數據集了。

一個訓練實例分三張圖,第一張是原圖(直視前方) ,第二張是表情修改後的圖(如閉眼/閉嘴) ,第三張是在第二張基礎上轉動了臉的朝向。

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

表情的變化,是由6個參數決定的:兩個負責眼睛開閉,一個負責嘴巴開閉,還有三個負責臉部轉向(x、y、z軸) 。

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

數據集有了,算法又是怎樣的呢?

兩步走

一是表情變化器(Face Morpher) ,二是臉部旋轉器(Face Rotator) 。

表情變化器比較簡單,少年借用了中選ECCV 2018的GANimation算法:

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

原理是,把從原圖到第二張圖之間要發生的變化,用另一張圖表示出來。

然後用一個Alpha Mask,把這張圖片和原圖結合起來,就有了第二張圖(Mask也是網絡自己生成的) 。

這個算法很適合用來修改圖像的一小部分,比如閉眼。

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

臉部旋轉器就複雜一些,用到了兩個互補算法。

其中一個依然是GANimation (下圖紅框) ,原本它只用來改變表情,但少年又讓它去做臉部旋轉了。

另一個是來自Zhou等人2016年的視角合成算法(下圖藍框) ,用來讓圖片裡的3D物體轉起來。要做到這一點,網絡會計算出一個外觀流(Appearance Flow) :它知道,

輸出的每個像素,色彩是來自輸入中的哪個像素。

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

外觀流擅長保存原圖的紋理,生成精細的結果,但不擅長腦補旋轉之後才露出的部分(如下圖a) ;

而GANimation生成的圖像比較模糊,卻能腦補出旋轉前沒有露出的部分(如下圖b) 。

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

最後,把兩個互補算法輸出的結果合為一體,用到的主要是U-Net結構。

現在觀看一下成果吧。

順利遷移

首先,既然AI是用3D模型裡提取的圖片訓練的,就先用3D模型的圖片測試一下:

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

3D考試順利通過。

那麼,輸入2D圖片也能行麼?試一下手繪圖:

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

AI依然沒有被難住,不論輸入的是彩虹社虛擬偶像的照片,還是用Waifulabs自動生成的新妹子(上圖右) 。

不過,這還不算完。

還能怎麼玩

和一個面部追蹤算法搭配食用,就能讓妹子隨著視頻裡的人臉,做出一樣的動作。

比如,輸入一段奧巴馬的視頻,妹子就學著他說起話來:

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

大叔變老婆,一點也不難。這就是虛擬偶像的本質吧(誤) 。

另外,視頻不一定要從網上找,也可以自己錄,作者Pramook已經試過了:

輸入一張圖,就能讓二次元老婆動起來,宛如3D:這全是為了科學啊

這樣,教二次元老婆用溫柔的表情,說出愛你的話,就可以順暢地戀愛了。要是找不到可愛的聲優,可以考慮一下谷歌娘啊。

一切就等算法開源啦。

論文傳送門:https://pkhungurn.github.io/talking-head-anime/

—  —

參考來源

喜歡這篇文章嗎?立刻分享出去讓更多人知道~