每日最新頭條.有趣資訊

谷歌大腦工程師:Snapchat性別交換濾鏡的技術秘笈

作者 /AI研習社(ID:okweiwu)

來源 /本文系產品獵人“Hunter”計劃投稿作品

谷歌大腦工程師Eric Jang近期體驗了Snapchat的性別交換濾鏡並寫了一篇體驗文章,AI研習社將這篇文章編譯如下。

Snapchat的性別交換濾鏡是無盡樂趣和歡聚派對的源泉,其轉換結果令人非常滿意。作為一個每天都和機器學習算法打交道的人,這個功能的強大程度可以說非常神奇了。

我對這個功能非常感興趣,作為一個好奇寶寶,我今天早上注冊了Snapchat並試用了一段時間,試圖弄清楚背後的原理,以及我如何去破解它。

注意:這不是對Snapchat的API文件進行逆向工程或研究其他應用如何設計類似功能,它只是一些基本的假設測試,測試它什麽時候會生效,什麽時候會不生效,當然再加上一點點自戀的浴室自拍樂趣。

初步觀察

中間的照片是一張浴室自拍的原始照片。左邊是“男性”濾鏡的效果,右邊是“女性”濾鏡的效果。

大多數用戶可能會注意到的第一件事是這個濾鏡是實時工作的,你可以使用幾個不同的角度,並且不需要聯網也能運行。戴著毛線帽的時候,頭髮的渲染表現也非常自然。

下圖是一個我在轉頭的時候拍攝的動圖。應用程序似乎能檢測到面部是否指向指定的方向,並且只有滿足該布爾值的時候才會觸發濾鏡效果。

性別交換濾鏡可適用於各種光線條件,但是頭髮似乎沒有陰影的投射。

你看變身女裝大佬的我是不是很可愛。

接下來是一個我認為很酷的例子——合成的頭髮可以捕捉光線的關鍵來源。

遮擋測試

從前面的觀察來看,它的效果非常好。那麽我們可以讓它失敗嗎?該濾鏡可以檢測出人臉是否處於錯誤的姿勢,但是如果有東西擋住了臉怎麽辦,那麽被遮擋的人臉也會被“轉性”嗎?

答案是肯定的。下面是一個(水準遮擋的)測試,我在臉上滑動一個物體。當僅有半邊臉被遮擋時,濾鏡就能正常工作,但如果臉部被遮擋的太多,“我應該換臉嗎”的選項就會被設為False。

再來看下垂直遮擋,這裡的濾鏡效果似乎取決於“臉部區域被遮擋的百分比”,而不是什麽重要的語義特徵(例如眼睛、嘴唇)被遮擋。就在濾鏡決定“我應該換臉嗎”應該切換到“False”之前,你可以看到手中拿著的白色的瓶子變模糊了。而且,當我把瓶子放在視線中央時,我的頭髮變成了金黃色。

這個效果很有趣。在我看來,這一定是機器學習在起作用,它會從訓練過的數據中提取一些數據進行渲染。那麽問題來了,金發女郎會繼續做更多的化妝教程嗎?

我用黑色的活性炭面膜遮住了一部分臉,得出的渲染效果似乎很穩定。女性的濾鏡確實將面膜稍微消除了。從下面的GIF可以很明顯地看出,“面部交換”功能僅限於追蹤頭部的矩形區域(注意頭髮到達我肩膀時的尖銳截止)。

一旦我用面膜覆蓋臉部的其余部分,濾鏡就會停止工作。有趣的是,我臉部的裸露區域似乎還是會被檢測為面部,濾鏡會繼續執行該區域的面部樣式轉換。你可以看到頭部和面部的渲染效果像伊藤潤二的恐怖故事一樣閃爍。

把面膜揭除的時候渲染效果則令人驚訝地穩定。

頭髮層

我對頭髮的真實感印象最深,所以我想弄清楚是否有用於動態照明的頭髮網格模型,或者是否都是基於機器學習的。

頭髮似乎會被渲染為最頂層(就像Photoshop的圖層),但與平常所用的簡單的小狗耳朵/舌頭的濾鏡不同,這個頭髮層有一個部分透明的alpha通道。如果你仔細觀察,頭髮上還有一個清晰的分割面罩,可以讓臉部顯露出來。Snapchat可能正在進行頭部的跟蹤,以確定頭部的位置,並計算頭髮的2D alpha蒙版。

它的工作原理是什麽?以下是我的猜測。

第一眼看上去,我的腦海裡浮現的是某個CycleGAN架構,它會將男性的面孔分布映射到女性面孔上,反之亦然。數據集應該是包括了過去8年中用戶們上傳到Snapchat(且沒有被Snapchat刪掉)的數十億張自拍照。

但這確實引發了很多問題:

他們訓練的圖像轉換器真的是無需成對圖像的嗎?如果是真的,這將極其令人震驚,鑒於CycleGAN是很多問題,甚至有可能根本就做不了這件事。那麽我敢打賭他們有一個不成對的對齊目標,這個目標是由有限的真實成對數據集來進行規範,例如男/女兄弟姐妹的成對圖像,甚至是有一些數據是手工設計的性別轉換結果,可以作為數據增強使用(例如,使下頜輪廓更圓的效果可以在沒有機器學習的情況下完成)。

頭髮和面部的變換似乎是各自獨立合成的,因為它們佔據不同的圖層(或者可能是一起合成的,並在渲染之前分割成不同的圖層)。這也是我第一次看到GANs被用來渲染alpha通道。我有點懷疑頭髮是不是真的由GAN產生。一方面,顯然有一些平滑的功能,它可以根據遮擋物體的位置切換高光和頭髮顏色,這表明顏色可能部分是從數據中習得的。另一方面,頭髮非常穩定,我很難相信它完全是用GAN發生器合成的。我看過一些其他東亞男性用類似髮型換臉的例子,這表明可能存在一個大型的haridos模板庫(用一些機器學習模型進行了改進)。

Snap的ML工程師如何知道,CycleGAN在這麽大的數據集上訓練以後到底收斂沒有?

只有如此有限的計算資源,他們是怎麽把這種水準的神經網絡運行起來的?它們動態生成的圖像分辨率是多少?

如果它確實是一個CycleGAN,那麽將男性濾鏡應用於我的女性濾鏡圖像的時候應該恢復成原始圖像才對,對嗎?

如上面動圖所示,這張照片的比例基本不變,但當我們把它放大得非常近時,這張臉確實更像是我的臉。我猜想在將標準的人臉圖像輸入神經網絡之前,會有一個預處理步驟對其進行裁剪和大小調整。

這個濾鏡中可能還有其他的子程序,例如調整下顎大小,它們不使用CycleGAN,但是它的添加會使得M2F和F2M濾波器不再完全相反。

技術遐想

我有個朋友就是這樣,他在做變裝之前要做很多的工作。我對這樣的技術感到非常興奮,因為它會讓化妝師、角色扮演者和變裝藝術家更容易以更廉價更快速的方式嘗試新的想法和身份。

面部和語音變化等技術使公共互聯網角色與這些角色背後的真人之間的差距更大。不過這不一定是件壞事:如果你是一個男人,但又熱衷於在網上成為一個可愛的動漫女孩,那麽我們應該拿哪一個身份進行評判呢?隨著我們的日常社交媒體將性別扭曲正常化,性別流動性和變裝文化會在社會中變得更加正常化嗎?

未來非常令人興奮。

來源:

https://blog.evjang.com/2019/05/fun-with-snapchats-gender-swapping.html

如果你既懂產品,又會寫,歡迎標注“Hunter計劃+文章名稱”投稿至:[email protected]

獲得更多的PTT最新消息
按讚加入粉絲團