논문: Semantic Image Synthesis with Spatially-Adaptive Normalization
페이지, 영상, 코드

1. Abstract & Introduction

  • 주어진 sematic layout을 제안된 SPatially-Adaptive (DE)normalization (SPADE)으로 사실적인 이미지 생성하는 논문
  • 이전 방식들은 normalization하면 sementic information이 사라지는 문제 발생
  • input layout은 normalization layer의 활성도(activaion)를 조절하기 위해 활용되는데,
    spatially-adptive하고 변환에 대한 학습(learned transformation)을 진행하며 활성도 조절
  • semantic과 style 둘 다 조절 가능

  • Conditional image synthesis는 특정 input 데이터를 조건으로 제시하여 사실적인 이미지를 생성하는 task
  • 위 논문의 목적은 sementic image synthesis: sementic segmentation mask를 사실적인 이미지로 생성하는 것을 목표로 함
  • 이전 방식들에서의 normalization이 sementic information를 없애는 문제를 해결하기 위해 SPatially-Adaptive (DE)normalization (SPADE) 제안
  • Figure 1: label을 조절하고 다양한 결과를 만들어내는 multi-modal & style-guided image synthesis 가능

2. Related Work

Deep generative models

  • 이미지 생성하는 방법을 배우는 model
  • 최근에는 generative adversarial networks (GANs) & variational autoencoder (VAE) 방법 사용, 본 논문은 GAN 바탕
  • GAN 구성: generator + discriminator
    • generator: 사실적인 이미지 생성
    • discriminator: 생성된 이미지와 진짜 이미지 구별

Conditional image synthesis

  • class-conditional models: 주어진 카테고리 label를 활용하여 이미지 생성, 주로 text에 기반하여 연구 진행됨
  • conditional GANs: image-to-image 변환, input & output이 이미지
  • 제안된 방법은 segmentation mask를 사실적인 사진으로 변환애 집중
    training dataset에 등록된 segmentation masks와 이미지로 구성되어 있음을 가정함

Unconditional normalization layers

  • AlexNet의 Local Response Normalization, Inception-v2의 Batch Normalization처럼 modern deep network에서 중요한 요소로 작용되고 있음
  • Instance Normalization, Layer Normalization, Group Normalization, Weight Normalization도 있음
  • 본 논문에서는 위 방식의 normalization들은 외부(external) 데이터에 종속되지(depend) 않기에 unconditional이라고 함

Conditional normalization layers

  • Conditional Batch Normalization, Adaptive Instance Normalization (AdaIN)이 여기에 해당
  • conditional normalization은 외부(external) 데이터를 활용하는데, 주로 아래 단계를 따름
    1. layer activation들이 mean이 0, unit deciation을 1이 되도록 normalize
    2. normalize된 activation를 외부 데이터에서 추론(inferred)한 parameters로 이루어지 학습된 affine 변환을 활용하여 denormalize 진행
  • style transfer task에서 affine parameter를 활용하여 output의 전체적인(global) style을 조절, spatial coordinates에 따라 균일한 특성을 보임
  • 제안된 normalization layer은 semantic masks으로 image synthesis에 적합한 spatially-varing(공간에 따라 변하는) affine 변환을 적용
    • [Recovering realistic texture in image super-resolution by deep spatial feature transform] 논문에서 제안된 image super-resolution 방식과 관련됨
    • 제안된 방법과 위 논문 공통점: semeantic input을 바탕으로 spatially-adaptive modulation layer을 기반으로 만들어짐
    • 제안된 방법과 위 논문 차이점: super-resolution vs style & semantic disentanglement
    • 제안된 방법은 semantic information을 normalized activations을 조절하는데 초점 $\rightarrow$
      coarse-to-fine (‘거칠게’에서 ‘세세하게’) generation을 위해 다양한 크기의 semantic maps 사용

3. Semantic Image Synthesis


Spatially-adaptive denormalization

  • $h_i$ : the activation of the i-th layer of a deep convolutional network for a batch of $N$ samples
  • $C_i$ : the number of channels in the layer
  • $H_i,\ W_i$ : the height and width of the activation map in the layer

  • SPatially-Adaptive (DE)normalization (SPADE)은 batch normalization과 비슷하게 activation은 channel에 따라 normalized되고 학습된 scale과 bias에 의해 조절
  • batch normalization과 다르게 input segmentation mask에 종속적이며(depend) location $(y, x)$에 따라 다양한 값을 가짐 \(\gamma^i_{c,y,x}(m)\frac{h^i_{n,c,y,x}-\mu^i_c}{\sigma^i_c} + \beta^i_{c,y,x}(m)\)
    • $n \in N,\; c \in C^i,\; y \in H^i,\; x \in W^i$
    • $h^i_{n,c,y,x}$ : the activation at the site before normalization
    • $\mu^i_c,\; \sigma^i_c$ : mean and standard deviation of the activations in channel $c$ \(\mu^i_c = \frac{1}{NH^iW^i}\sum_{n,y,x}h_{n,c,y,x}^i\) \(\sigma^i_c = \sqrt{\frac{1}{NH^iW^i} \sum_{n,y,x}((h_{n,c,y,x}^i)^2 - (\mu^i_c)^2) }\)
    • $\gamma^i_{c,y,x}(m),\; \beta^i_{c,y,x}(m)$ : the learned modulation parameters of the normalization layer
      • $\gamma^i_{c,y,x}\; \beta^i_{c,y,x}$는 $(c,y,x)$ 위치에서의 $m$을 scale과 bias 값으로 변환하는 function
      • 제안된 방법에서는 간단한 2개 layer convolution network 사용

  • SPADE는 몇몇의 normalization layer의 일반화 버전
    • Conditional Batch Normalization: segmentation mask $m$을 image class label로 변경하고, modulation parameter들을 spatially-invariant(공간에 균일)하게 바꿈 (ex) $\gamma^i_{c,y_1,x_1}\equiv\gamma^i_{c,y_2,x_2},\; \beta^i_{c,y_1,x_1}\equiv\beta^i_{c,y_2,x_2}$
    • AdaIN: segmentation mask $m$을 실제 이미지로 변경하고, modulation parameter들을 spatially-invariant(공간에 균일)하고, $N=1$로 바꿈

SPADE generator

  • 학습되는 modulation parameter들이 label layout에 대한 정보를 충분히 encoding하기에, segmentation map을 generator의 처음 layer에 넣지 않아도 됨 $\rightarrow$ generator의 encoding 부분이 필요 없음
  • class-conditional generator과 비슷하게, random vector를 input으로 사용 가능 $\rightarrow$ 자연스럽고 간단한 방법으로 multi-modal synthesis 가능

  • upsampling layer에서 ResNet block 형식으로 구성
  • residual block이 다른 scale에서 작동하므로, semantic mask를 downsample하여 해상도 맟춤
  • generator는 pix2pixHD에서 사용하는 loss function 동일하게 사용하되, least squared loss를 hinge loss로 교체

Discriminator

  • pix2pixHD의 discriminator 사용
    • multi-scale이며e Instance Normalization 사용
    • 제안된 논문에서는 Spectral Normalization을 모든 convolution layer에 추가함
  • 몇몇의 unconditional GANs에 사용된 ResNet-base discriminator들을 비교했으나, 비슷한 성능 보임
  • SPADE를 discriminator에 추가하는 것도 비슷한 성능을 보임
  • pix2pixHD에서 사용된 loss term 중 하나라도 빼면 generation 결과가 퇴화됨(degraded)

Why does the SPADE work better?

  • 다른 normalization layer에 비해 semantic information을 더 잘 보존하기 때문
  • (ex) Instance normalization을 사용하는 conditional image synthesis model에서 1개의 label로 구성된 segmentation mask를 convolution하고 normalization을 진행한다고 했을 때,
    • convolution output은 uniform(균일)해지고, 이를 Instance normalization하면 어떠한 input semantic label이 주어져도 normalization activation이 모두 0이 됨
    • 즉, 모든 sematic한 정보가 사라지게 됨
  • SPADE generator는 normalization 없이 spatially adaptive modulation에 들어가고,
    이전 layer에서의 activation만 normalized되기에 semantic information을 더 잘 보존할 수 있음


Multi-modal synthesis

  • random vector를 generator의 input으로 사용하면 multi-modal synthesis할 수 있음
  • 실제 이미지를 random vector로 바꿔주는 encoder를 사용하여 결과값을 generator에 전달하면 VAE 형태로 만들 수 있음
    • encoder: image style capture
    • generator의: encoded style과 segmentation mask information를 SPADE를 사용하여 원본 이미지를 생성
  • 테스트 시에 encoder는 target 이미지의 style를 capture하는 style guidance로 사용됨
  • 학습 시에 KL-divergence loss 추가, weight는 0.05 \(\mathcal{L}_{KLD}=\mathcal{D}_{KL}(q(z\vert x) \Vert p(z))\)
    • prior distribution $p(z)$: a standard Gaussian distribution
    • variational distribution $q$: mean vector와 variance vector에 의해 정의
    • generator에서 imagr encoder로 gradient를 back-propagation할 때, reparameterization trick 사용

Segmentic manipulation and guided image synthesis

  • Figure 1 그림처럼 사용자가 segmentation mask(맨 윗 줄)를 만들면 이에 따른 이미지를 생성
  • 더 나아가, 외부(external) 사진을 활용하여 global style 조절 가능 (맨 왼쪽)
    image encoder를 통해 embedding한 벡터를 input noise를 대체하여 생성

  • image encoder는 “stride가 2인 convolution layer 6개” + “linear layer 2개”로 구성
  • 각각의 linear layer는 mean과 variance 구함

4. Experiments

Implementation details

  • generator와 discriminator에 spectral normalization 적용
  • learning rate: generator - 0.0001, discriminator - 0.0004
  • Adam $\beta_1=0,\; \beta_2=0.999$
  • synchronized Batch Normalization 사용
  • batch size: 32
  • Glorot initialization 사용

Datasets

name trait epoch
COCO-Stuff 118,000 (train) / 5,000 (validation)
182 semantic classes (vast diversity $\rightarrow$ exsisting models perform poorly)
100
ADE20K 20,210 (train) / 2,000 (validation)
150 semantic classes
200
ADE20K-outdoor subset of ADE20K with only outdoor scenes -
Cityscapes 3,000 (train) / 500 (validation) 200
Flickr Landscapes 40,000 (train) / 1,000 (validation)
well-trained DeepLabV2로 segmentation masks 생성
50
  • input size: 256 $\times$ 256 (Cityscapes만 512 $\times$ 256)
  • learning rate decay for Cityscapes & ADE20K
    100에서 200 epoch으로 증가할 때, 선형적(linearly)으로 0으로 감소되게 함

Performance metrics

  • 생성된 이미지를 semantic segmentation model에 넣어 나온 predicted segmentation mask가 ground truth input와 얼마나 다른지 평가 (segmentation 정확도)
    • Intersection-over-Union (mIoU)
    • pixel accuracy (accu)
    • state-of-the-art segmentation networks for each dataset
      • DeepLabV2 for COCO-Stuff, UperNet101 for ADE20K, and DRN-D-105 for Cityscapes
  • 생성된 이미지의 분포와 실제 이미지의 분포 거리 비교
    • $Fr\acute{e}chet$ Inception Distance (FID)

Baselines

  • pix2pixHD model: GAN 기반 conditional image synthesis framework
  • cascaded refinement network (CRN): 낮은 해상도에서 높은 해상도까지 반복적으로 output을 정제(refine)하는 deep network
  • semi-parametric image synthesis method (SIMS): training set에 있는 실제 segment를 사용하여 이미지를 생성하고 경계 정제 (작가가 제공하는 데이터셋 결과에 대해서만 비교 진행)

Quantitative comparisons

  • 전반적으로 제안된 모델의 성능이 뛰어났음
  • Cityscapes 데이터 셋에서 SIMS model이 더 낮은 FID 점수를 보였으나, segmentation 성능은 안 좋았음
    $\rightarrow$ SIMS model은 training 데이터셋에서 image patch들을 꿰매 맞추기 때문에 분포도에 대한 점수가 더 잘 나올 수 있음
    $\rightarrow$ 하지만 데이터셋에 완벽하게 일치하는 query가 존재하는 것이 보장되지 않으므로, input segment에 맞는 이미지를 가져(copy)오지 않는 경향이 있음

Qualitative results

  • 다양한 장면들로 구성된 COCO-Stuff와 ADE20K 데이터셋에서 특히 더 좋은 성능을 보임
  • training 데이터셋 크기가 작은 경우에 SIMS 모델도 좋은 성능을 보여주나, input segmentation mask에 벗어나는 이미지를 나타내기도함 (Figure 6에서 2번째 줄의 수영장 모양)

Human evaluation

  • 다른 네트워크에서 생성한 2개의 이미지 중, input segmentation mask를 더 잘 나타내는 이미지 선택

Effectiveness of the SPADE

  • pix2pixHD++: pix2pixHD + synchronized batch normalization + spectral normalization + TTUR + hinge loss objective
  • pix2pixHD++ w/ Concat: pix2pixHD++ + 모든 중간 layer들에 channel 방향으로 input segmentation mask concatenate
  • pix2pixHD++ w/ SPADE: pix2pixHD++ + SPADE

  • SPADE가 상응하는 네트워크보다 더 좋은 성능을 보이고 있음
  • input segmentation mask를 concatenate하는 방법이 SPADE를 대체할 만한 방법이지만, 동일한 성능을 보여주지는 않음
  • decoder-style SPADE generator가 적은 수의 parameter만으로 pix2pixHD++ 성능을 능가

Variations of SPADE generator

  • generator input으로 random noise vs downsampled segmentation map
    비슷한 성능을 보임, SPADE 자체로만 input mask에 대한 정보를 충분하게 받아들임
  • label map에서 convolutional kernel size
    $1 \times 1$은 성능을 하락시킴 $\rightarrow$ label의 맥락이 무시되기 때문
  • generator의 convolution filter의 개수에 따른 결과
  • parameters 조정(modulation) 이전에 적용하는 parameter-free normalization layers에 따른 결과

Multi-modal synthesis

  • 같은 input segmentation mask에 대해서 서로 다른 noise input을 사용하여 다양한 output 생성 가능

Appendix A

Training Data Flow & Learning Objective

  • image encoder는 실제 이미지를 mean vector와 variance vector로 encoding
  • reparameterization trick을 통해 generator에 넣을 noise input할 때, image encoder 결과 사용
  • generator에 segmentation mask 또한 제안된 방법인 SPADE ResBlk의 입력 값으로 사용
  • discriminator는 segmentation mask와 generator에서 생성한 이미지를 concatenate하여 진짜인지 가짜인지 판별

Appendix B

  • 2~3번 째: pix2pixHD에서부터 사용된 perceptual loss와 GAN feature matching loss들이 중요 $\rightarrow$ 하나라도 빠지면 성능이 떨어짐을 보임
  • 4번 째: pix2pixHD discriminator 위에 convolutional layer 한 개를 더 추가하여 discriminator의 깊이를 깊게해도 성능을 향상시키지 않음
  • 6번 째: Spectral Norm, synchronized BatchNorm, TTUR, hinge loss objective 방식들이 다 성능 향상에 도움이 됨
  • 7~8번 째: hinge loss objective, TTUR, 더 큰 batch size, Glorot initialization을 사용한다는 것이 pix2pixHD와의 차이점

Appendix C

  • COCO-Stuff와 ADE20K 데이터셋을 사용하여 생성된 이미지를 CRN, pix2pixHD와 비교

  • ADE20K-outdoor와 Cityscapes 데이터셋을 사용하여 생성된 이미지를 CRN, SIMS, pix2pixHD와 비교

  • 제안된 방법을 사용한 multi-modal synthesis
    standard multivariate Gaussian distribution에서 sampling하여 생성