-
[논문 리뷰] (CycleGAN) Unpaired Image-to-Image Translationusing Cycle-Consistent Adversarial Networks공부/CV & DL 논문 리뷰 2021. 6. 19. 16:39
본 논문은 unpaired dataset을 다뤄야하는 많은 NN 문제들에 적용해볼 수 있는 cycle-consistency loss에 대해 다룬다.
https://www.youtube.com/watch?v=Fkqf3dS9Cqw
CycleGAN의 저자이신 Taesung Park 님의 네이버 발표 영상이다.
핵심에 대해 넘나 친절하고 자세히 설명해 주셨는데,
- GAN이 신기하고 잘 되는 핵심은 loss가 고정된 것이 아닌 유동적이기 때문일 수 있다 -> adversarial loss의 계산에 활용되는 discriminator 또한 학습과정에서 변화함.
- 본 연구에서는 Unpaired dataset 으로 translation 하는 방법에 대해 연구한다. 그렇다면, 입력 x에 대한 타겟 y가 정해지지 않았다는 말인데.. 그 말은 y의 역 타겟 x가 어떤것이든 상관이 없다는 말이고, 이런 방식으로라면 일반적인 GAN의 학습 방식으로 접근할 때 어떠한 입력 영상을 주던 y로 가는 방법에 대해 학습하게 될 것이며, 결과적으로 이렇게 학습된 네트워크는 입력영상 정보는 활용하지 않고 입력 영상과는 전혀 관계없지만 그럴듯한 영상을 만들어낼 것인데... 이걸 어떻게 해결하지? -> 문제 정의 핵심! (16:29)
- GAN을 잘 이용하기 위해서는 mode collapse를 억제하고 원하는 결과를 얻어내도록 하는것이 핵심이다.
- Cycle consistency loss의 핵심은, G에 의해 생성된 G(x)가 F에 의해 다시 원래 입력 x로 돌아가는 F(G(x)) = x 로써 '복원될 수 있을 정도로만' 이미지를 변형시키려 한다는 것이다. (18:00)
- 또한, 클래스 x와, 클래스 y가 있으며 x -> y로의 translation을 수행하는 mapping을 G라 할 때, 물론 G(x)와 F(G(x)) 를 loss의 계산에 활용하지만 여기에 더해 F(y)와 G(F(y)) 또한 loss의 계산에 활용하여 네트워크의 translation 능력을 더욱 극대화 시키게 된다. (19:39)
- U-Net은 가볍지만 bottle-neck 구조로 인해 이미지 디테일 보존이 어렵다. 따라서 ResNet구조 활용.
- LSGAN 활용 -> stable training, better results (34:24)
- GAN loss 를 억제해주는 guiding force 역할을 하는 L1 Loss를 함께 사용하는것이 좋다. 하지만, unpaired dataset 조건에서 L1 loss는 어떻게 사용하지? (35:50)

Cycle consistency loss 그림 요약, 황색의 L1 loss는 영상의 (35:50) 설명을 참고, 즉 학습된 매핑 G는 결과적으로 어떤 입력에 대해서든 클래스 Y인 이미지를 생성해야 하기 때문에, Y클래스 이미지를 입력으로 받아도 Y클래스를 생성해야 한다. 즉 Y->G(Y)는 Identity function과 같은 관계이다. Abstract
Image-to-image translation은 입력 영상과 출력 영상 training pair가 존재할 때 이들의 mapping 이 어떻게 이루어져 있는지를 분석하는 방식으로 많이 연구되어 왔다. 하지만, 매우 많은 real world problem들은 이렇게 training pair가 존재하는 경우는 거의 없다고 봐도 무방한데, 본 논문에서는 pair가 존재하지 않는 상황에서의 source domain X -> target domain Y 로의 translate mapping을 G라 하였을때, 이 G에 대해 학습하는 방법을 연구한다. (G(X) -> Y)
본 논문의 goal은 adversarial loss를 활용하여 학습된 G로부터 생성된 G(X)와 Y를 구분하지 못 할 정도로 유사하게 만드는 것이다. 이를 위해 F(Y) -> X 관계인 inverse mapping F를 G와 한 쌍으로 묶었으며 이로부터 F(G(X)) = X 를 목표로 하는 cycle consistency loss를 도입하게 된다.
Introduction
본 논문에서는 input-output이 쌍을 이루지 않을 때 input domain과 output domain간 translation을 하는 방법에 대해 연구한다. 먼저 한가지의 가정을 하는데, 두 도메인 사이에 모종의 관계가 존재한다는 것을 가정하고 시작한다 (해당 도메인이 갖는 특징들이 명확히 다르다는 것인 듯).
도메인 X로부터 도메인 Y로의 mapping을 G라 하고, 우리가 G에 대한 네트워크를 학습시켰을때, 아래의 관계가 성립해야 한다.

학습된 매핑 G에 의해 생성된 G(x)는 y와 구별할 수 없어야 한다. 이와 같은 관계는 GAN의 기본 원리인, generator에 의해 성셍된 데이터가 타겟 클래스 데이터의 분포에 가까워지면서 결국 '그럴듯한' 타겟 클래스가 되어지는 원리이다.
하지만, 저자는 일반적인 GAN의 방식(입력에 대해 generator를 거쳐 생성된 출력 데이터와 타겟 데이터의 GAN loss를 계산하는 방식)으로는 본 논문에서 해결하려는 unpaired image-to-image translation의 mode collapse를 피할 수 없다고 설명한다. 따라서 loss에 대한 고민이 더욱 필요했고, 저자는 "cycle consistent" 구조를 도입을 생각하게 되는데, X to Y mapping을 G라 하고, Y to X mapping을 F라 한다면 G와 F는 서로 bijection이 가능해야 하는 구조이다.

bijection이 가능한 G와 F의 관계, loss 또한 두 종류 모두 계산하여 학습이 가능하다. 저자는 이렇게 bijection이 가능한 G와 F의 관계로부터 계산되는 loss를 cycle-consistency loss라 하며, 이 loss는 본 연구의 핵심이다.
Related work
Unpaired image-to-image tanslation 관련 논문:
- DualGAN: Unsupervised Dual Learning for Image-to-Image Translation
Cycle consistency 관련 논문:
- (structure from motion) Disambiguating visual relations using loop constraints
- (depth estimation)Unsupervised Monocular Depth Estimation with Left-Right Consistency
Formulation
Adversarial loss

- G: X->Y 와, 이를 구분하기 위한 Dy
- F: Y->X 와, 이를 구분하기 위한 Dx
- 따라서 base모델은 총 두개의 Generator와 두 개의 Discriminator 로 학습되는듯 함.
Cycle consistency loss
- forward cycle consistency

- backward cycle consistency

- cycle consistency

Full objective


Training details
- 모델의 학습을 안정화 시키기 위해 저자는 LSGAN을 도입하였다. (상기 adversarial loss formulation인 L_GAN 대체)

- model oscillation을 줄이기 위해 Shrivastava et al's strategy를 활용한다.
- DX and DY using a history of generated images rather than the ones produced by the latest generative networks. We keep an image buffer that stores the 50 previously generated images.