讓猛男嬌羞的AI算法

本文 GitHub //github.com/Jack-Cherish/PythonPark 已收錄,有技術乾貨文章,整理的學習資料,一線大廠面試經驗分享等,歡迎 Star 和 完善。

大家好,我是 Jack。

最近又火了一個AI算法,猛男都hold不住的AI特效。

想像一下,魁梧的身軀,濃密的絡腮鬍的猛男。

讓猛男嬌羞的AI算法

在AI特效的加持下,「華麗轉身」瞬間變成了一個可愛的「小胖子」。

讓猛男嬌羞的AI算法

AI如此多嬌,引得無數猛男競折腰(視頻可播放):

其實,這個去鬍子特效算法很早就有了

就像今年2月份突然火的「螞蟻呀嘿」一樣,早在去年8月份我就出過技術教程:

特朗普和蒙娜麗莎深情合唱《Unravel》

這次火起來的去鬍子特效,我也在今年1月份就出過類似的技術教程。

這些爆款的背後,都是早已發表的算法的應用落地

我們從不缺優秀的算法,缺的是將算法巧妙用起來的idea,以及算法的快速落地能力。

去鬍子特效就是人臉屬性編輯算法的巧妙應用。

類似技術,不光可以去掉鬍子,也可以變禿變強

禿頭生成器,Hairstyle Transfer 你值得擁有!

今天就帶大家回顧一下去鬍子特效的算法原理,以及如何玩轉這個算法!

No beard

猛男如果想要嘗試這「去鬍子特效」,不想跑算法,可以直接用一款名為Snapchat的App。

讓猛男嬌羞的AI算法

在對話框里輸入no beard,選中下面第一個特效即可:

讓猛男嬌羞的AI算法

Snapchat這款App需要科學上網,否則無法使用。

接下來說的就是我曾經寫過的StyleFlow,鬍鬚、頭髮、光照角度、人臉角度、年齡、眼鏡、表情等多維角度都可以單獨調節(視頻可播放):

StyleFlow 就是基於StyleGAN的人臉屬性編輯算法。

讓猛男嬌羞的AI算法

思想就是,在隱空間(latent space)控制隱藏特徵(latent code)來控制圖片的屬性。

簡單點解釋就是,一副人臉圖片,是由多維特徵組成的,比如年齡、性別、光照、膚色、發質等。

為了更好的對數據進行分類或生成,需要對數據的特徵進行表示,但是數據有很多特徵。

這些特徵之間相互關聯,耦合性較高,導致模型很難弄清楚它們之間的關聯,使得學習效率低下,因此需要尋找到這些表面特徵之下隱藏的深層次的關係,將這些關係進行解耦,得到的隱藏特徵,即latent code。

由latent code組成的空間就是latent space。

StyleFlow就做了這麼一個事,解耦特徵,控制特徵

算法在人臉和汽車數據集上,都取得了非常不錯的效果。

算法測試

Github 項目地址:

//github.com/RameenAbdal/StyleFlow

第一步:搭建測試環境。

需要安裝PyQt5、Tensorflow等第三方庫,根據requirements.txt安裝即可。

//github.com/RameenAbdal/StyleFlow/blob/master/requirements.txt

此外,還需要配置StyleGAN2的環境。

項目地址:

//github.com/NVlabs/stylegan2

為了方便大家下載,我從Google Drive下載了控制人臉的屬性的權重文件,放到了百度網盤(提取碼:jack):

//pan.baidu.com/s/1-kLG2Fzx0MM88SSYqefMNg

更多的控制其他物體屬性的權重文件,可在從Google Drive下載。

//drive.google.com/drive/folders/1QHc-yF5C3DChRwSdZKcx1w6K8JvSxQi7

第三步:在工程目錄,運行程序。

Python;toolbar:false">python main.py

這個去鬍子特效無非就是將,控制鬍子的latent code單獨拿出來,做了一個端到端的效果。

為了保證效果的穩定,還會做一些工程上的優化,例如添加下巴區域的mask,只替換該區域。

話說這李逵沒了鬍子,也蠻可愛啊!

讓猛男嬌羞的AI算法

我是超多乾貨的 Jack,我們下期見。

文章轉自我的公眾號:

//mp.weixin.qq.com/s/UJltI0jOTyN0Ofn_Uy1J_g