頭可斷,發(fā)型不能亂。
最近有一個男人的名字實在太火了,他叫「張東升」;比他本人更出名的,是他突然摘下假發(fā)后露出的發(fā)際線。
在看完《隱秘的角落》以后,你會不會突然腦洞大開,思考禿頂后的自己是什么樣子呢?
結果就是這么巧,幾天前,一位 UP 主隆重推出了自制的禿頭生成器,不管你現(xiàn)在有多年輕,頭發(fā)有多么濃密,這個生成器都能讓你一眼望穿二十年后的自己。
眾所周知,目前機器學習領域大部分的圖片生成工具都是基于 GAN(生成對抗網(wǎng)絡)來實現(xiàn)的。英偉達在 2018 年推出了 StyleGAN 之后,AI 生成的人臉已經(jīng)極其逼真,很難用肉眼來分辨。隨后,英偉達也開源了 StyleGAN 的代碼,從此,越來越多的假臉就這樣被創(chuàng)造了出來,并且發(fā)型、皮膚、五官等特征都可以隨心變化。
不掏一分錢,也不用出門,在家編程就能實現(xiàn)自己禿頂?shù)膲粝搿_@可不就是程序員們常說的「代碼改變世界」?
直到看見了生成結果,這發(fā)際線后移的速度太過恐怖:
望著禿頭的自己,一瞬間,心就涼了:
雖然也知道自己終將會有這么一天,但還是想逃避:
發(fā)量日漸稀疏的程序員看完之后表示:「技術不錯,但有被冒犯到?!?/p>
詳細教程
即使這樣你也要嘗試?UP 主暫時沒有分享出全部代碼,但你也可以如法炮制,預知一下自己未來禿頭后的顏值(誤)。
MarsLUL 提到,該生成器的思路和代碼大部分來源于一篇 Medium 教程《Hairstyle Transfer — Semantic Editing GAN Latent Code》。
教程地址;https://medium.com/swlh/hairstyle-transfer-semantic-editing-gan-latent-code-b3a6ccf91e82
這里借用了湯曉鷗、周博磊等人在論文《Interpreting the Latent Space of GANs for Semantic Face Editing》提出的「InterfaceGAN」。
第一步:潛碼估計
首先,我們將輸入圖像發(fā)送到預訓練的殘差網(wǎng)絡中,以便在 StyleGAN 中進行初始潛碼估計。然后把這個估計值發(fā)送給生成器,這讓我們對原始輸入圖像有一個初步的猜測。對此圖像我們可以將預訓練的圖像分類器應用于特征提取。同時,我們將對輸入圖像也進行同樣的特征提取。
然后在特征空間中,我們執(zhí)行梯度下降,將特征向量的 L2 損失最小化并更新潛碼估計(紅色箭頭部分)。
現(xiàn)在,我們就可以在 StyleGAN 潛在空間內查找任何圖像。
帶邊界語義編輯
在進行編輯之前,我們需要尋找可以在潛在空間中分離二元屬性的特定邊界。每個邊界對應一個頭發(fā)屬性。比如:
發(fā)型:波浪 / 直發(fā)、劉海;
顏色:黑色 / 棕色 / 金色 / 灰色;
發(fā)際線:后退發(fā)際線;
面部毛發(fā):胡子、鬢角。
但是如何找到邊界?首先要做潛在空間分離,
最終使用 10 個分別于屬性匹配的分類器來生成 2 萬個潛碼和 score pairs。我們在頭發(fā)屬性上訓練獨立線性 SVM,然后在驗證集上進行評估,最終準確性可以達到 80%。
把它們放在一起,對于每個輸入圖像,我們先在 StyleGAN 潛在空間中找到其特定位置,然后將其按照特定方向移動,以進行語義編輯。
我們對每個屬性使用線性超平面,將其法線向量作為輸出面相對于目標屬性連續(xù)變化的方向。例如在上圖中,我們在 StyleGAN 空間中找到了年輕的萊昂納多 · 迪卡普里奧的圖像隱代碼,繪制了與劉海超平面正交的方向,將隱代碼的位置沿該方向移動。這樣我們就可以創(chuàng)建不同劉海狀態(tài)的,迪卡普里奧的圖片了。
最后,說到條件邊界(Conditional Boundary),它也在 InterfaceGAN 中被引入。通常,許多屬性會相互耦合,比如發(fā)際線與人的年齡相關,長發(fā)更多出現(xiàn)在女性照片中,胡須僅出現(xiàn)在男性面部。但是把不同屬性區(qū)分開非常重要。
看的辛苦不如直接問??! 商標;專利;版權;法律