(2017)Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks

Gyuha Park·2021년 8월 14일
0

Paper Review

목록 보기
15/33
post-thumbnail

0. Abstract

Image-to-image translation은 paired된 이미지 세트를 이용해 input 이미지와 output 이미지를 mapping하는 것이 목표인, 컴퓨터 비전의 한 분야이다. 하지만 paired된 학습 데이터를 얻는 것은 거의 불가능하다. 본 논문은 paired된 이미지 세트 없이 XX라는 domain으로 부터 얻은 이미지를 trage domain YY로 바꾸는 방법을 제안한다.

목표는 Adversarial loss를 이용해, G(x)G(x)로 부터의 이미지 데이터의 분포와 YY로 부터의 이미지 데이터의 분포가 구분 불가능하도록 G:XYG:X\rightarrow Y를 학습하는 것 이다. 이러한 mapping은 제약이 적어 F:YXF:Y\rightarrow X와 같은 역방향 mapping을 진행했고, F(G(x))F(G(x))XX와 유사해지도록 강제하는 cycle consistency loss를 도입했다.

Paired 이미지 세트가 아님에도 collection style transfer, object transfiguration, season transfer, photo enhancement와 같은 task에서 높은 결과가 나타났다.

1. Introduction

본 논문에서는 unpaired 이미지 세트를 어떻게 mapping할 지를 제안한다.  Domain들 간에는 몇 가지 근본적인 관계가 존재한다고 가정했다. y^\hat{y}yy를 구분하도록 adversary하게 학습된 모델을 사용해 이미지 yYy\in Y와 구분되지 않는 output 이미지 y^=G(x), xX\hat{y}=G(x),\ x\in X를 출력하는 G:XYG:X\rightarrow Y를 학습한다. 하지만 이런 식의 translation이 각각의 input xxyy가 의미 있는 방식으로 paired 되는 것을 보장하진 않는다. 실제로 단독의 adversarial objective는 학습하기가 어렵다. 위와 같은 과정은 잘 알려진 문제인 mode-collapse로 이끌곤 한다.

이러한 문제는 목적 함수에 구조를 추가하도록 요구한다. 따라서 translation이 cycle consistent 이어야 한다는 속성을 이용한다. 네트워크의 구조를 generator인 GGFF가 동시에 학습하도록 하고 F(G(x))x, F(G(x))xF(G(x))\approx x,\ F(G(x))\approx x하게 하는 cycle consistency loss를 추가하였다. Cycle consistency loss와 adversarial losses를 XXYY에 적용함으로써 전체 목적 함수가 완성된다.

2. Formulation

목표는 주어진 domain XXYY를 mapping하는 함수를 학습하는 것이다.

  • xxXX에 속하는, yyYY에 속하는 샘플이다.
  • xx\simpdata(x), ypdata(y)p_{data}(x),\ y\sim p_{data}(y)이다.
  • 위의 그림과 같이 모델은 두 개의 mapping 함수 G:XYG:X\rightarrow YF:YXF:Y\rightarrow X를 포함한다.
  • 두 개의 adversarial discriminator DXD_XDYD_Y를 도입한다.
  • 목적 함수는 adversarial losses와 cycle consistency losses, 두 종류의 항으로 구성되어 있다.

1) Adversarial Loss

두 mapping 함수 모두에 adversarial losses를 적용했다.

함수 G:XYG:X\rightarrow YDYD_Y에 대해서는 아래와 같은 목적 함수를 적용한다.

LGAN(G,DY,X,Y)=Eypdata(y)[logDY(y)]+Expdata(x)[log(1DY(G(x)))]L_{GAN}(G,D_Y,X,Y)=\mathop{\mathbb{E}}_{y\sim p_{data}(y)}[\log D_Y(y)]+\mathop{\mathbb{E}}_{x\sim p_{data}(x)}[\log (1-D_Y(G(x)))]

GG는 위의 함수를 최소화 시키고, 반대로 DD는 위의 함수를 최대화 시키고자 한다.

minGmaxDYLGAN(G,DY,X,Y)\min\limits_{G}\max\limits_{D_Y}L_{GAN}(G,D_Y,X,Y)로 나타낼 수 있다. 함수 F:YXF:Y\rightarrow XDXD_X에 대해서도 동일한 adversarial loss를 적용한다. 이는 minGmaxDXLGAN(F,DX,Y,X)\min\limits_{G}\max\limits_{D_X}L_{GAN}(F,D_X,Y,X)로 나타낼 수 있다.

2) Cycle Consistency Loss

Introduction에서 언급한 것과 같이 mode collapse 문제가 생길 수 있기 때문에, adversarial loss 단독으로는 mapping 함수의 제대로 된 학습을 보장하기 어렵다. 가능한 mapping 함수의 공간을 줄이기 위해 아래의 그림과 같이 mapping 함수는 cycle-consistent 해야 한다.

이러한 과정을 cycle consistency loss를 이용해 유도했다. 식은 아래와 같습니다.

Lcyc(G,F)=Expdata(x)[F(G(x))x1]+Expdata(y)[G(F(y))y1]L_{cyc}(G,F)=\mathop{\mathbb{E}}_{x\sim p_{data}(x)}[||F(G(x))-x||_1]+\mathop{\mathbb{E}}_{x\sim p_{data}(y)}[||G(F(y))-y||_1]

실험에서 위 식의 L1 norm을 adversarial loss로 대체했었으나 성능 향상을 관찰할 수 없었다.  cycle consistency loss가 유도한 결과는 아래 그림에서 볼 수 있다.

3) Full objective

목적 함수 전체는 다음과 같다.

L(G,F,DX,DY)=LGAN(G,DY,X,Y)+LGAN(F,DX,Y,X)+λLcyc(G,F)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는 항들의 상대적인 중요도에 따라 결정된다. 최종 목표는 다음과 같다.

G,F=minG,FmaxDX,DYL(G,F,DX,DY)G^*,F^*=\min\limits_{G,F}\max\limits_{D_X,D_Y}L_(G,F,D_X,D_Y)

이후 파트에서 adversarial loss만 단독으로 사용할 때, cycle consistency loss만 단독으로 사용할 때와 비교한다.  그 결과 두 목적 함수 adversarial loss cycle consistency loss 모두 중요한 역할을 하고 있음을 확인했다.

3. Implementation

1) Network Architecture

Generative 모델로 neural style transfer와 super-resolution에 좋은 결과를 보인 논문에서 사용된 구조를 채택했다.

  • 두 개의 stride-2 convolutions
  • several residual blocks ( = shortcut, skip connection)
  • 두 개의 fractionally strided convolutions (stride = 1/2)를 포함.
  • 128x128 이미지에는 6 블록, 256x256 혹은 그 이상의 해상도의 이미지에는 9 블록을 사용.
  • Instance normalization을 이용.
  • Discrminator는 70*70 PatchGAN을 사용.

2) Training details

모델 학습 과정을 안정화 시키기 위해 두 가지 기술을 적용했다.

첫 번째는 LGANL_{GAN}의 negative log likelihood 함수를 least-squares loss로 대체했다는 것이다. 이 loss가 학습 과정에서 더 안정적이었고 더 좋은 품질의 결과를 낳았다. 실제로 GAN Loss LGAN(G,D,X,Y)L_{GAN}(G,D,X,Y)에 대해, GG는 Expdata(x)[D(G(x)1)2]\mathop{\mathbb{E}}_{x\sim p_{data}(x)}[D(G(x)-1)^2]를, DD는 Eypdata(y)[D(G(y)1)2]+Expdata(x)[D(G(x))2]\mathop{\mathbb{E}}_{y\sim p_{data}(y)}[D(G(y)-1)^2]+\mathop{\mathbb{E}}_{x\sim p_{data}(x)}[D(G(x))^2]를 최소화하는 방향으로 학습한다.

두 번째는 oscillation을 줄이기 위해 discriminator를 최신의 generator가 생성한 하나의 이미지를 이용하기보다는 지금까지 생성된 이미지들을 사용했다는 것이다. 이전에 생성된 미지 50개를 저장할 수 있는 버퍼를 이용했다.

모든 실험에 있어

  • λ\lambda는 10으로 설정.
  • Batch size는 1이고, Adam optimizer를 사용.
  • 처음 100 epoch는 learning rate 0.0002를 유지하고, 이후 100 epoch에서는 선형적으로 0에 가까워지게 lr을 줄여가며 학습했다.

4. Results

1) Evaluation

pix2pix와 같은 데이터 세트와 metric을 사용해서 몇 가지 baseline과 양적, 질적 두 기준 모두 비교했다.  Cityscapes 데이터 세트에서 semantic label \leftrightarrow photo,  Google Maps 데이터 세트에서 aerial photo \leftrightarrow map task를 포함한다. 또한 loss function에 대한 연구도 진행했다.

2) Evaluation metrics

  • AMT perceptual studies: 사람을 대상으로 한 실험이다. 참가자들에게는 photo 혹은 map과 가짜 이미지를 보여준 후 그들이 진짜라고 생각하는 것을 선택하게 했다. 처음 10개에 대해서는 선택이 옳았는지 틀렸는지 피드백을 주었고, 이후 40개를 이용해 알고리즘이 참가자를 속였는지 테스트했다.
  • FCN score: Perceptual studies가 얼마나 그래픽이 실제 같은지 테스트하는 데에 있어서는 매우 좋은 기준이었음에도, 또한 사람을 대상으로 한 실험이 필요하지 않은 automatic 한 양적 기준을 찾고 싶었다. 이를 위해 FCN score를 채택했다.
  • Semantic segmentation metrics: Photo를 labeling 하는 성능을 평가하기 위해 per-pixel accuracy와 IoU를 포함하는 기본적인 metric을 이용했다.

3) Comparison against baselines

CycleGAN이 대체로 우수한 성능을 보이고 있는 것을 확인할 수 있습니다. 2번째, 3번째 표에서는 pix2pix가 조금 더 우수한 성능을 내고 있다.

4) Analysis of the loss function

Loss function을 다양하게 바꾸어가며 실험을 진행했다.

최종적으로 채택한 방법인, adversarial loss와 cycle loss를 사용할 때가 성능이 가장 좋았다.

5. Application

본 논문에서는 unpaired 이미지 세트 task에 대해 모델을 적용한 결과를 여러 가지 보여준다.

그림으로부터 사진을 생성하는 task를 수행하는 중, generator가 종종 낮의 그림을 해질녘의 사진으로 바꾸는 것과 같은 문제가 있었다. 따라서 input과 output의 색 구성을 보존하기 위해 추가적인 loss인 LidentityL_{identity}를 도입하였다. 즉, 그림이 아닌 사진이 input으로 들어왔을 때는 사진 자신을 output으로 출력하도록 generator를 학습한다.

Lidentity(G,F)=Expdata(x)[F(x)x1]+Expdata(y)[G(y)y1]L_{identity}(G,F)=\mathop{\mathbb{E}}_{x\sim p_{data}(x)}[||F(x)-x||_1]+\mathop{\mathbb{E}}_{x\sim p_{data}(y)}[||G(y)-y||_1]

다른 적용 사례도 확인해보자.

6. Limitations and Discussion

많은 경우에서 CycleGAN 방식이 좋은 성능을 보였지만, 모든 task에서 결과가 긍정적이었던 것은 아니었다. 아래 그림에서 몇 가지 실패 사례를 확인할 수 있다.

여러 가지 유형으로 실패 원인을 분류했다. 총 3가지 정도가 있었는데, 직관적으로 이해할 수 있었던 이유 한 가지를 소개하면 말 이미지 세트에는 사람이 타있는 사진이 많은 반면, 얼룩말 이미지 세트에는 사람이 타 있는 사진이 거의 없다. 이미지 세트 분포의 특징에서 차이가 나기 때문에, 사람이 말을 타고 있는 사진에 대해서는 모델이 잘 변환하지 못하는 모습을 보였다.

7. Apply to synthetic crane images

GitHub

A Domain : 크레인 합성 이미지

B Domain : 실제 크레인 이미지

1) Loss

2) Test (100 epoch)

0개의 댓글