深度學習AI美顏系列---天天P圖瘋狂變臉演算法
自從天天P圖出了瘋狂變臉的特效之後,到現在為止已經近兩年時間了,這兩年時間,天天P圖多次憑藉換臉特效登上APP Store排行榜首,從小學生證件照到聖誕節夢幻妝再到後來的各種影視遊戲特效,以及後來的軍裝照等等等等,5月4日青年節,天天P圖的“前世青年照”又是傳遍了朋友圈,火遍了排行榜。
在這裡本人將這個換臉放到這個模組來講,是因為這個技術,用深度學習來搞,個人認為潛力更大。下面簡單將換臉分為深度學習方法和傳統方法來講。
[深度學習方法]
2016年的一篇論文Fast Face-swap Using Convolutional Neural Networks,通過卷積神經網路實現了換臉效果,如下圖所示:
具體演算法思路是:
1,人臉對齊(根據特徵點將目標影象與模板影象中的人臉對齊);
2,通過CNN進行換臉,網路結構如下:
3,定義內容損失/風格損失/光照損失/平滑損失代價函式,加入訓練過程,來解決膚色光照不均,不平滑,內容不協調的問題;
損失函式如下:
該方法已經達到了一定的效果:
1,人臉融合自然;
2,側臉效果要優於傳統方法的效果;
但是仍然具有以下弊端:
1,每個模版照片需要單獨訓練網路,造成模型資料龐大,訓練耗時,模型更改麻煩等諸多問題;
2,每個模型需要一個模板對應的多張不同姿態與光照條件的影象;
單單這一點就很不利於產品化,在大多數情況下,我們是無法提供多張不同姿態與光照下的模板影象的;
3,速度慢,本人的換臉演算法是可以達到實時處理的;
關於這個基於卷積神經網路換臉演算法的詳情,可參考
個人認為:基於深度學習的方法在多角度側臉的情況下,具有很強的優勢,在膚色融合方面與傳統演算法持平,在速度方面,未來將不是問題!
[傳統方法]
本人主要研究基於傳統影象演算法的換臉,本人猜測天天P圖基本上也是基於傳統演算法做的;
我們以天天P圖效果舉例來講:
白百合的照片與右邊的模板圖相比,在臉型和五官位置上都發生了變化,也就是變的好看了很多,總結變化如下:
1,膚色變成了模板圖的膚色;
2,臉型變成了模板圖的臉型;
3,五官大小形狀等發生了一定的變化;
據此推測,天天P圖做了如下操作:
1,將白百合的膚色做了轉換,換成了模板圖的膚色;
2,將白百合的臉型包括五官做了變形,變成了接近模板圖的形狀;
注意,這裡是接近模板圖的形狀,而並非是跟模板圖完全一樣的形狀,網上很多做換臉的都是直接將人臉對齊到了模板中的形狀,這是不行的,臉型差異過大時,會造成畸變,效果很差;
本人演算法步驟:
1,根據人臉特徵點(本人使用的是101個人臉特徵點),將模板和白百合的人臉同時變形到第三目標形狀,變形演算法使用MLS變形即可;
這一步驟可以分為如下兩步:
①直接將白百合人臉點位對齊到模板點位;
②將對齊後的白百合人臉五官與臉型進行美化或稱美型;
這一步可以參考論文《Data-Driven Face Cartoon Stylization》,當然這一步也可以使用深度學習來做,個人認為效果要比這篇論文效果更好,隨後本人會另寫部落格專門介紹基於CNN的人臉美型;
MLS變形程式碼連結:點選開啟連結
當然本人也有更好的變形:點選開啟連結
本人美型演算法效果圖如下:
2,基於LAB顏色空間對白百合和模板人臉膚色進行換色+融合;
3,新增風格濾鏡+美顏美妝;
對於美妝可以直接使用妝容遷移來做,效果很好,妝容遷移算連結:①點選開啟連結,②點選開啟連結
本人妝容遷移效果如下:
上面就是本人傳統換臉演算法的過程,本人儘量用最簡單的演算法去表現最好的效果,給出一個完整的演算法過程效果圖:
對於效果,大家可以使用白百合的測試圖到本人的DEMO和天天P圖中測試;
下面本人以5.4青年節最火的前世青年效果為例,給出本人演算法與天天P圖效果對比圖,這裡僅以一組圖為例:
這裡測試圖在本人所給的DEMO中,大家可以自行測試;
最後,指出天天P圖膚色融合的一些問題,對於某些照片,膚色融合之後會出現顏色偏綠問題,可能是某個顏色空間中顏色溢位導致,舉例如下(左圖為本人演算法,右圖為天天效果):
最後,本人給出本人瘋狂變臉效果的DEMO,以免大家耳聽為虛,DEMO執行平臺為WINDOWS 8以上,DEMO中給有TestPicture為測試圖,FS為天天P圖的模板,僅供測試,切勿商業用途,以免侵權,下載連結:點選開啟連結
在給一個換臉資源集合:點選開啟連結
本人QQ1358009172,DEMO中無人臉識別,因此僅限本人所給測試圖有效!共勉!