本文最大的貢獻在于提出了一個統(tǒng)一的框架解決了圖像翻譯問題眠饮。所謂圖像翻譯硫椰,指從一副圖像到另一副圖像的轉(zhuǎn)換暑劝。可以類比機器翻譯颗搂,一種語言轉(zhuǎn)換為另一種語言担猛。常見的圖像翻譯任務(wù)有:
- 圖像去噪
- 圖像超分辨
- 圖像補全
- 風(fēng)格遷移
-
...
在這篇paper里面,作者提出的框架十分簡潔優(yōu)雅(好用的算法總是簡潔優(yōu)雅的)丢氢。相比以往算法的大量專家知識傅联,手工復(fù)雜的loss。這篇paper非常粗暴疚察,使用CGAN處理了一系列的轉(zhuǎn)換問題蒸走。下面是一些轉(zhuǎn)換示例:
上面展示了許多有趣的結(jié)果,比如分割圖街景圖貌嫡,邊緣圖真實圖比驻。對于第一次看到的時候還是很驚艷的,那么這個是怎么做到的呢岛抄?我們可以設(shè)想一下别惦,如果是我們,我們自己會如何設(shè)計這個網(wǎng)絡(luò)夫椭。
直觀的想法
最直接的想法就是掸掸,設(shè)計一個CNN網(wǎng)絡(luò),直接建立輸入-輸出的映射蹭秋,就像圖像去噪問題一樣扰付。可是對于上面的問題仁讨,這樣做會帶來一個問題羽莺。生成圖像質(zhì)量不清晰。
拿左上角的分割圖街景圖為例洞豁,語義分割圖的每個標(biāo)簽比如“汽車”可能對應(yīng)不同樣式禽翼,顏色的汽車。那么模型學(xué)習(xí)到的會是所有不同汽車的評均族跛,這樣會造成模糊闰挡。
如何解決模糊呢?
這里作者想了一個辦法礁哄,即加入GAN的Loss去懲罰模型长酗。GAN相比于傳統(tǒng)生成式模型可以較好的生成高分辨率圖片。思路也很簡單桐绒,在上述直觀想法的基礎(chǔ)上加入一個判別器夺脾,判斷輸入圖片是否是真實樣本之拨。模型示意圖如下:
上圖模型和CGAN有所不同,但它是一個CGAN咧叭,只不過輸入只有一個蚀乔,這個輸入就是條件信息。原始的CGAN需要輸入隨機噪聲菲茬,以及條件吉挣。這里之所有沒有輸入噪聲信息,是因為在實際實驗中婉弹,如果輸入噪聲和條件睬魂,噪聲往往被淹沒在條件C當(dāng)中,所以這里直接省去了镀赌。
其他tricks
從上面兩點可以得到最終的Loss由兩部分構(gòu)成:
- 輸出和標(biāo)簽信息的L1 Loss氯哮。
- GAN Loss
-
測試也使用Dropout,以使輸出多樣化
采用L1 Loss而不是L2 Loss的理由很簡單商佛,L1 Loss相比于L2 Loss保邊緣(L2 Loss基于高斯先驗喉钢,L1 Loss基于拉普拉斯先驗)。
GAN Loss為LSGAN的最小二乘Loss良姆,并使用PatchGAN(進一步保證生成圖像的清晰度)出牧。PatchGAN將圖像換分成很多個Patch,并對每一個Patch使用判別器進行判別(實際代碼實現(xiàn)有更取巧的辦法)歇盼,將所有Patch的Loss求平均作為最終的Loss舔痕。