0
本文作者: AI研習(xí)社 | 2019-05-14 17:22 |
谷歌大腦工程師Eric Jang近期體驗了Snapchat的性別交換濾鏡并寫了一篇體驗文章,雷鋒網(wǎng)AI研習(xí)社將這篇文章編譯如下。
Snapchat的性別交換濾鏡是無盡樂趣和歡聚派對的源泉,其轉(zhuǎn)換結(jié)果令人非常滿意。作為一個每天都和機器學(xué)習(xí)算法打交道的人,這個功能的強大程度可以說非常神奇了。
我對這個功能非常感興趣,作為一個好奇寶寶,我今天早上注冊了Snapchat并試用了一段時間,試圖弄清楚背后的原理,以及我如何去破解它。注意:這不是對Snapchat的API文件進行逆向工程或研究其他應(yīng)用如何設(shè)計類似功能,它只是一些基本的假設(shè)測試,測試它什么時候會生效,什么時候會不生效,當(dāng)然再加上一點點自戀的浴室自拍樂趣。[手動滑稽.gif]
中間的照片是一張浴室自拍的原始照片。左邊是“男性”濾鏡的效果,右邊是“女性”濾鏡的效果。
大多數(shù)用戶可能會注意到的第一件事是這個濾鏡是實時工作的,你可以使用幾個不同的角度,并且不需要聯(lián)網(wǎng)也能運行。戴著毛線帽的時候,頭發(fā)的渲染表現(xiàn)也非常自然。
下圖是一個我在轉(zhuǎn)頭的時候拍攝的動圖。應(yīng)用程序似乎能檢測到面部是否指向指定的方向,并且只有滿足該布爾值的時候才會觸發(fā)濾鏡效果。
性別交換濾鏡可適用于各種光線條件,但是頭發(fā)似乎沒有陰影的投射。
你看變身女裝大佬的我是不是很可愛 [嘻嘻]。
接下來是一個我認為很酷的例子 —— 合成的頭發(fā)可以捕捉光線的關(guān)鍵來源。
從前面的觀察來看,它的效果非常好。那么我們可以讓它失敗嗎?該濾鏡可以檢測出人臉是否處于錯誤的姿勢,但是如果有東西擋住了臉怎么辦,那么被遮擋的人臉也會被“轉(zhuǎn)性”嗎?答案是肯定的。下面是一個(水平遮擋的)測試,我在臉上滑動一個物體。當(dāng)僅有半邊臉被遮擋時,濾鏡就能正常工作,但如果臉部被遮擋的太多,“我應(yīng)該換臉嗎”的選項就會被設(shè)為False。
再來看下垂直遮擋,這里的濾鏡效果似乎取決于“臉部區(qū)域被遮擋的百分比”,而不是什么重要的語義特征(例如眼睛、嘴唇)被遮擋。就在濾鏡決定“我應(yīng)該換臉嗎”應(yīng)該切換到“False”之前,你可以看到手中拿著的白色的瓶子變模糊了。而且,當(dāng)我把瓶子放在視線中央時,我的頭發(fā)變成了金黃色。這個效果很有趣。在我看來,這一定是機器學(xué)習(xí)在起作用,它會從訓(xùn)練過的數(shù)據(jù)中提取一些數(shù)據(jù)進行渲染。那么問題來了,金發(fā)女郎會繼續(xù)做更多的化妝教程嗎?
我用黑色的活性炭面膜遮住了一部分臉,得出的渲染效果似乎很穩(wěn)定。女性的濾鏡確實將面膜稍微消除了。從下面的GIF可以很明顯地看出,“面部交換”功能僅限于追蹤頭部的矩形區(qū)域(注意頭發(fā)到達我肩膀時的尖銳截止)。
一旦我用面膜覆蓋臉部的其余部分,濾鏡就會停止工作。 有趣的是,我臉部的裸露區(qū)域似乎還是會被檢測為面部,濾鏡會繼續(xù)執(zhí)行該區(qū)域的面部樣式轉(zhuǎn)換。 你可以看到頭部和面部的渲染效果像伊藤潤二的恐怖故事一樣閃爍。
把面膜揭除的時候,渲染效果則令人驚訝地穩(wěn)定。
我對頭發(fā)的真實感印象最深,所以我想弄清楚是否有用于動態(tài)照明的頭發(fā)網(wǎng)格模型,或者是否都是基于機器學(xué)習(xí)的。
頭發(fā)似乎會被渲染為最頂層(就像Photoshop的圖層),但與平常所用的簡單的小狗耳朵/舌頭的濾鏡不同,這個頭發(fā)層有一個部分透明的alpha通道。 如果你仔細觀察,頭發(fā)上還有一個清晰的分割面罩,可以讓臉部顯露出來。Snapchat可能正在進行頭部的跟蹤,以確定頭部的位置,并計算頭發(fā)的2D alpha蒙版。
第一眼看上去,我的腦海里浮現(xiàn)的是某個CycleGAN架構(gòu),它會將男性的面孔分布映射到女性面孔上,反之亦然。數(shù)據(jù)集應(yīng)該是包括了過去8年中用戶們上傳到Snapchat(且沒有被Snapchat刪掉)的數(shù)十億張自拍照。
但這確實引發(fā)了很多問題:
他們訓(xùn)練的圖像轉(zhuǎn)換器真的是無需成對圖像的嗎?如果是真的,這將極其令人震驚,鑒于CycleGAN是很多問題,甚至有可能根本就做不了這件事。那么我敢打賭他們有一個不成對的對齊目標(biāo),這個目標(biāo)是由有限的真實成對數(shù)據(jù)集來進行規(guī)范,例如男/女兄弟姐妹的成對圖像,甚至是有一些數(shù)據(jù)是手工設(shè)計的性別轉(zhuǎn)換結(jié)果,可以作為數(shù)據(jù)增強使用(例如,使下頜輪廓更圓的效果可以在沒有機器學(xué)習(xí)的情況下完成)。
頭發(fā)和面部的變換似乎是各自獨立合成的,因為它們占據(jù)不同的圖層(或者可能是一起合成的,并在渲染之前分割成不同的圖層)。 這也是我第一次看到GANs被用來渲染alpha通道。我有點懷疑頭發(fā)是不是真的由GAN產(chǎn)生。一方面,顯然有一些平滑的功能,它可以根據(jù)遮擋物體的位置切換高光和頭發(fā)顏色,這表明顏色可能部分是從數(shù)據(jù)中習(xí)得的。另一方面,頭發(fā)非常穩(wěn)定,我很難相信它完全是用GAN發(fā)生器合成的。我看過一些其他東亞男性用類似發(fā)型換臉的例子,這表明可能存在一個大型的haridos模板庫(用一些機器學(xué)習(xí)模型進行了改進)。
Snap的ML工程師如何知道,CycleGAN在這么大的數(shù)據(jù)集上訓(xùn)練以后到底收斂沒有?
只有如此有限的計算資源,他們是怎么把這種水平的神經(jīng)網(wǎng)絡(luò)運行起來的?它們動態(tài)生成的圖像分辨率是多少?
如果它確實是一個CycleGAN,那么將男性濾鏡應(yīng)用于我的女性濾鏡圖像的時候應(yīng)該恢復(fù)成原始圖像才對,對嗎?
如上面動圖所示,這張照片的比例基本不變,但當(dāng)我們把它放大得非常近時,這張臉確實更像是我的臉。我猜想在將標(biāo)準(zhǔn)的人臉圖像輸入神經(jīng)網(wǎng)絡(luò)之前,會有一個預(yù)處理步驟對其進行裁剪和大小調(diào)整。這個濾鏡中可能還有其他的子程序,例如調(diào)整下顎大小,它們不使用CycleGAN,但是它的添加會使得M2F和F2M濾波器不再完全相反。
我有個朋友就是這樣,他在做變裝之前要做很多的工作。我對這樣的技術(shù)感到非常興奮,因為它會讓化妝師、角色扮演者和變裝藝術(shù)家更容易以更廉價更快速的方式嘗試新的想法和身份。
面部和語音變化等技術(shù)使公共互聯(lián)網(wǎng)角色與這些角色背后的真人之間的差距更大。 不過這不一定是件壞事:如果你是一個男人,但又熱衷于在網(wǎng)上成為一個可愛的動漫女孩,那么我們應(yīng)該拿哪一個身份進行評判呢?(鏈接是Youtube視頻) 隨著我們的日常社交媒體將性別扭曲正?;?,性別流動性和變裝文化會在社會中變得更加正?;瘑??
未來非常令人興奮。
via https://blog.evjang.com/2019/05/fun-with-snapchats-gender-swapping.html
編譯整理:Pita
雷鋒網(wǎng)AI研習(xí)社編譯整理,更多精彩內(nèi)容,歡迎訪問雷鋒網(wǎng)AI研習(xí)社社區(qū)。
【封面圖片來源:網(wǎng)站名Eric Jang,所有者:Eric Jang】
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。