讓猛男嬌羞的AI算法
大家好,我是 Jack。
最近又火了一個AI算法,猛男都hold不住的AI特效。
想像一下,魁梧的身軀,濃密的絡(luò)腮胡的猛男。

在AI特效的加持下,“華麗轉(zhuǎn)身”瞬間變成了一個可愛的“小胖子”。

AI如此多嬌,引得無數(shù)猛男競折腰(視頻可播放):
其實,這個去胡子特效算法很早就有了。
就像今年2月份突然火的「螞蟻呀嘿」一樣,早在去年8月份我就出過技術(shù)教程:
這次火起來的去胡子特效,我也在今年1月份就出過類似的技術(shù)教程。
這些爆款的背后,都是早已發(fā)表的算法的應(yīng)用落地。
我們從不缺優(yōu)秀的算法,缺的是將算法巧妙用起來的idea,以及算法的快速落地能力。
去胡子特效就是人臉屬性編輯算法的巧妙應(yīng)用。
類似技術(shù),不光可以去掉胡子,也可以變禿變強:
禿頭生成器,Hairstyle Transfer 你值得擁有!
今天就帶大家回顧一下,去胡子特效的算法原理,以及如何玩轉(zhuǎn)這個算法!
No beard
猛男如果想要嘗試這「去胡子特效」,不想跑算法,可以直接用一款名為Snapchat的App。

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

Snapchat這款A(yù)pp需要科學(xué)上網(wǎng),否則無法使用。
接下來說的就是我曾經(jīng)寫過的StyleFlow,胡須、頭發(fā)、光照角度、人臉角度、年齡、眼鏡、表情等多維角度都可以單獨調(diào)節(jié)(視頻可播放):
StyleFlow 就是基于StyleGAN的人臉屬性編輯算法。

思想就是,在隱空間(latent space)控制隱藏特征(latent code)來控制圖片的屬性。
簡單點解釋就是,一副人臉圖片,是由多維特征組成的,比如年齡、性別、光照、膚色、發(fā)質(zhì)等。
為了更好的對數(shù)據(jù)進行分類或生成,需要對數(shù)據(jù)的特征進行表示,但是數(shù)據(jù)有很多特征。
這些特征之間相互關(guān)聯(lián),耦合性較高,導(dǎo)致模型很難弄清楚它們之間的關(guān)聯(lián),使得學(xué)習(xí)效率低下,因此需要尋找到這些表面特征之下隱藏的深層次的關(guān)系,將這些關(guān)系進行解耦,得到的隱藏特征,即latent code。
由latent code組成的空間就是latent space。
StyleFlow就做了這么一個事,解耦特征,控制特征。
算法在人臉和汽車數(shù)據(jù)集上,都取得了非常不錯的效果。
算法測試
Github 項目地址:
https://github.com/RameenAbdal/StyleFlow
第一步:搭建測試環(huán)境。
需要安裝PyQt5、Tensorflow等第三方庫,根據(jù)requirements.txt安裝即可。
https://github.com/RameenAbdal/StyleFlow/blob/master/requirements.txt
此外,還需要配置StyleGAN2的環(huán)境。
項目地址:
https://github.com/NVlabs/stylegan2
為了方便大家下載,我從Google Drive下載了控制人臉的屬性的權(quán)重文件,放到了百度網(wǎng)盤(提取碼:jack):
https://pan.baidu.com/s/14F1Gww3b8S0Nabn4QTNjNg
更多的控制其他物體屬性的權(quán)重文件,可在從Google Drive下載。
https://drive.google.com/drive/folders/1QHc-yF5C3DChRwSdZKcx1w6K8JvSxQi7
第三步:在工程目錄,運行程序。
python main.py
這個去胡子特效無非就是將,控制胡子的latent code單獨拿出來,做了一個端到端的效果。
為了保證效果的穩(wěn)定,還會做一些工程上的優(yōu)化,例如添加下巴區(qū)域的mask,只替換該區(qū)域。
話說這李逵沒了胡子,也蠻可愛啊!

這么好玩的算法,不來個在看嗎?求在看,求轉(zhuǎn)發(fā)啦~
我是超多干貨的 Jack,我們下期見。

推薦閱讀
? 996被建議監(jiān)管!? Pytorch小抄寶典!? 我,從高考到程序員的成長之路
