Pix2Pix
Image-to-image translation with conditional adversarial networks, 2017, CVPR

Abstract
본 논문은 Conditional Generative Adversarial Network(CGAN)을 사용하여 한 이미지를 다른 domain(style)의 이미지로 변환하는 방법을 제안하였고 기존의 방식들은 특정 task마다 loss나 architecture를 specific하게 design해주었던 것과 달리 하나의 structure를 사용하여 모든 tasks에 적용할 수 있도록 base model을 제공했다는 점이 큰 contribution이라고 할 수 있다.
- 목표: image-to-image translation의 모든 문제에 대한 공통의 프레임워크 개발
- Contribution
- 다양한 문제에서 conditional GAN이 합리적인 결과를 산출한다는 것을 증명함
- 좋은 결과를 얻기에 충분히 간단한 프레임워크를 제시하고, 몇가지 중요한 모듈 선택의 효과를 분석함
Keyword
- Image-to-image translation: 충분한 데이터가 주어졌을 때, 한 장면을 가능한 다른 표현으로 변환하는 작업
- SSIM(structural similarity index measure): 두 이미지의 유사도를 luminance, contrast, structure 3가지 요소를 이용하여 비교하는 방법
- Feature matching loss: 어떤 함수를 통해 feature map을 추출한 후, feature map 간의 거리를 계산하여 이미지 간의 유사성을 측정함
PatchGAN
- 이미지를 패치단위로 나눠 예측
- 최종 discriminator의 출력은 모든 패치에 대한 값을 평균 냄
"연산량 감소 + 속도 증가 + 임의로 큰 이미지에 적용 가능" 하다는 장점들이 존재
선행연구
- [9] A. Buades, B. Coll, and J.-M. Morel. A non-local algorithm for image denoising. In CVPR, 2005.
- 이미지의 모든 픽셀에 대해 비슷한 패턴을 갖는 영역의 평균 사용하는 non-local algorithm 제안
- [11]T. Chen, M.-M. Cheng, P. Tan, A. Shamir, and S.-M. Hu. Sketch2photo: internet image montage. ACM Transactions on
Graphics (TOG), 28(5):124, 2009.
- 변환할 최적의 이미지를 이미지 검색 시스템을 통해 찾는 방법
- [18] D. Eigen and R. Fergus. Predicting depth, surface normals and semantic labels with a common multi-scale convolutional
architecture. In ICCV, 2015.
- semantic labeling을 다중스케일 합성곱 신경망 구조를 이용하는 방법 제안
- [58] S. Xie and Z. Tu. Holistically-nested edge detection. In ICCV, 2015
- 이미지에서 물체의 경계를 검출할 수 있는 심층신경망인 HED를 사용하여 윤곽선을 검출하는 방법 제안
- [62] R. Zhang, P. Isola, and A. A. Efros. Colorful image colorization. ECCV, 2016.
- 깊은 CNN 구조를 사용하여 색상의 분포를 추정하는 알고리즘 제안
GAN
- GAN은 데이터에 적응하는 loss를 학습하기 때문에 blurry 이미지의 경우, discriminator가 가짜 이미지로 판별하여 이미지 생성 task를 해결함
- CGAN은 입력 이미지에 조건(condition)을 적용하여 그에 상응하는 출력이 나오도록 유도하며, 이는 image-to-image translation에 적합함
Method
Generator

- Encoder-decoder에 skip connection이 추가되어 feature를 직접 공유하는 U-Net을 사용
- 이전 연구들은 autoencoder를 사용하지만, 많은 이미지 변환 문제의 경우 입출력 간 많은 양의 low-level information을 공유해야 함

- 일반적인 image-to-image translation 문제를 해결하기 위해 입력과 출력이 외관상 달라보이지만, 입력과 출력이 모두 동일한 기본 구주의 렌더링 형태를 가진 형태로 구성됨
- 이는 이미지의 구조가 대략적으로 정렬되어 있다는 것을 고려하여 설계함
Discriminator

- High-frequency structure를 모델링하도록 제한하고, L1 term이 low frequency 정보를 잡아내도록 역할 분담
- PatchGAN을 사용하여 local image patch로 이미지를 제한적으로 관찰하며, 고주파 구조에 집중하도록 설계
Objective

LGAN(G,D)LL1(G)=Ey[logD(y)]+=Ex,z[log(1−D(G(x,z))].=Ex,y,z[∣∣y−G(x,z)∣∣1].
Loss function
- 해당 논문은 이전 논문과 달리, L1 distance를 사용함
- L2 distance는 블러효과를 발생한다는 단점이 있음
- L1 norm(Mahatten distance): 벡터의 모든 원소들의 차이의 절댓값을 합한 값
- L2 norm(Euclidean distance): 벡터들의 모든 원소들의 차이의 제곱의 합을 루트로 씌워준 값
Optimization
- Generator를 학습시킬 때 log(1−D(x,G(x,z)))에 최소화하지 않고, log(D(x,G(x,z)))에 최대화하는 방향으로 학습
- Discriminator 최적화시, objective를 2로 나눠 generator보다 천천히 학습하게 의도
- Minibatch SGD, adam optimizer 사용
Metrics
유익한 자료 감사합니다.