High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs

 
pix2pixhd

이 글은 High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs 논문을 읽고 정리한 것입니다. 이 글에 있는 대부분의 사진들은 논문에서 가져온 것임을 밝힙니다.

Abstract

  • 본 논문에서는 semantic label maps로부터 high-resolution photo-realistic 이미지를 생성하는 conditional GAN 네트워크를 제안한다.
  • 기존의 conditional GAN은 low-resolution 이미지에서만 잘 동작한다는 한계가 있었지만, 본 연구에서는 multi-scale generator 및 discriminator를 사용한 네트워크 구조 및 새로운 adversarial loss를 통해 $2048 \times 1024$ 크기의 realistic한 이미지 생성이 가능하도록 하였다.
  • 또한, 다음의 2가지에 대한 interactive visual manipulation이 가능하도록 프레임워크를 확장하였다.
    • Instance segmentation 정보를 통해 object의 제거나 추가와 같은 manipulation이 가능
    • 동일한 input에 대해서 모델이 여러가지의 이미지를 생성 가능

Instance-Level Image Synthesis

  • 본 논문에서는 기본적으로 pix2pix를 baseline으로하여 high-resolution에서의 한계점들을 해결하는 방향으로 연구를 진행하였다.

The pix2pix Baseline

  • 기존의 pix2pix 논문에서는 cityscapes dataset을 사용해 semantic label로부터 photo image를 생성함을 보였지만, 이미지의 크기는 $256 \times 256$로 low-resolution이었다.
  • 본 논문에서는 pix2pix를 high-resolution 이미지 생성에 적용해본 결과, 다음의 문제가 있음을 발견하였다.
    • 학습 과정이 불안정하고 생성된 이미지의 quality가 좋지 못함
  • 따라서, 위의 문제를 해결하기 위해 pix2pix를 발전시키는 방향으로 연구를 진행하였다.

Improving Photorealism and Resolution

  • pix2pix가 high-resolution 이미지 생성에도 잘 동작하도록 하기 위해, 본 논문에서는 generator와 discriminator 구조를 변경하고, robust한 objective function을 사용하였다.

Coarse-to-fine Generator

fig_3
  • Figure 3은 본 논문에서 사용한 generator 구조를 나타낸 것이며, 크게 다음의 2가지로 구성된다.
    • $G_1$ : Global generator
      • Perceptual Losses for Real-Time Style Transfer and Super-Resolution 논문에서 $512 \times 512$ 이미지를 대상으로 사용한 네트워크 구조이며, 다음의 3가지로 구성된다.
        • $G_1^{F}$ : Convolutional front-end
        • $G_1^{R}$ : Set of residual blocks
        • $G_1^{B}$ : Transposed convolutional back-end
      • Input / output resolution은 $1024 \times 512$이다.
    • $G_2$ : Local enhancer
      • $G2$도 $G1$와 유사하게 다음의 3가지로 구성된다.
        • $G_2^{F}$ : Convolutional front-end
        • $G_2^{R}$ : Set of residual blocks
        • $G_2^{B}$ : Transposed convolutional back-end
      • Input / output resolution은 $2048 \times 1024$이다.
      • $G_2^{R}$의 입력은 $G_2^{F}$와 $G_1^{B}$의 element-wise sum이며, 이는 $G_1$의 global information을 $G_2$에 integrate해주는 것을 도와준다.
      • Local enhancer의 경우, resolution을 더 키우기 위해 다음과 같이 여러 개를 붙일 수 있다.
        • $G = \{ { G_1, G_2 \} }$ : $2048 \times 1024$ (Local enhancer 1개)
        • $G = \{ { G_1, G_2, G_3 \} }$ : $4096 \times 2048$ (Local enhancer 2개)
  • Generator의 학습 과정은 다음과 같다.
    1. Global generator를 먼저 학습한다.
    2. Resolution 순서대로 local enhancer가 추가된 네트워크를 새로 학습한다.
    3. 2에서 가장 마지막에 학습한 네트워크에, 그보다 전에 학습한 네트워크들의 pretrained-weight들을 불러온 다음, fine-tune한다.
  • 위와 같은 generator 구조를 사용한 이유는, image synthesis task에서 global 및 local information을 효과적으로 결합할 수 있기 때문이다.

Multi-scale discriminator

  • High resolution 이미지에서 discriminator가 동작하기 위해서는 receptive field를 크게 가지거나 layer를 깊게 쌓아야 하는데, 이는 많은 메모리가 필요하고 overfitting이 일어날 수 있다는 문제가 있다.
  • 따라서, 본 논문에서는 동일한 구조이지만 서로 다른 scale의 이미지에서 동작하는 3개의 multi-scale discriminator($D_1, D_2, D_3$)를 사용하였다. (resolution이 더 커질 경우, $D$를 더 추가하면 됨)
    • $D_1$ : 원본 resolution에서 동작
    • $D_2$ : 원본의 1/2 resolution에서 동작
    • $D_3$ : 원본의 1/4 resolution에서 동작
  • 즉, 기존의 objective function 식 (1)은 3개의 discriminator에 대한 식 (2)와 같이 바뀌게 된다.
\[\min_G \max_{D} \mathcal{L}_{\text{GAN}} (G, D) \tag{1}\] \[\min_G \max_{D_1, D_2, D_3} \limits\sum_{k=1, 2, 3} \mathcal{L}_{\text{GAN}} (G, D_k) \tag{2}\]
  • 또한, 위의 식 (2)의 의미는 다음과 같이 해석할 수 있다.
    • 3가지의 view에서 바라본 discriminator가 각각 판별을 수행함으로써, generator가 globally consistent($D_1$) 하면서도 finer detail($D_3$)한 이미지를 생성하도록 학습하도록 유도한다.

Improved adversarial loss

\[\mathcal{L}_{GAN}(G, D) = \mathbb{E}_{(\mathbf{s}, \mathbf{x})}[\log D(\mathbf{s}, \mathbf{x})] + \mathbb{E}_{\mathbf{s}} [\log (1 - D(\mathbf{s}, G(\mathbf{s}))] \tag{3}\] \[\mathcal{L}_{\text{FM}}(G, D_k) = \mathbb{E}_{(\mathbf{s}, \mathbf{x})} \sum^{T}_{i=1} \dfrac{1}{N_i} [\| D_k^{(i)} (\mathbf{s}, \mathbf{x}) - D_k^{(i)} (\mathbf{s}, G(\mathbf{s})\|_1] \tag{4}\]
  • 본 논문에서는, 기존의 GAN loss 식 (3)에 3개의 discriminator의 각 layer 출력으로부터 계산하는 feature matching loss 식 (4)를 추가하여 사용하였다.
    • $\mathbf{s}$와 $\mathbf{x}$는 각각 semantic label map과 natural photo image를 의미
    • $D_k^{(i)}$는 discriminator $D_k$의 $i$번째 layer에서 출력한 feature를 의미
    • $T$는 전체 layer의 수이고, $N_i$는 $i$번째 layer에서 출력한 feature의 element 수를 의미
  • 식 (4)의 Feature matching loss로 인한 효과는 다음과 같다.
    • Discriminator의 출력을 maximize하는 것 대신에, generator가 실제 이미지의 통계값과 일치하는 이미지를 생성하도록 한다.
      • 즉, generator가 discriminator의 각 layer에서 실제 이미지를 보고 출력하는 feature들을 보고, 가짜 이미지도 discriminator의 각 layer에서 동일한 값을 출력할 수 있도록 학습하게 한다는 의미이다.
  • 따라서, 전체 objective function은 다음의 식 (5)와 같이 정리할 수 있다.
\[\min_G \bigg( \Big( \max_{D_1, D_2, D_3} \sum_{k=1, 2, 3} \mathcal{L}_{GAN}(G, D_k) \Big) + \lambda \sum_{k=1, 2, 3} \mathcal{L}_{FM} (G, D_k) \bigg) \tag{5}\]
  • 식 (5)에 대한 설명은 다음과 같다.
    • $\lambda$는 GAN loss와 feature matching loss간의 importance를 조절한다.
    • Feature matching loss는 discriminator에만 overtraining되는 것을 막기 위해 추가된 항이므로, discriminator의 학습에는 영향을 미치지 않는다.
      • $D_k$로부터 값을 계산하지만, $D_k$의 출력이 maximize되도록 하지 않음 ($\mathcal{L}_{FM}$ 항에는 $\max$ 표시가 없음)

Using Instance Maps

  • Semantic label map을 통한 이미지 생성의 경우, 같은 class인 object들이 붙어있을 경우에는 구분이 되지 않기 때문에 이미지 생성 결과가 좋지 못할 수 있으며, 이를 해결하기 위해 instance map을 사용하는 것을 고려해볼 수 있다.
  • 하지만, 각 이미지마다 포함된 object의 수가 다 다르기 때문에, one-hot encoding과 같은 방법으로 instance map의 ID 정보를 모델이 활용할 수 있도록 하는 것은 입력으로 넣어주는 것은 구현하기가 어렵다.
fig_4_5
  • 따라서, 본 논문에서는 Figure 4b와 같은 instance boundary map 정보를 활용하는 방법을 사용하였다.
    • Instance boundary map 정보는 semantic label map과 concat하여 네트워크에 입력해주는 방식을 사용
  • 그 결과, Figure 5b와 같이 class가 붙어있는 경우에 생성 이미지의 결과가 더 개선됨을 확인할 수 있었다.

Learning an Instance-level Feature Embedding

  • Semantic label map으로부터 one-to-many mapping을 통해 여러 장의 realitic images를 생성하는 것(multi-modal image synthesis)은 여러 연구들이 있었지만, 이러한 방법들은 image manipulation task를 수행하기에는 다음과 같은 어려움이 있다.
    • 사용자는 모델이 어떠한 이미지를 생성할지를 직관적으로 control하기 어렵다.
    • 기존의 연구들에서는 color나 texture 등의 변화만에 집중하여 object-level의 control은 불가능하다.
  • 따라서, 본 논문에서는 다양한 이미지 생성 및 instance-level control을 수행하기 위해, low-dimensional feature channel을 generator의 입력에 추가하는 방법을 사용하였다.
    • 추가하는 feature를 조절함으로써 이미지 생성을 조작할 수 있고, feature는 continuous한 값들로 이루어지기 때문에 이론상으로는 무한한 이미지 생성이 가능
fig_6
  • Figure 6는 low-dimensional feature를 생성하고, 이를 label에 추가해 generator에 입력되기까지의 과정을 나타낸 것이며, 자세한 과정은 다음과 같다.
    • 이미지 내의 각 instance에 대한 ground truth target에 해당하는 low-dimensional feature vector를 찾기 위해 encoder network $E$를 학습한다.
      • 각 instance끼리는 feature가 consistent하도록 하기 위해, object instance에 대한 average feature를 계산하는 instance-wise average pooling layer를 encoder의 output에 추가하였다.
    • Generator의 입력에 low-dimensional feature를 추가한 형태로 encoder와 generator를 같이 학습시킨다.
      • 즉, Generator의 식은 기존의 $G(\mathbf{s})$가 아니라, $G(\mathbf{s}, E(\mathbf{x}))$로 변경되어 encoder와 함께 학습
    • 학습이 끝나면, 모든 training image를 인코더에 통과시켜 출력 feature들을 저장하고, 이들을 다시 K-means clustering을 통해 sematic category로 묶는다.
      • 각 cluster들은 도로의 texture와 같은 specific한 style에 대한 feature를 인코딩한 것이라고 볼 수 있다.
    • Inference시에는, 여러 cluster들의 중심 값 중에서 1개를 random하게 추출하고, 이를 encoded feature로서 label map에 concate한 후, generator의 입력에 사용한다.

Results

Implementation details

  • Stable training을 위해 LSGAN을 사용
  • 전체 objective function 식 (5)의 weight $\lambda=10$을 사용
  • Object instance의 feature encoding에는 3차원 vector을 사용하였고, K-means에는 $K=10$을 사용
  • Perceptual loss(VGGNet)를 전체 objective function 식 (5)에 추가하여서 실험하였더니, 성능의 개선이 있었음
    • $\lambda \sum^N_{i=1} \frac{1}{M_i} [\vert\vert F^{(i)} (\mathbf{x}) - F^{(i)} (G(\mathbf{s}))\vert\vert _1]$
      • $F^{(i)}$ : VGGNet의 $i$번째 layer의 출력
      • $M_i$ : VGGNet의 $i$번째 layer에서 출력한 feature의 element 수
      • $\lambda=10$
    • 구분을 위해, 논문에서는 perceptual loss를 추가해 실험한 결과를 ours, 그렇지 않은 경우를 ours(w/o VGG loss)로 표기

Quantitative Comparisons

  • 본 논문에서는 생성한 이미지가 얼마나 realistic한지 quantitative하게 비교하기 위해, 모델이 생성한 이미지에 segmentation 모델을 사용해 segmentation map을 생성하고, 이를 이미지 생성에 사용한 ground-truth segmentation map과 비교하는 방법을 사용하였다.
    • Segmentation 모델로는 PSPNet을 사용
    • Dataset은 Cityscapes를 사용
table_1
  • Table 1은 pix2pix와 CRN, pix2pixHD(ours)이 생성한 이미지로 실험한 결과를 비교한 것이다.
    • pix2pixHD가 pix2pix, CRN에 비해 아주 좋은 성능을 보임
    • 원본 이미지에서의 결과(Oracle)와도 큰 차이가 나지 않음
      • 원본 이미지는 생성 모델이 달성할 수 있는 theortical “upper bound” of realism으로 볼 수 있음

Human Perceptual Study

  • 본 논문에서는, human perceptual study로서 Amazon Mechanical Turk 플랫폼을 사용해 A/B test를 수행하였다.
    • Dataset은 Cityscapes를 사용

Unlimited time

table_2
  • Table 2는 시간 제한 없이, 2가지 생성 모델의 이미지 중 어떤 것이 더 realistic한지 고르도록 실험한 결과이다.
    • pix2pix와 pix2pixHD, CRN과 pix2pixHD의 2가지 경우에서, 각 모델이 생성한 이미지 2장을 보여주고 어느 이미지가 더 realistic한지 고르도록 실험
    • 다른 생성 모델들은 학습에 instance map을 사용하지 않았으므로, pix2pixHD도 사용하지 않고 학습한 모델로 비교
    • pix2pix, CRN에 비해 pix2pixHD가 사람이보기에도 더 realistic한 이미지를 생성하였다고 볼 수 있음

Limited time

fig_7
  • Figure 7은 주어진 시간동안 어떤 이미지가 더 realistic한지 고르도록 실험한 결과이다.
    • 실제 이미지와 CRN 생성 이미지, 실제 이미지와 pix2pixHD 생성 이미지, CRN 생성 이미지와 pix2pixHD 생성 이미지의 총 3가지 경우에서 실험
    • 0.125 ~ 8초 사이의 랜덤한 시간동안 두 이미지의 차이를 사람이 인식할 수 있는지를 실험한 것으로 볼 수 있음
      • 즉, 사람이 얼마나 빠르게 이미지의 차이를 인식할 수 있는지를 실험한 것이며, 시간이 길어질수록 차이를 더 인식하기 쉬워진다는 것을 그래프에서 확인할 수 있다.
fig_9_10
  • Figure 9, 10은 위의 실험에서 모델이 생성한 이미지들의 몇가지 예시이다.

Analysis of the loss function

  • 본 논문에서는, objective function에 있는 각 loss가 성능에 미치는 영향을 실험하기 위해, unlimited time 조건에서의 human perceptual study를 수행하였다.
  • GAN loss와 여기에 feature matching loss를 추가한 경우의 실험 결과는 다음과 같다.
    • GAN loss $\rightarrow$ GAN loss + feature matching loss (i.e. w/o VGG loss)
      • 58.90% $\rightarrow$ 68.55%
    • 즉, feature matching loss가 성능 향상에 중요한 영향을 미친다는 것을 알 수 있다.
  • Figure 9, 10에서 w/o VGG loss와 w/ VGG loss를 비교해보면, perceptual loss의 영향은 다음과 같다는 것을 알 수 있다.
    • w/o VGG loss의 결과에서도 이미 충분히 realistic하므로, feature matching loss만큼 성능에 큰 영향을 미치지는 않음

Using instance maps

  • 본 논문에서는, Instance map을 사용하면 성능에 영향을 얼마나 미치는지를 판단하기 위한 실험도 수행하였다.
    • 이미지에서 자동차가 있는 영역을 강조하여, Instance map을 사용한 경우와 사용하지 않은 경우를 보여주고 더 realistic한 이미지를 고르도록 실험
    • Preference rate 64.34%로 instance map을 사용한 경우가 더 realistic하다고 판단하였음
  • 따라서, instance map을 사용하면, object boundary에서의 realism이 더 향상된다는 것을 알 수 있다.

Analysis of the generator

table_3_4
  • Table 3, 4는 U-Net, CRN의 generator와 비교해서 pix2pixHD의 generator가 성능에 영향을 미쳤는지 비교하기 위해, segmentation score 및 human perceptual study 결과를 비교한 것이다.
    • 두 경우 모두에서 pix2pixHD의 generator가 더 좋은 결과를 보였다.

Analysis of the discriminator

table_5
  • Table 5는 Multi-scale discriminator를 사용할 경우, 성능이 개선되는지를 segmentation score로 실험한 결과이다.
    • Mult-scale discriminator를 사용하는 것이 학습을 안정되게 하는 것뿐만 아니라, 성능도 향상시킨다는 것을 알 수 있다.
  • Human perceptual study를 수행한 결과에서도 69.2%로 multi-scale discriminator를 사용한 경우의 생성 이미지가 더 realistic하다는 결과가 나왔다.

Additional datasets

fig_8
  • Figure 8은 NYU dataset에서의 pix2pix, CRN, pix2pixHD가 생성한 이미지를 비교한 것이다.
    • Human perceptual study를 수행한 결과, pix2pix와 CRN에 대해서 pix2pixHD가 86.7%, 63.2%로 더 선호된다는 결과가 나왔음
  • NYU dataset에 대해서도 pix2pixHD가 pix2pix, DRN보다 더 realistic한 이미지를 생성한다는 것을 알 수 있다.
fig_11
  • Figure 11은 ADE20K dataset에서의 pix2pixHD가 생성한 이미지 예시이다.
    • 원본 이미지만큼의 realistic한 결과를 보임

Interaction Object Editing

fig_1
  • Figure 1b, 1c은 feature encoder를 통해 instance editing을 수행한 결과를 보여준다.
    • 1b의 경우, 나무와 건물을 변경한 예시이다.
    • 1c의 경우, 차의 색깔과 도로의 texture를 변경한 예시이다.
fig_12
  • Figure 12는 Helen Face dataset에서의 instance editing을 수행한 결과이다.
    • Helen Face dataset은 얼굴의 각 부위별 label을 사용할 수 있으므로, 다음과 같이 부분적인 editing이 가능하다.
      • 위의 3개 이미지는 skin color를 변경한 예시이다.
      • 아래 3개 이미지는 눈썹과 수염을 변경한 예시이다.

Discussion and Conclusion

  • 본 논문에서는, 어떠한 hand-crafted loss나 pre-trained network 없이도 high-resolution의 photo-relistic 이미지 생성이 가능한 conditional GAN 모델인 pix2pixHD를 제안한다.
  • pix2pixHD는 high-resolution 이미지가 요구되지만 pre-trained network를 사용하기는 어려운 medical imaging이나 biology 분야에서 유용하게 활용될 수 있다.
  • 또한, 본 연구는 Image-to-image synthesis pipeline이 diverse outputs 및 interactive image manipulation으로도 확장될 수 있다는 것을 보였다.