當前位置:
首頁 > 時尚 > 我把石原里美的臉,合成到日本小短片兒里了。。。

我把石原里美的臉,合成到日本小短片兒里了。。。


請叫我


製片師






不知道差友們還記不記得兩個月前 Reddit 上的科技界大事兒。。。




有個 id 叫 deepfakes 的神人,用機器學習框架寫了一套工具,把女星的臉接到了某些不可描述的影片中。





和一般意義上的 P 圖不同,這個方法是通過搭建神經網路來學習人臉,使替換以後的臉可以生動地模仿原來的表情,以假亂真。



差評君這兩天閑來無事,逛 Reddit 的時候發現有了個以 deepfakes 命名的板塊,

裡面一堆人在討論技術的同時還在貼著不可描述的內容,

一片欣

( hei )

( hei )

( hei )

榮,學術氛圍濃厚。。。




還有人分享大量訓練樣本





差評君覺得有些奇怪,雖然說那位叫 deepfakes 的大神把工具開源了,但是以大部分網友的水平應該是不會用他的源碼的,咋這個社區這麼熱鬧了呢。。。




直到我注意到了置頂帖,又有個 id 叫 deepfakeapp 的老哥在 deepfakes 的代碼基礎上做了一套傻瓜式工具,讓沒啥技術背景的人也能學會使用,這種分享精神實在是讓我感動。。。





可惜的是雖然哥們兒精神可嘉,不過依然不夠 geek --這套工具沒有開源。




不過一開始 deepfakes 的代碼庫也沒有用任何協議,所以不開源也沒啥毛病。




那還等什麼???




我這就下載下來,

抱著學術態度

好好研究一下機器學習啊!!!




按照開發者的教程,這套工具的環境

需要 CUDA

,這是核彈廠 Nvidia 出的用顯卡來做機器學習的工具,我裝了一下。

( 至於為啥要用顯卡來搞,你可以看看我的舊文章 )



以及 

Visual Studio

,微軟家的開發工具,功能極為強大,這個差評君因為平時會玩兒 Unity, 早就裝過了。




工具名叫 FakeApp,它目前有 3 個功能,我依次試了試。




第一個功能是

獲取訓練樣本。




獲取方式是逐幀截取一個視頻文件,然後再把裡面的臉部截出來,做成一個個 256 × 256 像素的矩形。




差評君徵集了一下公司里小夥伴們的意見,選擇了女神石原里美作為訓練對象。




我找到了一段採訪視頻,用 FakeApp 的素材製作工具成功獲得了大量石原女神的臉部圖片。





在剔除了一些不含臉部,或者不清晰的圖片以後,得到了兩千多張臉部圖片。



好。。。可愛。。。






然後,在網上隨便找了一個

不認識

的日本妹子拍的視頻,也做了差不多的操作,獲得了另一組素材。





差評君準備好了素材,開始使用第二個功能,

訓練。




結果剛點下去沒多久,這玩意兒報了個錯。。。





考慮到這是個人開發項目,穩定性很差也是情有可原的嘛,而且人家也沒收錢。。。




但是我不知道問題出在哪啊?!




後來通過各種研究,發現有人和我碰到了一樣的問題,最後開發者回答:因為執行訓練時用的代碼調用的是 CUDA 8.0

( 最新的是 9.1,你特么研究這麼先進的技術,環境能不能也用新的!?)

,而 CUDA 8.0 配套的 Visual Studio 插件最新的也只支持到 2015 版本,差評君用的是 2017,因此失敗了。




總而言之,就是環境配置的時候我沒有按要求的版本搞!





而且這朋友又沒開源,我想改代碼也沒辦法,只好老老實實地去搞定環境了。






但是問題來了,微軟作為一家在科技行業中的領先企業,為了推動新標準自然是義不容辭的,

所以舊版的工具 VS 2015 在官網上

肯定是沒收啦,給我用新版本去啊混蛋!





我看著文件夾里幾千張石原小姐姐的微笑,正準備砸電腦的時候,在旁邊偷窺我的世超給了我個 U 盤,裡面靜靜的躺著 VS 2015 的鏡像文件,他朝我露出了一個鼓勵的微笑。。。




果然還是你們程序員靠譜啊





差評君卸載了電腦上的 VS 2017,裝上了 2015,又重新裝了遍 CUDA 8.0,打上了補丁,我可以說我上學的時候都沒這麼認真的鑽研技術。。。




隨後,設置好了一些選項,例如訓練素材和模型的路徑,神經網路層數,節點數等等。。。




項目代號:石原里美,啟動!





順路還在工作群里裝了個逼!





一開始,效果很次,啥也看不出。。。





工具運行時會出現兩組不斷變小的叫作 「 Loss 」 的屬性,差評君猜這是素材組轉化的時候體現損失率的參數,值

越低越好。





隨著時間的推移,圖像變得清晰以後,就能看見訓練代碼會在左邊不知名妹子的臉型基礎上,用石原妹子的臉型代替成右邊的樣子。





這期間,電腦卡得一塌糊塗。。。





我嫌它太慢了,搶過了 KK 裝了 1080 Ti ,32G 內存的高配 PC,把環境全部搞定了以後開始了全速訓練,目測大概是我 16G, 960 GTX 的小破電腦 5 倍速度,我把進程掛在那兒跑了 20 個小時。





這個訓練過程沒有結束的時候,我只要按照自己的需求,掐掉訓練就行。




第二天,我從 KK 這裡把訓練好的模型拷貝了過來,開始了最後一步。




轉化素材。





這一步我做了以後發現,原理其實沒有我想像的那麼牛逼。。。




在我依次指定完訓練好的模型和原視頻的路徑,設定好視頻幀率以後,

這個工具會逐幀分離視頻,把人臉抽出來,然後從模型里找到數據替代像素,再嵌回去做成新的逐幀畫面,最後把畫面合成視頻。




然而,這個個人項目再次證明了它還有進步空間,最後一步合成的時候出錯了,而且找不到原因。。。




看著這 8 千多張合成好的視頻幀,我快急死了。。。





趕緊上 Reddit 的對應板塊去研究一下,結果。。。





沒錯,其實我比這些新聞網站都要先知道這個消息,因為我這兩天一直混在這兒研究技術問題。。。





最後我通過長時間搜索找到了個工具:FFMPEG,可以把逐幀的圖片轉換成視頻,我配置好了命令行工具以後,一行命令就搞定了。。。



( 

而且我知道這麼搞視頻肯定沒聲音,


機智地順便還從原視頻里拉了個音軌 




我再用 FFMPEG 把音軌放了進去,看到靜靜地躺在那兒的 MP4 文件,我激動地仰天長嘆。。。





估計是我太專註了,這一放鬆,回頭髮現辦公室里的人都來圍著我來看視頻了。




看來他們也挺關心啊。。。






可以看到,臉部邊上還是有些瑕疵,但是這個表情已經很到位了有木有。。。





而且音軌拉進去以後,說話的時候口型竟然對上了!!!





不說了,這個技術前景無限,我去喝瓶營養快線冷靜冷靜。






「 從此看片不求人! 」



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

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 差評 的精彩文章:

如何用 iPhone 屏保玩七龍珠?
誰說學物理的都是屌絲?

TAG:差評 |