程序员的魔法——用Masking GAN让100,000人都露出灿烂笑容
首發(fā)地址:https://yq.aliyun.com/articles/324353
繼卷積神經(jīng)網(wǎng)絡(luò)(CNN)掀起深度學(xué)習(xí)的浪潮后,生成對(duì)抗網(wǎng)絡(luò)(GAN)逐漸成為了計(jì)算機(jī)視覺領(lǐng)域的另一重點(diǎn)關(guān)注的神經(jīng)網(wǎng)絡(luò)。本文作者于一年前開始第一次嘗試使用GAN來(lái)完成一些實(shí)驗(yàn),但都會(huì)存在一個(gè)問題,那就是模型很難訓(xùn)練以及模型的結(jié)果不好評(píng)估。盡管存在上述的這些問題,GAN仍然在深度學(xué)習(xí)領(lǐng)域中占據(jù)一席之地,這是因?yàn)?/span>GAN不同于經(jīng)典的機(jī)器學(xué)習(xí)任務(wù),它能夠給許多問題提供新的解決思路。
操作人臉屬性(年齡、性別、表情)是一個(gè)最著名的語(yǔ)義處理問題。目前市面上有許多這樣的應(yīng)用客戶端,大都能夠在拍照后更改面部表情。實(shí)現(xiàn)這一操作的方法多種多樣,但在我看來(lái),GAN是表現(xiàn)最優(yōu)的方法。
上圖選擇的這些例子強(qiáng)調(diào)了一個(gè)問題——GAN也會(huì)改變無(wú)關(guān)的對(duì)象。如果你想裁剪一個(gè)圖像部分,然后對(duì)部分圖像進(jìn)行修改后再粘貼回來(lái),那樣可能會(huì)與周圍的背景無(wú)法很好地融合,此外這樣操作起來(lái)也很困難。本文將針對(duì)這個(gè)問題,探討解決方法和相關(guān)細(xì)節(jié)。
如何操作?
一種方法是訓(xùn)練另外一個(gè)分割模型,可以使用這個(gè)模型來(lái)生成一個(gè)分割掩碼,并與生成圖像塊匹配(比如這篇文獻(xiàn))。當(dāng)然,收集這樣的標(biāo)簽是困難的,此外還必須假設(shè)應(yīng)用語(yǔ)義變化后對(duì)象的形狀不會(huì)發(fā)生改變。
另外的一種潛在方法是使用恒等損失函數(shù)約束生成器,迫使生成器減少變化。
本文嘗試結(jié)合上述兩種思想來(lái)設(shè)計(jì)一個(gè)實(shí)驗(yàn)?zāi)P?#xff0c;該模型具有以下特點(diǎn):
- 使用內(nèi)置分段的生成器結(jié)構(gòu);
- 通過(guò)分割掩碼將原始圖像與新的圖像塊混合;
- 整個(gè)網(wǎng)絡(luò)的訓(xùn)練過(guò)程是個(gè)端到端的過(guò)程;
- 使用L1恒等損失約束生成器并減少改變;
上圖是方案框圖,期待看到該模型制作出完美的掩膜。
工作情況如何?
上圖是挑選出來(lái)的一些結(jié)果樣本,可以看到表現(xiàn)都還不錯(cuò)。在總的數(shù)據(jù)集中,超過(guò)80%及以上的圖像表現(xiàn)都足夠好。
此外,實(shí)驗(yàn)過(guò)程中還注意到了一些問題:
- 如果圖像中一個(gè)人已經(jīng)是微笑時(shí),那么它就不需要做出任何的改變;
- 模型在處理一些極端的頭角度時(shí)候表現(xiàn)較差;
- 模型有時(shí)候?qū)σ恍┎幌嚓P(guān)部分仍進(jìn)行了操作;
從上圖可以看到,隨著訓(xùn)練的進(jìn)行,生成器能產(chǎn)生更多的變化。
在最初的迭代周期里,生成器會(huì)繪制出越來(lái)越逼真的圖像。起初,臉部分割掩碼近乎完美,但經(jīng)過(guò)一段時(shí)間后,模型的結(jié)果開始產(chǎn)生顯著變化,比如在上圖中,模型改變了頭發(fā)。
一些想法
對(duì)上述這種行為的直接感受是一旦生成器開始生成真實(shí)的面孔,它就迫使判別器忽略表情并集中于其他區(qū)域(微笑停止是主要特征)。
另外一種解釋可能是判別器過(guò)擬合了(盡管訓(xùn)練集含有十萬(wàn)左右的圖像),使用更強(qiáng)的正則化實(shí)驗(yàn)可能有助于更好地理解它。
在其它數(shù)據(jù)集(如馬對(duì)斑馬)上的實(shí)驗(yàn)表明了同樣的注意力轉(zhuǎn)移現(xiàn)象,生成器最終改變了整幅圖像。
實(shí)現(xiàn)注意事項(xiàng)
本文實(shí)驗(yàn)中應(yīng)該注意以下幾點(diǎn):
- 使用CycleGAN方式訓(xùn)練模型;
- 使用校準(zhǔn)后的CelebA數(shù)據(jù)集;
- 使用PyTorch框架
使用3GB內(nèi)存的GPU訓(xùn)練4到5天就可以重現(xiàn)本文實(shí)驗(yàn)結(jié)果(時(shí)間評(píng)估是基于GPU為GTX1080),本文項(xiàng)目地址:https://github.com/tgeorgy/mgan
作者信息
Georgiy Trofimov,機(jī)器學(xué)習(xí)工程師。
Linkedin:?https://www.linkedin.com/in/georgtrof/
本文由北郵@愛可可-愛生活老師推薦,阿里云云棲社區(qū)組織翻譯。
文章原標(biāo)題《How to make 100,000 people smile?》,作者:Georgiy Trofimov,譯者:海棠,審閱:。
文章為簡(jiǎn)譯,更為詳細(xì)的內(nèi)容,請(qǐng)查看原文
翻譯者: 海棠?
Wechat:269970760? weibo:Uncle_LLD?
Email:duanzhch@tju.edu.cn
微信公眾號(hào):AI科技時(shí)訊
總結(jié)
以上是生活随笔為你收集整理的程序员的魔法——用Masking GAN让100,000人都露出灿烂笑容的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql源码学习——源码目录结构
- 下一篇: oracle基础建表