?任務場景
- Photos to semantic segmentation
- Cityscapes labels to photos
- Colorization
- Facades labels to photo
- Day to night
- The edges to photo
- And so on.
?
?在生成器模型中,條件變量y實際上是作為一個額外的輸入層(additional input layer),它與生成器的噪聲輸入p(z)組合形成了一個聯合的隱層表達;
在判別器模型中,y與真實數據x也是作為輸入,并輸入到一個判別函數當中。實際上就是將z和x分別于y進行concat,分別作為生成器和判別器的輸入,再來進行訓練。
?
?
目標函數:
gans:
CGAN:
pix-2-pix:
把待轉換的圖像x作為額外的輸入,分別加進判別器和生成器中。生成器輸入的是隨機噪聲z以及待轉換的圖像x。
在positive情況下,判別器輸入的是待轉換圖像x以及與x對應的真實數據y,這時判別器盡量使得輸出為1;
在negative情況下,判別器輸入的是待轉換圖像x以及生成器生成的圖像G(x,z)。也就是說,生成器不只輸入了隨機噪聲z,還輸入了待轉換圖像x,加入了這個條件,就可以實現定向生成;
判別器也不再只是判別某一張圖像是否真實,而是判別待轉換圖像x與轉換后圖像G(x,z)是否是真實的圖像對。
?
創新點
1、加入約束項(L1 distance encourages less blurring) ---- 生成的圖像是不是接近GT。
與L2相比,文章采用了模糊更少的L1 distance(1范數可以導致稀疏解,2范數導致稠密解):
2、generator add skip connections(U-Net)
圖像到圖像轉換問題的一個特征定義是將高分辨率輸入網格映射到高分辨率輸出網格。輸入和輸出的表面外觀雖不同,但兩者都是相同底層結構的渲染。因此,生成器的設計中輸入的結構大致與輸出的結構對齊。?
? ? ? ?之前的結構都是基于如下圖的編碼-解碼網絡,先經過幾個降采樣層,到達一個瓶頸后經過一個逆過程得到最終的輸出。網絡要求所有的信息流通過網絡的所有層。對于許多圖像翻譯問題,輸入和輸出之間共享了大量低級別的信息,因此最好將這些信息直接穿過網絡。為了使得生成器能夠規避這樣的信息瓶頸,遵循“U-Net”的形狀,添加跳躍連接。假使網絡有n層,網絡的第i層都和n-i層有一個連接:
?
?
3.patchGAN
通常判斷都是對生成樣本整體進行判斷,比如對一張圖片來說,就是直接看整張照片是否真實。而且Image-to-Image Translation中很多評價是像素對像素的,所以在這里提出了分塊判斷的算法,在圖像的每個N×N塊上去判斷是否為真,最終平均給出結果。
判別器在圖像上卷積,最終平均所有的值作為D的最終輸出值;
N可以比圖像的大小小得多,并且效果仍然很好;
小的patchGAN的參數更少,運行更快,并且能夠應用到任意大小的圖像中。。
當n=1時就是pix-2-pix
?
?Optimization and inference
?
?
擴展
L0范數是指向量中非0的元素的個數
L1范數是指向量中各個元素絕對值之和
L2范數是指向量各元素的平方和然后求平方根。
在機器學習中,以0范數和1范數作為正則項,可以求得稀疏解,但是0范數的求解是NP-hard問題; 以2范數作為正則項可以得到稠密解,并且由于其良好的性質,其解的定義很好,往往可以得到閉式解,所以用的很多。
一句話總結就是:L1會趨向于產生少量的特征,而其他的特征都是0,而L2會選擇更多的特征,這些特征都會接近于0。L1在特征選擇時候非常有用,而L2就只是一種規則化而已。
- L0 w分量盡量稀疏 如 (0,a,0,0,b,0,0)
- L1 效果同上
- L2 w分量取值盡量均衡、稠密,即小而趨近于0 如(0.3,0.5,-0.3,0.1,-0.2,0.3,-0.3)
?