논문: ICCV 2017 Open Access Repository
code: junyanz/pytorch-CycleGAN-and-pix2pix: Image-to-Image Translation in PyTorch
0. Summary

Image-to-image translation은 입력 이미지와 출력 이미지 간의 매핑을 학습하는 것을 목표로 하며, 정렬된 이미지 쌍의 학습 데이터를 사용한다. 그러나, 많은 task에서 쌍으로 이루어진 학습 데이터는 제공되지 않을 수 있다. 따라서, 본 연구에서는 쌍으로 이루어진 예제가 없는 상황에서 소스 도메인 $X$에서 타겟 도메인 $Y$로 이미지를 변환하는 방법을 제안한다.
본 논문의 목표는 생성된 이미지 $G(X)$의 분포가 타겟 도메인 $Y$의 분포와 구별되지 않도록 하는 매핑 함수 $G$를 학습하는 것 이다. ($G:X \rightarrow Y$) 이를 위해 역매핑 $F: Y \rightarrow X$와 결합하고, cycle consistency loss를 제안한다. ($F(G(X)) \approx X$, 반대도 동일)
1. Introduction
Image-to-image translation은 주어진 한 표현(x)을 다른 표현(y)로 변환하는 작업으로, 예를 들어, 흑백 이미지를 컬러로 변환하거나, 이미지를 의미적 라벨로, 엣지 맵을 사진으로 변환하는 작업들을 말한다. 컴퓨터 비전, 이미지 처리, 그래픽스 분야에서의 수년간의 연구는 {x,y} 쌍의 예제가 주어지는 지도 학습 환경(supervised setting)에서 강력한 변환 시스템을 개발해왔다. 그러나, 쌍으로 이루어진 학습 데이터를 얻는 것은 어렵고 비용이 많이 든다. 따라서, 쌍으로 이루어진 입력-출력 예제가 없는 상태에서 도메인 간 변환을 학습할 수 있는 알고리즘이 필요하다.
도메인 간에 어떤 기본적인 관계가 존재한다고 가정한다. 예를 들어, 두 도메인이 동일한 기본 세계의 서로 다른 렌더링이라고 가정하고, 이 관계를 학습하려 한다. 이 관계를 학습함으로써,쌍으로 이루어진 예제의 형태로 Supervised-learning이 가능한 것은 아니지만, 도메인 X에 있는 이미지 집합과 도메인 Y에 있는 이미지 집합이 서로 다른 집합이라는 수준에서 Supervised-learning이 가능해진다.

매핑 $G: X \rightarrow Y$를 학습하여 $\hat y = G(x), x \in X$의 출력이 $y \in Y$ 와 구별되지 않도록 하는 (1)적대적 손실을 사용한다. 최적의 G는 도메인 $X$를 도메인 $\hat Y$로 변환하여 $Y$와 동일한 분포를 가지게 한다. 그러나 이러한 변환이 개별 입력 $x$와 출력 $y$를 의미 있는 방식으로 매칭 시키는 것은 아니다.
개별 입력 $x$와 출력 $y$를 연결하기 위해서 더 많은 구조를 추가한다. 저자는 translation은 "cycle consistent" 해야 한다는 성질을 이용한다. 예를 들어, $G: X \rightarrow Y$와 $F: Y \rightarrow X$라는 번역기가 있을 때, $G$와 $F$ 는 서로의 역함수여야 한다는 점이다. 이러한 구조적 가정을 적용하여 $G$와 $F$를 동시에 학습하여, $F(G(x)) \approx x$ 및 $G(F(y)) \approx y$를 유지하도록 (2)사이클 일관성 손실(cycle consistency loss)를 추가한다.
도메인 X와 Y에 대해 (1)적대적 손실과 (2)사이클 일관성 손실을 적용하면, 쌍으로 이루어지지 않은 image-to-image translation에 대해 수행할 수 있게 된다.
2. Related work
Generative Adversarial Networks (GANs)
GAN은 이미지 생성, 이미지 편집, 표현 학습(representation learning), text2image, 이미지 복원, 미래 예측 등 다양한 분야에 사용되고 있다. GAN의 성공의 핵심 요인은 적대적 손실(adversarial loss)에 있다. 이는 생성된 이미지가 실제 이미지와 구분할 수 없도록 만드는 방식이다. 본 논문에서는 이러한 적대적 손실을 사용해 매핑을 학습함으로써, 변환된 이미지가 타깃 도메인의 이미지와 구분될 수 없도록 한다.
Image-to-Image Translation
본 논문의 접근 방식은 pix2pix 프레임워크를 기반으로 한다. 이는 조건부 생성적 적대 신경망(conditional generative adversarial network)을 사용하여 입력 이미지를 출력 이미지로 매핑하는 방식을 학습한다. 그러나 기존 연구와는 달리, 쌍으로 학습된 예시(paired training examples)를 전혀 사용하지 않고 매핑을 학습한다.
Unpaired Image-to-Image Translation
$X$와 $Y$라는 두 데이터 도메인을 연결하는 것을 목표로 하는 비지도 학습을 의미한다.
Cycle Consistency
Visual tracking 분야에서 forward-backward consistency를 강제하는 것은 오랫동안 표준적인 기법으로 사용되어 왔다고 한다. 객체를 전방 방향으로 tracking 한 후, 다시 후방 방향으로 tracking했을 때 원래 위치와의 일치 여부를 확인하는 방식이다.
본 연구에서는 유사한 손실 함수를 도입하여 $G$와 $F$가 서로 일관성을 갖도록 유도한다.
3. Formulation

3.1 Adversarial Loss
두 매핑 함수 $G, F$에 대해 적대적 손실을 적용한다. 매핑 함수 $G: X \rightarrow Y$와 그에 대한 판별기 $D_Y$의 objective function은 다음과 같이 표현된다.
$$L_{GAN}(G, D_Y, X, Y) = E_{y \sim p_{data}(y)} [log D_y(y)] + E_{x \sim p_{data}(x)} [log(1-D_Y(G(x)))]$$
$G$는 도메인 $Y$의 이미지와 유사한 $G(x)$를 생성하려고 시도하며, $D_Y$는 변환된 샘플 $G(x)$와 실제 샘플 $y$를 구별하려고 한다. 즉, 적대적 학습을 통해 이론적으로 매핑 $G$와 $F$가 각각 타겟 도메인 Y, X와 동일한 분포를 가지는 출력을 생성하도록 학습한다.
매핑함수 $F: Y \rightarrow X$와 그에 대한 판별기 $D_X$에 대해서도 같은 적대적 손실을 도입한다. ($L_{GAN}(F, D_X, Y, X)$)
3.2 Cycle Consistency Loss
Image-to-image translation을 위해, $x \rightarrow G(x) \rightarrow F(G(x)) \approx x$를 만족시켜야 한다. 이를 forward cycle consistency라고 부른다. Figure 3 (b), (c)에서 보여진 것 처럼, 도메인 Y의 각 이미지 y에 대해서도 backward cycle consistency를 만족해야 한다. (즉, $y \rightarrow F(y) \rightarrow G(F(y)) \approx y$)
이를 유도하기 위해 다음과 같은 consistency loss를 사용한다.
$$L_{cyc}(G,F) = E_{x \sim p_{data}(x)} [||F(G(x))-x||_1] \\ + E_{y \sim p_{data}(y)} [|G(F(y))-y||_1] $$
3.3 Full Objective
본 논문에서 제안하는 전체 목적 함수는 다음과 같다.
$$L(G, F, D_X, D_Y) = L_{GAN}(G, D_Y, X, Y) + L_{GAN}(F, D_X, Y, X) + \lambda L_{cyc}(G,F)$$
여기서 $\lambda$는 두 loss term 간의 상대적 중요도를 조절한다.
최종적으로는 다음과 같이 나타낼 수 있다.
$$G^*, F^* = arg \space min_{G,F} \space max_{D_X,D_Y} \space L(G,F,D_X, D_Y))$$
매핑 함수 $G$와 $F$는 image-to-image translation을 더 잘 수행하여 Discriminator를 잘 속이는 방향으로, Discriminator는 실제 데이터와 가짜(생성된) 데이터를 더 잘 판별하는 방향으로 파라미터가 업데이트 된다.
4. Implementation
Training details
모델의 훈련 과정을 안정화하기 위해 다음 두 가지 기법을 적용함.
(1) 적대적 손실 함수에서, 음의 로그 우도를 최소 제곱 손실로 대체했다. 이 손실은 훈련 과정에서 더 안정적으로 작동하며, 더 높은 품질의 결과를 생성한다. 변경된 식은 다음과 같다.
$$L_{LSGAN}(G, D_Y, X, Y) = E_{y \sim p_{data}(y)} [(D_y(y)-1)^2] + E_{x \sim p_{data}(x)} [D_Y(G(x))^2]$$
(2) GAN 훈련 과정에서, G는 D가 학습한 특정 패턴만을 목표로 하기 때문에 최적화 방향이 불안정해지고, 모델이 수렴하지 못하는 현상이 발생할 수 있다. 이러한 문제(oscillation)를 해결하기 위해 Shrivastava 등이 제안한 방법을 따른다. D를 학습할 때, 최근 생성된 이미지만 사용하지 않고, 과거 생성된 이미지를 저장하여(논문에서는 50개) 사용함으로써, G의 변화에 과민하게 반응하는 문제를 해결한다.
5. Results
(1) image-to-image translation 을 최근 방법들과 비교한다. 실제 입력-출력 쌍(gt pairs)가 제공되는 데이터셋에서 이루어진다.
(2) 적대적 손실과 사이클 일관성 손실의 중요성을 연구하고, Ablation study를 비교한다.
(3) 쌍을 이루는 데이터가 존재하지 않는 다양한 응용 분야에서 논문에서 제안하는 알고리즘의 범용성을 입증한다.
5.1 Evaluation
CoGAN
두 도메인 $X$와 $Y$에 대해 각각의 생성기 $G_X: Z \rightarrow X$와 $G_Y: Z \rightarrow Y$를 학습하며, 초기 가중치를 공유함
Pixel Loss + GAN
$X$에서 $Y$로의 변환을 학습하기 위해 적대적 손실을 사용한다. 이 때, 정규화 항 $||X-\hat Y||_1$을 사용한다.
Feature Loss + GAN
사전 학습된 네트워크를 사용하여 RGB 픽셀 값 대신 deep image feature에 대한 $L_1$ 손실을 계산한다.
BiGAN / ALI
랜덤 노이즈 $Z$를 이미지 $X$로 매핑하는 생성기 $G: Z \rightarrow X$를 학습한다. 추가로, $F: X \rightarrow Z$를 학습하는 것을 제안한다. 이 방법을 제안한 논문에서는 잠재 벡터 $z$를 이미지 $x$로 매핑하기 위해 설계하였고, 본 논문(CycleGAN)에서 동일한 object function을 사용하여 source image $x$를 target image $y$로 매핑하는데 사용하였다.
pix2pix
pix2pix는 쌍으로 정렬된 학습 데이터를 사용하는 지도 학습 방식의 image-to-image translation 방법으로, 쌍을 이루지 않은 데이터를 사용하고도 상한선(upper bound)에 얼마나 근접할 수 있는지를 평가하기 위해 사용된다.

pix2pix는 supervised-learning 임을 감안하면, per-pixel acc, per-class acc, class IOU 전부 기존 unsupervised-learning 기반 방법들 대비 큰 성능의 향상을 보였다.


Fig 4와 Fig 5에서 볼 수 있듯이, 기준 모델들 중 어떠한 것도 설득력 있는 결과를 얻는 데 실패했다. 반면, 본 논문에서 제안한 CycleGAN은 지도 학습 방식인 pix2pix와 비슷한 품질의 translation을 생성할 수 있었다고 한다.

또한, Fig 6에서 전체 손실 함수의 구성 요소들 중 몇가지를 제거한 실험(Ablation)을 제시한다. GAN loss 및 Cycle-consistency loss를 제거한 경우 결과가 상당히 저하된 것을 볼 수 있다.
5.2 Applications
이 절에서는 쌍으로 된 학습 데이터가 존재하지 않는 여러 응용 분야에서 본 논문에서 제안한 방법을 시연한다.

Fig 7에서 Object Transfiguration, Season Transfer 을 확인할 수 있다.

Fig 8에서는 Collection Style Transfer 를 확인할 수 있다. 본 논문에서는 Neural style transfer 연구와는 달리, 특정 작품 하나의 스타일을 전이하는 것이 아니라, 전체 예술 작품의 집합(예: 고흐 작품)의 스타일을 모방하도록 학습한다고 한다.

Fig 9에서는 Photo Generation from Paintings 를 확인할 수 있다. 이 때, painting $\rightarrow$photo 변환에서는 입력과 출력 간 색 조합을 유지하도록 새롭게 $L_{identity}$를 정의하여 추가한다. $L_{identity}$가 없을 경우, 생성기 G와 F는 입력 이미지의 색을 불필요하게 변경할 수 있다.
$$L_{identity}(G,F) = E_{y \sim p_{data}(y)}[|| G(y)-y ||_1] + E_{x \sim p_{data}(x)}[|| F(x)-x ||_1]$$
6. Limitations and Discussion

CycleGAN이 unsupervised learning 기반 image-to-image translation 에서 많은 경우에서 설득력 있는 결과를 달성했지만, 결과가 항상 긍정적인 것은 아니라고 한다. 대표적인 예시는 Fig 12에 나타나 있다.
색상과 텍스처 변환이 포함된 작업에서는 Experiments에서 다룬 경우 처럼, 종종 성공적으로 작동한다. 하지만, 기하학적 변환이 필요한 작업에서는 성공하지 못했다. 예를 들어, dog $\rightarrow$ cat 변환 작업에서는 입력 이미지에 최소한의 변경만 가하도록 퇴화된다.
일부 실패 사례는 학습 데이터셋의 분포 특성으로 인해 발생한다. 예를 들어, horse $\rightarrow$ zebra 작업에서의 결과는 완전히 실패했다. 이는 모델이 ImageNet에 사람이 말을 타고 있는 사진이나 얼룩말을 타고 있는 사진이 포함되어 있지 않기 때문이라고 한다.