Image-to-Image Translation with Conditional Adversarial Networks
Updated:
Paper Link : Image-to-Image Translation with Conditional Adversarial Networks
Summary
- Conditional Generative Model을 통한 Image-to-Image Translation 기법을 제안
- PatchGAN이라는 새로운 아키텍쳐를 Discriminator로 활용
Method
Objective
Loss 함수로는 Discriminator를 속이기 위한 Adversarial Loss와 Ground Truth와 유사한 출력을 내기 위한 L1 loss를 결합하여 활용한다. 즉,
\[\displaystyle{\mathcal{L}_{cGAN}(G, D) = \mathbb{E}_{x, y}[\log D(x, y)]+\mathbb{E}_{x,z}[\log (1-D(x, G(x,z)))]}\] \[\displaystyle{\mathcal{L}_{L1}(G) = \mathbb{E}_{x,y,z}[\lVert y-G(x,z)\rVert_1]}\]위의 두 term을 결합한 다음의 식을 최적화하는 것이 objective라고 할 수 있다.
\[\displaystyle{G^* = \arg \min_G\max_D\mathcal{L}_{cGAN}(G, D) +\lambda\mathcal{L}_{L1}(G)}\]Network Archithecture
기본적으로, Discriminator와 Generator 모두 DCGAN에서 제시한 Convolution-BatchNorm-ReLU로 이루어진 Block을 통하여 구성한다.
Generator
Image-to-Image Translation Task의 경우 High resolution input을 받아 또다른 High resolution output을 출력하는 Task이다. 따라서 이를 수행하는 Generator에는 High resolution input을 encoding하고 이를 다시 원본 resolution을 decoding하는 Encoder-Decoder 구조를 베이스로 한다.
또한, low-level information을 직접적으로 활용하기 위하여 위의 U-Net 스타일의 skip connection을 적용하였다.
Discriminator
본 논문에서 저자들은 L1 Loss를 통하여 Low frequency를 잡고 Discriminator를 통하여 High frequency를 모델링하도록 역할을 분담한다. 이 때, Discriminator에는 이미지를 패치 단위로 넣어주게 되고 이러한 아키텍쳐를 PatchGAN으로 정의한다. $N \times N$크기의 패치들을 입력으로 받아 각각에 대하여 Real or Fake 확률을 출력하게 되고 최종적으로 같은 이미지의 패치들에 대한 결과를 Averaging함으로써 최종 결과를 도출한다.
Experiment
Losses
실험 파트에서의 가장 흥미로운 부분이다.
L1 Loss만으로 Training을 진행한 경우, Ground Truth와 유사하지만 blurry한 형태를 출력한다. 또한 cGAN만을 사용한 경우(Adversarial Loss만을 사용한 경우)는 Sharp한 결과물을 출력하지만, GAN의 고질병인 Ground Truth에서는 존재하지 않는 artifact가 있는 것을 확인할 수 있다.
반면, L1과 Adversarial Loss를 함께 사용한 경우, 결과물이 상당히 Realistic하고 Sharp한 동시에 이러한 artifact 문제가 상당 부분 완화되었다.
위의 Table 1은 L1 Loss와 GAN Loss, 그리고 cGAN Loss에 대한 실험을 진행한 결과물이다. GAN Loss만을 활용하였을 경우 성능이 가장 떨어지지만, L1 Loss와 조합하여 사용하였을 경우 L1 + cGAN Loss에 필적하는 성능을 보이는 것을 확인할 수 있다.
GAN Loss 만을 단독으로 사용하였을 경우에는 Generator가 단순히 Discriminator를 속이는 것에만 집중하여 거의 동일한 Sample만을 출력하게 된다. 여기에 L1 Loss를 조합하게 되면, Generator는 Discriminator를 속이는 것 뿐 만 아니라, Ground Truth Image와 최대한 같은 출력을 내도록 학습이 진행된다. 이러한 이유로 두 Loss를 조합하였을 경우 상술한 한계점이 어느정도 상쇄되어 위의 Table 1과 같이 납득할 만한 결과가 나오게 된다.
반면 GAN이 아닌 cGAN Loss를 활용하였을 경우는 Generator가 Conditioning 정보를 통하여 input과 output 사이의 mismatch를 어느 정도 penalize할 수 있기 때문에 단독으로 사용해도 어느 정도 납득할 수 있는 결과물을 출력하게 된다. 또한, L1 Loss와 결합하였을 경우 가장 뛰어난 퍼포먼스를 내었다.
Skip Connection
위의 Figure 5와 Table 2는 Generator에서의 Skip Connection의 유무와 Loss 함수의 조합을 복합적으로 비교한 것이다.
Encoder-Decoder(Skip Connection X)와 U-Net(Skip Connection O) 모두 L1 Loss만을 통하여 학습하였을 경우에는 blurry한 결과물을 출력한다. 하지만, cGAN Loss와 조합하여 학습을 진행하였을 경우, Encoder-Decoder structure는 Realistic과는 거리가 먼, artifact 투성이인 결과를 출력하는 반면, U-Net structure는 완성도 높은 결과를 출력하는 것을 확인할 수 있다.
PatchGAN
마지막으로 Discriminator의 input patch size에 따른 실험 결과를 살펴보면, 70x70 사이즈까지 patch의 크기가 커질수록 결과물의 전반적인 퀄리티는 올라가지만, 그 이상의 크기를 가진 patch를 통해 training하였을 경우 오히려 스코어가 떨어지는 것을 확인할 수 있다.
이는 높은 input resolution으로 인하여 더 많은 parameter를 최적화해야 하고, 이 때문에 training 난이도가 다소 높아졌기 때문이라고 저자들은 추정한다.