大叔也能“變”萌妹?1張動漫頭像就可以說話唱歌樣樣行。

大叔也能“變”萌妹?1張動漫頭像就可以說話唱歌樣樣行。

只需要1張動漫頭像,就能讓你的二次元老婆“開口說話”,甚至可以像虛擬主播一樣搖晃腦袋唱歌:

大叔也能“變”萌妹?1張動漫頭像就可以說話唱歌樣樣行。

不僅如此,動漫頭像還能模擬你的口型和頭部動作,實時“唱”出想要的效果來(作者親自上場):

大叔也能“變”萌妹?1張動漫頭像就可以說話唱歌樣樣行。

簡直是老二刺螈玩家的福音。而且,不想露面的主播,也有了新的免費“虛擬主播”可選擇。

那麼,這是用的什麼原理,讓模型能達到這樣的效果?

用3D模型,讓2D頭像動起來

這個模型最核心的思想,就是將圖片和姿態引數輸入系統,來“改變”輸入圖片中動漫人物的姿態。

大叔也能“變”萌妹?1張動漫頭像就可以說話唱歌樣樣行。

聽起來非常簡單,但實際上並不容易實現。其一,對應的資料集不好找;其二,網路的體系結構和訓練不容易搭建。

而且,作者也沒能如願找到多姿態的2D動漫角色資料集。

怎麼辦?經過思考,作者選擇採用大量3D模型(約8000個)對網路進行訓練,因為這些3D模型的引數,是可控的。

大叔也能“變”萌妹?1張動漫頭像就可以說話唱歌樣樣行。

除此之外,也還需要設計模型註釋,以“圈”出模型的頭部、髮型和配飾等“需要旋轉”的地方。

大叔也能“變”萌妹?1張動漫頭像就可以說話唱歌樣樣行。

而動漫人物經過變化的眼睛和嘴型,也需要單獨提取出來,用於考慮各種人物表情的變化。

大叔也能“變”萌妹?1張動漫頭像就可以說話唱歌樣樣行。

根據3D人物的實際動畫效果,就能設計出對應的網路了:從人物最主要的兩個動作,即改變表情和旋轉臉部,來讓人物“動起來”。

大叔也能“變”萌妹?1張動漫頭像就可以說話唱歌樣樣行。

也就是說,首先需要控制眼睛和嘴張開的程度,然後,再想辦法讓動漫人物的頭部“轉起來”。

先是改變表情。這一步驟相對簡單,只需要找到一個張嘴、睜眼的動漫頭像,就能用演算法,讓主角眨眼睛、改變嘴型。

大叔也能“變”萌妹?1張動漫頭像就可以說話唱歌樣樣行。

但控制臉部旋轉的演算法,則要更復雜一些,因為伴隨著臉部轉動的,雖然只有頭部,但還要連同髮型和配飾一同轉動。

大叔也能“變”萌妹?1張動漫頭像就可以說話唱歌樣樣行。

作者進一步改進演算法後,控制面部旋轉的網路模型,變得更加細化了一些:首先找到需要旋轉的部分、完成旋轉,然後將輸出影象的顏色控制與輸入畫素對應,最後將效果進行結合。

大叔也能“變”萌妹?1張動漫頭像就可以說話唱歌樣樣行。

從人物的晃頭、前後擺動來看,效果還是非常不錯的。

大叔也能“變”萌妹?1張動漫頭像就可以說話唱歌樣樣行。

不過,這還不是作者想要的模型,畢竟虹膜和眉毛還不能變化。

在對演算法進行最佳化後,最新的模型,不僅能惟妙惟肖地做出生氣、厭惡、沮喪的表情來,還能改變瞳孔和眉毛的形狀,人物看起來也更逼真了。

大叔也能“變”萌妹?1張動漫頭像就可以說話唱歌樣樣行。

效果如何?

應用到單張2D頭像上的效果,還是挺能打的:

大叔也能“變”萌妹?1張動漫頭像就可以說話唱歌樣樣行。

不僅能透過影片人臉檢測,實時模擬人物的口型和表情:

大叔也能“變”萌妹?1張動漫頭像就可以說話唱歌樣樣行。

還能用已有的影片人物控制它“說話”、“唱歌”,化身“虛擬主播”:

大叔也能“變”萌妹?1張動漫頭像就可以說話唱歌樣樣行。

不過,單從3D模型的渲染效果來看,偶爾會出現一些失誤,需要適當進行調整。

例如……這位黃髮少年身上的劍,就會“隨頭移動”:

大叔也能“變”萌妹?1張動漫頭像就可以說話唱歌樣樣行。

儘管頭部的旋轉已經非常完美,不過,本該在背後的劍,卻也隨著頭部轉動了起來……

作者本人也提到了這些細節,而且也指出,對於某些髮型比較特殊的動漫人物來說,的確會出現不那麼完美的情況。

例如,隨著頭部轉動,出現辮子被“割斷”的情況:

大叔也能“變”萌妹?1張動漫頭像就可以說話唱歌樣樣行。

不過,這些也都還是細節上的問題。作者表示,資料集也需要重點關注:他找的動漫頭像,基本都是人物頭像。

也就是說,如果訓練資料與角色外觀差異較大(例如獸人),就會出現這種情況:

大叔也能“變”萌妹?1張動漫頭像就可以說話唱歌樣樣行。

如果你是獸人玩家,可能還需要自行準備資料集,再訓練一個模型出來。

講在最後

Pramook Khungurn,本碩畢業於MIT,博士就讀於康奈爾大學計算機科學系,目前在谷歌日本(Google Japan)工作,專注於渲染演算法和外觀建模的研究。

讀書期間,他也有不少計算機系的論文發表在SIGGRAPH等頂會上。(而且,還擁有比滿分更高的GPA)