英偉達的pix2pixhd,能夠合成高畫質的2048*1024,簡直振奮人心。pix2pixhd是我之前介紹過的pix2pix的改進版本,使用多由粗到精的g網路和多尺度d網路(每個d網路都是用了pix2pix中同樣的patch技術)。
**一開始用pix2pix嘗試合成更高解析度的,但發現效果不好,訓練也很不穩定。所以就對pix2pix進行了一頓魔改。我們來看看他們是怎麼改進的。
直接上圖:
從圖上可以看出,整個g網路其實是由兩個子網路構成:g1(棕色框裡面的)和g2(兩個黑色框裡面的)。g1網路負責生成1024*512的,而g2(g1的資訊會輸入到g2中)則生成2048*1024的。g1網路由乙個用來下取樣的前端網路g(
f)1 ,一系列的ressidual block gr
1 以及乙個用來上取樣的後端網路gb
1 構成。g2網路也差不多。
訓練的時候,先訓練g1網路,然後訓練g2網路,最後聯合一起訓練g1和g2網路。
為了能夠分辨高解析度的真實和合成,d網路需要比較大的感受野。經過更深的網路或這更大的卷積核可以有大的感受野,但是這也可能會容易過擬合,並且所需的gpu記憶體也就更大。(對於高解析度來說,會需要很多的視訊記憶體。)
為此作者提出了多尺度d網路。他們使用了3的d網路,每個網路分的輸入是不同尺度的。這樣就達到了d網路有大的感受野的目的。所以原始的gan變成了乙個多工的gan:
與**improved techniques for training gans 中feature matching技術一樣。pix2pixhd也加入了feature matching技術,不過更為激進。他們將d網路中所有層(除了輸出層)的特徵圖都拿過來做feature matching了。
其中,k表示第k個d網路,i表示d網路中的第i層。s表示帶轉換,x表示轉換目標,g(s)表示g網路生成的目標。
加入feature matching損失函式後,pix2pixhd的損失函式為:
這個主要是針對cityscapes這個任務的乙個優化。其實就是在g網路中加入了 instance maps(或者說物體的邊沿資訊)。這是因為cityscapes資料集的label map中多個物體連在一起的時候是沒有邊界資訊的,這樣不利於合成。而加入了邊沿資訊後就能夠區分同label的不同物體了。
上圖說明了label map中多個同樣label物體連在一起的問題((a)中藍色的車,好幾輛車連在一起,根本分不清他們的邊界)。(b)的邊界資訊將這些車分開了。
我們都知道,就算同一種label的物體,其外形也更能是多種多樣的。為了讓g網路生成的也有這樣的功能。作者設計了乙個新的g網路:
上圖中的g網路在原始的輸入labels map中多了乙個features map,正是這個features map控制了同一label不同物體的多樣性。
我們解釋一下這個features map怎麼來的,特別需要理解一下在測試的時候怎麼獲取這個features map。
為了生成這個features map,作者加入了乙個標準的自編碼網路(綠框中的模型)。這個自編碼網路的輸出是乙個大小與輸入一樣的feature map。這個網路一開始會跟g網路和d網路一起訓練,其輸入是目標轉換。在將該網路的輸出作為g網路的輸入之前,**將其進行乙個instance-wise(根據輸入的label map進行池化)的均值池化。然後將池化後的特徵傳播到這個個體的所有位置(上圖中g網路的輸入features可作為乙個例子)。
當然在測試時,我們肯定沒有目標轉換的,因為我們就是為了生成目標轉換。為此,作者在訓練好這個自編碼網路後,將訓練集中的目標轉換利用該自編碼網路抽取出最後一層的特徵圖,然後利用instance-wise計算出要輸入g網路的features map。接著利用k均值聚類對同一abel的所有樣本的均值特徵向量進行聚類得到k個聚類。這樣我們在測試的時候,g網路根據label map的資訊,對在每個label從之前聚類好的k個中心隨機挑選乙個特徵,來生成g網路控制多樣性的輸入(features map)。
與不同模型的比較
多樣性
pix2pixHD演算法筆記
影象到影象的翻譯是gan的乙個重要應用,表示基於輸入影象生成指定的輸出影象的過程,比如有監督的pix2pix 參考部落格 無監督的cyclegan 參考部落格 等。而基於語義分割圖生成對應影象可以看做是影象到影象的翻譯中的乙個特例,如figure1 a 所示,其中左下角是語義分割圖,模型基於這張圖生...
深度學習 45 pix2pix
image to image translation with conditional adversarial networks 第一篇用gan做到的轉換,效果還可以。給出的一些例子 pix2pix用的是條件gan,損失函式為 與原始gan不同的是,g網路的輸入是一張待轉換的很隨機向量z pix2p...
pix2pixHD嘗試 安裝相關內容
源 環境配置 安裝cuda和pytorch 安裝dominate 安裝 公升級其他python包 需要公升級python的一些東西,比如pillow numpy。對應顯示卡的版本,cuda版本應該與之對應,否則會出現警告 found gpu0 geforce gtx 1660 super which...