pix2pix演算法的示意圖如圖figure2所示,在圖中以基於影象邊緣生成影象為例介紹pix2pix的工作流程。首先輸入影象用y表示,輸入影象的邊緣影象用x表示,pix2pix在訓練時需要成對的影象(x和y)。x作為生成器g的輸入(隨機雜訊z在圖中並未畫出,去掉z不會對生成效果有太大影響,但假如將x和z合併在一起作為g的輸入,可以得到更多樣的輸出)得到生成影象g(x),然後將g(x)和x基於通道維度合併在一起,最後作為判別器d的輸入得到**概率值,該**概率值表示輸入是否是一對真實影象,概率值越接近1表示判別器d越肯定輸入是一對真實影象。另外真實影象y和x也基於通道維度合併在一起,作為判別器d的輸入得到概率**值。因此判別器d的訓練目標就是在輸入不是一對真實影象(x和g(x))時輸出小的概率值(比如最小是0),在輸入是一對真實影象(x和y)時輸出大的概率值(比如最大是1)。生成器g的訓練目標就是使得生成的g(x)和x作為判別器d的輸入時,判別器d輸出的概率值盡可能大,這樣就相當於成功欺騙了判別器d。
pix2pix的優化目標包含2個部分,如公式4所示。一部分是cgan的優化目標;另一部分是l1距離,用來約束生成影象和真實影象之間的差異,這部分借鑑了其他基於gan做影象翻譯的思想,只不過這裡用l1而不是l2,目的是減少生成影象的模糊。
cgan的優化目標如公式1所示,z表示隨機雜訊,判別器d的優化目標是使得公式1的值越大越好,而生成器g的優化目標是使得公式1的log(1-d(x,g(x,z))越小越好,這也就是公式4中min和max的含義。這裡需要注意的是正如gan**提到的,公式1有時候訓練容易出現飽和現象,也就是判別器d很強大,但是生成器g很弱小,導致g基本上訓練不起來,因此可以將生成器g的優化目標從最小化log(1-d(x,g(x,z))修改為最大化log(d(x,g(x,z))),pix2pix演算法採用修改後的優化目標。
l1距離如公式3所示,用來約束生成影象g(x, z)和真實影象y之間的差異。
接下來是關於生成器和判別器的網路結構設計。
生成器採用u-net,這是在影象分割領域應用非常廣泛的網路結構,能夠充分融合特徵;而原本gan中常用的生成器結構是encoder-decoder型別,二者的對比如figure3所示。
判別器採用patchgan,patchgan對輸入影象的每個區域(patch)都輸出乙個**概率值,相當於從判斷輸入是真還是假演變成判斷輸入的n*n大小區域是真還是假。舉個例子,假設判別器的輸入是1∗6
∗256
∗256
1*6*256*256
1∗6∗25
6∗25
6,n設定為8,判別器的輸出大小是1∗1
∗32∗32
1*1*32*32
1∗1∗32
∗32,其中32∗32
32*32
32∗3
2大小的輸出中的每個值都表示輸入中對應8∗8
8*88∗
8區域是真實的概率。
實驗結果:
table1是關於不同損失函式的組成效果對比, 這裡採用的是基於分割標籤得到影象的任務。評價時候採用語義分割演算法fcn對生成器得到的合成影象做語義分割得到分割圖,假如合成影象足夠真實,那麼分割結果也會更接近真實影象的分割結果,分割結果的評價主要採用語義分割中常用的基於畫素點的準確率和iou等。
table2是關於不同生成器的效果,主要是encoder-decoder和u-net的對比。
table3是關於判別器patchgan採用不同大小n的實驗結果,其中1∗1
1*11∗
1表示以畫素點為單位判斷真假,顯然這樣的判斷缺少足夠的資訊,因此效果不好;286
∗286
286*286
286∗28
6表示常規的以影象為單位判斷真假,這是比較常規的做法,從實驗來看效果也一般。中間2行是介於前兩者之間的patchgan的效果,可以看到基於區域來判斷真假效果較好。
最後放一下pix2pix的生成影象,可以基於影象邊緣得到影象、基於語義分割的標籤得到影象、背景去除、影象修復等。更多結果可以參考原**,效果還是很不錯的。
pix2pixHD演算法筆記
影象到影象的翻譯是gan的乙個重要應用,表示基於輸入影象生成指定的輸出影象的過程,比如有監督的pix2pix 參考部落格 無監督的cyclegan 參考部落格 等。而基於語義分割圖生成對應影象可以看做是影象到影象的翻譯中的乙個特例,如figure1 a 所示,其中左下角是語義分割圖,模型基於這張圖生...
深度學習 45 pix2pix
image to image translation with conditional adversarial networks 第一篇用gan做到的轉換,效果還可以。給出的一些例子 pix2pix用的是條件gan,損失函式為 與原始gan不同的是,g網路的輸入是一張待轉換的很隨機向量z pix2p...
深度學習 46 pix2pixHD
英偉達的pix2pixhd,能夠合成高畫質的2048 1024,簡直振奮人心。pix2pixhd是我之前介紹過的pix2pix的改進版本,使用多由粗到精的g網路和多尺度d網路 每個d網路都是用了pix2pix中同樣的patch技術 一開始用pix2pix嘗試合成更高解析度的,但發現效果不好,訓練也很...