利用已知語義分割產生合成圖片: Photographic Image Synthesis with Cascaded Refinement Networks

本文的方法可以將已標記好的語義草圖 (semantic layouts) 當作輸入資料並產出一張合成照片。讀者可以參考下圖, 左圖 (a) 中代表的是語義草圖 (semantic layouts) 每個不同的顏色區塊代表不同類別, 經過 Cascaded Refinement Networks 可以得到右圖 (b) 一張符合草圖輪廓的合成圖片。 讀者可以想像這個模型在做的有點像是 semantic segmentation 的 inverse 版本, 原本在 semantic segmentation 我們希望可以由圖片得到語義切割, 現在反而是希望可以由語義切割得到一張合成圖片。 在本篇論文中的草圖來自於 validation set, 描繪出從未見過的城市場景。讀者可以參考底下的右圖, 如果不 zoom in 仔細看其實很難看出是假的照片。跟過往大部分產生圖片研究不同的是, 本文並沒有依靠 GAN 以訓練 generator 與 discriminator network 的方式來做 image-to-image 的生成, 只用了單一模型就可以做 end-to-end 的訓練與測試。

本文提出的方法也可以當成是渲染引擎 (rendering engine), 可以將物件渲染進標記好的語義場景中。渲染出來的圖片可以高達 2 megapixels (1024 x 2048)。讀者可以參考 Isola et al.[16], 使用 GAN 來做 Image-to-Image 的生成效果, [16] 利用了綜合的 loss function, 結合 GAN loss 與 regression loss。 [16] 這篇跟本文一樣使用了 Cityscapes dataset, 但 [16] 使用的是 256 \times 256 的 semantic layout 來做合成。 讀者可以參考下圖 [16] 跟本文在 Cityscapes dataset 上的比較,本文方法產生的解析度更高且合成圖效果也更逼真,

在本文 L \in \{ 0,1 \}^{m \times n \times c} 代表 semantic layout, m \times n 代表解析度的大小, c 代表 semantic 類別數量。例如一張 256 \times 256 的圖, 總共有 3 種不同類別的物件, 我們就有 3 張 semantic layouts 每個 layout 有 256 \times 256 個 pixels。 在這裡每個 semantic layout, 都以 one-hot vector 的方式存在, 換句話說, 每個單位的 pixel 依據不同類別的 semantic layout 可以表示成 L(i, j) \in \{0, 1\}^{c} s.t. \sum_{p} L(i, j, p) = 1

為了將 L 作為 input 產生出符合 L 的圖片 I \in {R}^{m \times n \times 3}, 就必須訓練出一個 g 映射模型, 將 L 映射出圖片 I。作者也列出模型影響合成圖片的3種重要特性, 分別為 1.Global coordination. 2.High resolution. 3.Memory.

Global coordination, 很多物件都會有非局部的結構關係, 比如對稱性, 如果 model 將車子的右車燈合成為紅色, 也應該要將左車燈合成為紅色以保有對稱關係。作者的 model 使用了多尺度的精煉, 在合成的最一開始會以最低解析度 (4 \times 8) 的 semantic layout 當作 input, 之後漸漸將 feature maps 往上精練。通常 global structure 會被配置到低解析度的 feature maps, 也就是即使距離較遠的物體特徵, 在低解析度 feature maps 也會出現在附近的 feature columns。這些特徵會隨著模型往上更加精練。

High resolution, 如果要產生出夠逼真的圖片, 就一定要合成出高解析度的圖片。作者表示合成出低解析度的圖片就像是近視一樣, 分辨不出精細的視覺特徵, 低解析度用肉眼觀察的效果也不好。本文將每一個模組串接再一起並漸進式的精練合成圖片。

Memory,為了要讓模型只透過語義草圖就合成圖片, 作者認為 model 所能承受的容量是影響結果的關鍵, 例如說超現實派的畫家會在作畫時透過觀察其他攝影作品當作對物件細節的參考。而且 model 不僅要在 training 時表現得很好 (記憶性) , 對於沒看過的語義草圖也要表現好 (一般化), 為了要讓 model 符合這許多條件, GPU memory 就相當重要。

在模型的架構部分, 作者提出的模型叫做 Cascaded Refinement Network (CRN), 讀者可以想像成有很多小的獨立模組, 每個模組都是用來做圖片的精練, 然後把這一連串的模組串接起來就是 Cascaded Refinement Network。

第一個 module M_{0} 會接收縮小到 w_{0} \times h_{0} \times c (e.g. 4 \times 8 \times c ) 的語義草圖, 經過 Convolutional Layer, 之後透過 F_{0} 利用 bilinearly upsampled 將原本大小 w_{0} \times h_{0} \times d_{0} 的 feature maps 往上採樣到 w_{1} \times h_{1} \times d_{0} M_{i} 主要會接收經過 downsampled 的語義草圖 L 與經過 bilinearly upsampled 後的 F_{i-1} , 將兩個 input 結合起來, 所以 M_{i} 的 input:  w_{i} \times h_{i} \times (d_{i−1} + c) 在經過 Convolutional layer 得到 output: w_{i} \times h_{i} \times d_{i}

在訓練時的訓練資料集合 D = {(I,L)}, I 為要預測的參考圖片 (y) , L 為語義草圖 (x)。作者使用的是 content representation[11] 作為 loss function, 這種類型的 loss 也可稱作 feature matching。基本的想法將合成後圖片與參考圖片分別利用已經訓練好的 visual perception network 做 feedforward propagation (本文使用的是 pre-trained VGG19, 以 \Phi 來表示 ), 擷取並比較各個不同 layer 中的 feature maps。以下定義之Loss function, l 代表 \Phi 的某一層, l 都由 3 dimensional tensor 所組成, 對任一組 (I, L) \in D, loss function 為

在上面的式子 g 代表正在訓練的合成網路, \theta 代表合成網路的參數。 \lambda_{l} 為 hyperparameters 主要用來平衡不同層 l 對 loss 的貢獻。上面 loss function 只產生一張 fake image 並跟 real image 做比較, 但是一張語義草圖照理說應可以對應到不同樣子的圖片, 所以作者就改良了一下 loss function, 讓原本的 CRN 利用一張 L 產生出多種不同的 fake images 並且跟 real image 做比較。 loss function, g_{u}(L;\theta) 代表第 u 個合成出的圖片

改良後的 loss 只考慮 loss 最小的合成影像, 以這樣的定義方式可以促使 network 將符合語義的圖像散佈並且覆蓋原有的語義草圖。這個 loss function 在結構上有點類似於 k-means 的 objective, 只考慮離中心點距離最近的資料點, 漸漸的就會由中心點開始包住相似的資料點。

作者又在更近一步的推展, 這次考慮到的是 k^{c} 個 images (c 代表 semantic 類別數量)。對於每一個語義類別 p, 令 L_{p} 代表該類別相對應到的語義草圖, \Phi_{l}^{j} 代表第 l 層第 j 個 feature map, L_{p}^{l}L_{p} downsample 到與 \Phi_{l} 相同解析度的 mask, \odot 為 element-wise product,

改良後的 loss 考量到每一個語義類別中最好的合成圖片來建構圖像, 並對于組合的影像進行評分。

在實驗部分, 最可靠的方法就是用肉眼觀察合成後圖片的好或壞。簡單的說就是讓工人看圖片,觀察真實的圖片與合成的圖片(或是由不同方法產生的合成圖片) , 然後讓工人選出比較真實的圖片。 讀者如果對本文如何進行工人智慧, 可以參考本文, 這邊就不詳細說明細部的實驗流程。下表是本文的方法跟其他 baseline 方法的 pairwise comparisons result,

由上表歸納出來, 在 Cityscapes 與 NYU datasets, 受試者都認為本文合成圖片效果比較好。讀者可參考下圖測驗看看你覺得哪種方法合成出來的圖比較真實然後再跟上表對照一下,

Reference:
[11] L.A.Gatys, A.S.Ecker, and M.Bethge. Image style transfer using convolutional neural networks. In CVPR, 2016.
[16] P. Isola, J. Zhu, T. Zhou, and A. A. Efros. Image-to-image translation with conditional adversarial networks. In CVPR, 2017.

Share the joy
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

近期文章

近期迴響

彙整

分類

其它

Eugene Liu Written by:

Be First to Comment

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *