SPADE: Semantic Image Synthesis with Spatially-Adaptive Normalization
논문: 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) 데이터를 활용하는데, 주로 아래 단계를 따름
- layer activation들이 mean이 0, unit deciation을 1이 되도록 normalize
- 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하여 생성