一鍵「圣誕化」你的照片,這個GAN真怪誕!

??新智元報道??
??新智元報道??
來源:reddit
編輯:Q、小勻、LQ
【新智元導(dǎo)讀】還在愁發(fā)朋友圈的文案沒有圣誕氣息?reddit上的技術(shù)男通過訓(xùn)練GAN,讓你的照片一鍵「圣誕化」,一起來看有多神奇?
注意!圣誕「怪杰」來襲~
一鍵生成圣誕效果圖片!
?? ? ? ?
Christmas GAN 是什么
Christmas GAN 是什么
GAN 是深度學(xué)習(xí)框架下的生成模型。它由兩部分(兩個深度神經(jīng)網(wǎng)絡(luò))組成: 生成器和判別器。
?? ? ?
? ? ? ?
給定一些輸入后,生成器嘗試“生成”我們所希望的結(jié)果。判別器的工作是查看生成的和真實的樣本,然后鼓勵生成器生成更接近真實的圖像。從另一個角度來看,生成器試圖生成足夠好的樣本,以欺騙判別器,而判別器則試圖不被欺騙。
?
用GAN生成圖片的想法很簡單,但怎么才能讓GAN理解這一想法呢?對GAN來說什么是具有「圣誕元素」的圖片呢?
?
難點就在于其中的社交和情境潛臺詞。
?
通常情況下,GAN是在具有高度對稱性或相似性的域之間建立圖像到圖像的轉(zhuǎn)換模型。一個例子是從馬到斑馬的轉(zhuǎn)換,條紋增添或刪除就可以完成轉(zhuǎn)換。
?? ? ??
? ? ? ??
另一個例子是從蘋果到橙子,改變顏色和紋理就行了。?
? ?
? ? ?
但生成「圣誕元素」的圖片這一想法操作起來卻有點棘手。我們需要一個模型,可以呈現(xiàn)出「正常的圣誕節(jié)」的樣子。但是,與其他的例子相比,這種映射過于通用。
?
幾乎任何物品都可以用裝飾品來裝飾。人們可以穿圣誕老人或小精靈的服裝,房子和市場可以裝飾,寵物可以打扮成鹿等等。
?
下圖中,上面一行顯示的是「正常圖片」的多樣性,下面一行顯示的是「圣誕圖片」的多樣性。
? ? ?

? ? ? ?
但我們?nèi)匀幌胫垃F(xiàn)有的「圖像到圖像的轉(zhuǎn)換」能走多遠(yuǎn)。具體來說,我們的目標(biāo)是學(xué)習(xí)一個映射函數(shù),可以映射普通圖像到圣誕圖像。
量化期望和約束
量化期望和約束
這一步需要做的工作就是:
?
1.圖像到圖像的轉(zhuǎn)換: 向模型提供一個圖像(“ no Christmas”) ,輸出也是一個圖像(“ Christmas”)
?
2.物體變形: 希望將圖像進行轉(zhuǎn)換,使圖像的特征像是在圣誕節(jié)期間拍攝的(圖像中的人最好能變成戴著圣誕老人帽子、留著胡子、穿著紅色服裝等等的人)
?
3.特征保留:變成圣誕老人的人應(yīng)該還能被認(rèn)出來,也就是說,圖像應(yīng)該保留一些信息。
?
同時還需要考慮一些限制:
?
1.這個問題沒有現(xiàn)成的數(shù)據(jù)集可以使用,必須自己構(gòu)建數(shù)據(jù)集
?
2.無法收集成對的圖像。我們無法收集人們正常站立的照片,然后再收集另一張照片,同樣的人們站在同樣的環(huán)境中,同樣的姿勢,同樣的姿勢,但是穿著圣誕老人的服裝。
?? ? ??
?
問題建模
問題建模
考慮到上述原因,建立Christmas GAN 模型的唯一可行選擇是“unpaired image-to-image translation”,其中“unpaired”僅僅是指兩個domain中都有圖像(圣誕節(jié)和不是圣誕節(jié)) ,它們之間沒有任何明確的一一對應(yīng)的映射。
?
這里遵循的基本思想就是: 在沒有配對圖像的情況下學(xué)習(xí)兩個domain之間的映射。
?? ? ??
? ? ? ?
作者通過各種方式,經(jīng)過分類和篩選,構(gòu)建了一個圣誕節(jié)和非圣誕節(jié)的數(shù)據(jù)集,大約有6000個圖像對。以下是通過CycleGAN對樹木的圖片(190張)進行訓(xùn)練得到的結(jié)果:
? ? ? ?
? ??
然后,作者試圖使用完整的數(shù)據(jù)集來進行訓(xùn)練,但是除了讓紅色的陰影變得明亮起來,CycleGAN 似乎沒有實現(xiàn)任何轉(zhuǎn)變。
?
我們是如何進行圖像弱匹配的?
通過弱配對圖像,我們的意思是,對于任何在“正?!庇蛑邪粋€人的圖像,從“圣誕節(jié)”域中采樣的圖像也包含一個人。如果A有一棵樹,那么B也有一棵樹。我們可以認(rèn)為這是一個明確的假設(shè),網(wǎng)絡(luò)可以學(xué)習(xí)一個類別的獨立映射函數(shù)。我們選擇將自己限制在3個抽樣類別:人、樹和市場,因為它們在我們的數(shù)據(jù)集中占主導(dǎo)地位。
?
通過這樣做,我們假設(shè)存在“人到圣誕老人”、“樹到圣誕樹”等單獨的映射函數(shù)。對于一般的神經(jīng)網(wǎng)絡(luò)來說,這可能并不完全正確。但我們認(rèn)為,由于我們有時使用實例歸一化層與單個圖像批,這將改善梯度流,因為圖像對之間的特征相似度較高。
?
動機是解耦這些假定的映射,使GAN的訓(xùn)練更容易,希望如此。這也可以看作是向GAN訓(xùn)練中添加標(biāo)簽信息,這通常會提高性能。這似乎起了作用,因為迪斯科開始聚集,并導(dǎo)致了一些令人著迷的結(jié)果。
?
results
首先,讓我們使用之前在所有數(shù)據(jù)上訓(xùn)練過的迪斯科琴,但只在我們之前看到的樹的圖像上,并比較學(xué)習(xí)到的映射是如何不同的:
? ? ? ?
? Normal到Christmas generator的結(jié)果
?
與上面的結(jié)果相比,圣誕節(jié)效果明顯增強了。
?
有趣的是,在左下角添加了雪。在這一切中,效果似乎與風(fēng)格轉(zhuǎn)移相似,加上許多圣誕小彩燈。這幾乎是閃光的。
?
現(xiàn)在,讓我們看看隨機分類的包含許多不同東西的“正?!眻D像會發(fā)生什么:
? ? ??
更多的圣誕節(jié)
模型似乎喜歡添加紅色、暖色調(diào)和燈光,到處都是燈光,甚至是披薩上。有趣的是,人們會對圣誕節(jié)期間通常不裝飾的東西產(chǎn)生幻覺,比如食物。我想我們只能接受我們能得到的。
? ? ? ?
? ? ? ?
即使是摩爾圣誕節(jié)
?
這里有一個有趣的現(xiàn)象: 盡管食物不是圣誕樹,但這些樹卻是非常美麗的圣誕樹。
? ? ??
??
即使是在火車上,它在這里的表現(xiàn)也不錯。右下角的結(jié)果也很好,因為現(xiàn)在有雪了。不過我們不建議吃披薩。一般來說,它在人臉上的表現(xiàn)不太好;它們被扭曲到很高的程度。
?
?
這篇文章就講到這里。你喜歡這個圣誕怪杰嗎?
參考鏈接:https://medium.com/hasty-ai/building-a-xmas-gan-f4d809a3d88e
推薦閱讀:「2020中國AI算力報告」重磅出爐:中國怎么解決GPT-3的算力難題?


