兩邊是蜘蛛網,中間是溜冰場,作為壹名數學老師,張東升在年級的時候已經禿頂了。雖然該劇是特效整容,但脫發已經成為年輕人普遍的焦慮,尤其是從事科研、程序員等高壓力行業的人。看來禿頂已經成了命中註定的命運。有多少人曾經幻想過自己20年後會禿頂?
嗶哩嗶哩Up的主人馬斯魯爾(MarsLUL)在觀看了隱藏的角落後,決定用代碼來實現他的“夢想”。MarsLUL是谷歌的壹名在職程序員。他在加州大學(UC Irvine)學習計算機相關專業。
在最近上傳的壹段視頻中,他利用StyleGAN制作了壹個禿頂發生器,從頭發濃密的那壹刻起,他就能看到20年後頭發稀疏的自己。先看看效果如何。
我們先還原壹下東升禿頂的全過程。發際線後移的速度真的很嚇人。
從生成效果來看,除了臉部有壹些差異,最終的發型還是很壹致的。
再看看MarsLUL,這張圖簡直無法接受。
網友的評論更是發自內心:我仿佛看到了自己的未來。
如果妳也有脫發焦慮癥,想看看20年後的自己,不妨也這麽做。接下來,我們來詳細說說禿頂生成器是如何實現的。
在嗶哩嗶哩的視頻中,MarsLUL沒有詳細展示代碼的實現過程,但給出了使用的核心技術和詳細的參考資料。這款禿頂生成器使用的技術和市面上常見的圖片生成器壹樣,都是NVIDIA的StyleGAN。StyleGAN在圖像合成的質量和分辨率上有著出色的表現,我們平時看到的逼真的人臉交換就是基於此。
基於StyleGAN技術的發型轉移——語義編輯GAN潛碼(鏈接見文末)詳細講述了如何在保持臉型不變的情況下改變發型的全過程。
GAN的基本原理是通過對抗性訓練,學習潛在空間分布到真實數據的非線性映射。通常,潛在空間和語義屬性之間的關系是未知的。比如潛在代碼如何決定生成的發型屬性?如何區分目標屬性和非目標屬性?
因此,潛在代碼估計和語義編輯是解決潛在空間和語義屬性之間未知關系的關鍵。在這裏,研究人員詳細解釋了兩個模塊的原理。
首先將輸入圖像送入預訓練殘差網絡進行潛在碼估計,然後將生成的估計值送入生成器。此時,對原始輸入圖像的初步猜測已經完成。對於這幅圖像,我們可以將預先訓練好的圖像分類器應用於特征提取,同時,對輸入圖像進行同樣的特征提取。
接下來,在特征空間中執行梯度下降,以最小化特征向量L2的損失,並更新隱藏代碼估計(紅色箭頭)。這種語義特征向量梯度下降的方法相比像素損失梯度下降的方法更有優勢,因為直接在像素空間使用L2優化會陷入不好的局部最優。
生成潛在的代碼估計
語義編輯是指在保留所有其他信息的同時,用目標屬性編輯圖像。在這裏,我們的目標屬性是頭發。
在編輯之前,我們需要在潛在空間中找到可以分隔二進制屬性的特定邊界,其中每個邊界將對應壹個頭發屬性。比如發型、顏色、發際線高度、面部毛發等。;
對於任何壹個二元屬性,在勢空間中都存在壹個超平面,使得同側的所有樣本都具有相同的屬性,從而可以訓練出壹個獨立的負責每個屬性的線性SVM。所以我們需要從StyleGAN的512維位勢空間中找到壹個超平面。
要找到超平面,需要匹配潛在的代碼數據和這個屬性的得分。最後,研究人員決定使用在大型數據集(CelebA)上訓練的預訓練分類器來獲取頭發屬性。具有10個匹配屬性的10個分類器生成了大約20k個潛在代碼和分數組。這些成對的潛在代碼在頭發屬性上訓練了獨立的線性SVM,通過驗證和評估,其準確率達到了80%。
對於每壹幅輸入圖像,先找到它在StyleGAN的勢空間中的具體位置,然後向特定方向移動,進行語義編輯。
如上圖所示,研究人員在StyleGAN空間中找到了年輕的萊昂納多·迪卡普裏奧圖像的隱藏代碼,畫出了壹個與劉海超平面正交的方向,並沿著這個方向移動了隱藏代碼的位置。最後創造出不同劉海的萊昂納多。以下是最終的動態效果圖:
關於條件邊界,研究人員談到許多屬性是相互耦合的。比如發際線的高度和年齡有關。女性通常留長發,男性的胡須和鬢角更明顯。因此,將目標屬性與其相關屬性分開是非常重要的。
正因為如此,這種通過尋找超平面邊界來編輯人臉屬性的方法也存在壹些缺點。當編輯具有壹個屬性的面部時,壹些其他屬性也可能由於它們的相關性而被改變。另外,這種模型無法完成跨性別的人臉交換。研究人員表示,也許更多的分類器和用特殊數據集進行訓練可以解決上述問題。
最後,MarsLUL承認他做了這個禿頂發生器,目的是為了警醒大家正常工作,防止脫發!我獻上壹個完整的視頻鏈接,希望大家都能成為頭發很多的程吧。(雷鋒網雷鋒網雷鋒網)
嗶哩嗶哩地址:/video/bv 1ot 4y 197mg?from =搜索& ampseid=6465326088364452402
/swlh/發型-轉移-語義-編輯-幹-潛伏-代碼-b3a6ccf91e82