본문 바로가기
Paper Review/Style Transfer

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

by HanByol Jang 2021. 7. 31.
728x90

CycleGAN은 unpaired dataset을 가지고 style을 변형시키는 Image to Image Translation 영역의 논문입니다.

2017년 ICCV에 제출된 논문으로 UC Berkeley AI lab 연구진들의 논문입니다.

처음 공개되었을 당시 획기적인 충격을 주었던 논문입니다.

https://arxiv.org/abs/1703.10593


Unpaired Dataset => Unsuperviesd Learning

1. Paired Dataset => Supervised Learning

Dataset과 Label이 1:1로 매칭되어 있는 데이터셋을 의미합니다.

Task 목적에 따라 labeling이 다릅니다.

Classification labeling

Classification의 경우 label 데이터는 각 class를 나타낼 수 있도록 one-hot 인코딩으로 구성됩니다.

Segmentation labeling

Segmentation의 label 데이터는 일종의 pixel by pixel classification으로, mask 이미지로 구성됩니다.

MR to CT (Style transfer)

Transformation (=style transfer) 데이터는 input 이미지로부터 target 이미지를 만드는 것으로, label 데이터는 바꾸고자 하는 이미지로 구성됩니다. => 논문지에서 다루는 task

 

이렇게 준비한 Input, Label의 관계를 학습하는 학습방법이 Supervised Learing입니다. (지도학습)

Supervised Learning process

이렇게 input 이미지를 넣었을때 ouput 이미지가 나오고 이 output 이미지가 label 이미지와 차이(loss)를 통해 학습이 진행됩니다.

2. Unpaired Dataset => Unsuperviesd Learning

논문에서 다루고 있는 영역인 style transfer의 경우 Dataset과 Label이 1:1로 매칭되어 있지 않는 경우가 대부분입니다.

위의 예시처럼 물체는 그대로인데 style만 바뀐 label을 얻기는 불가능에 가깝습니다.

죽은 모네가 살아돌아온다거나, 똑같은 크기의 똑같은 포즈를 하고 있는 얼룩말과 말이 존재한다거나...

아주 만약 가능한다 할지라도 신경망을 학습하기 위한 대용량의 데이터를 구축하는건 절대 불가능합니다.

 

이렇게 label이 1:1로 매칭되지 않는 경우(unpaired dataset) 진행하는 학습 방법을 Unsupervised Learning이라고 합니다. (비지도 학습)

Unsupervised Learning process

Unsupervised learning은 Input 이미지와 Label 이미지가 1:1로 매칭되서 학습하는 supervised learning과는 다르게, Input 데이터셋 전체와 Label 데이터셋 전체의 관계를 학습하는 전략입니다. (군과 군의 학습)


CycleGAN의 선행 모델

Unpaired dataset의 학습인 CycleGAN에 대한 설명하기 전 CycleGAN이 나온 배경을 간단하게 정리해보겠습니다.

 

(CNN -> GAN -> Pix2Pix -> CycleGAN 순서로 진화)

 

CycleGAN 저자의 이전 논문인 Pix2Pix는 paired로 존재하는 dataset에 대한 style transfer 논문입니다.

Paired dataset

1. L1 loss 기반 CNN 모델

Paired dataset의 학습에 기존에는 L1 loss를 통한 CNN 학습이 대세였지만 아래와 같은 단점도 존재했습니다.

L1 loss 결과

딥러닝의 기본 학습 전략은 loss를 최소화하는 것인데, L1 loss의 식을 보면 알수 있듯이 pixel 값의 차이의 평균으로 계산됩니다. 즉, 신경망 입장에선 loss를 줄이는게 목표이다보니 대충 blurr하게 만들어서 평균값을 계산할때 낮게 나오게 만들어 버리고, 완벽하다고 판단하고 더이상 학습을 하지 않습니다. 그러다보니 위의 예시 그림처럼 blurr하게 결과 영상을 만드는 경우가 CNN 학습에서는 허다합니다. 인간이 저 사진을 봤을때 blurr하다고 느끼는 것일뿐, neural network 입장에서는 loss값이 최소이기때문에 학습을 잘한 것이 됩니다.

 

2. Adversial loss 기반 GAN 모델

Adversarial loss 결과

이번에는 같은 dataset을 가지고 GAN 모델을 사용해보았습니다. GAN 네트워크의 loss로 사용하는 adversarial loss는 생성된 이미지가 실제 target 이미지군 같은지 아닌지를 판단하는 것으로 L1 loss를 사용했을때와 비교하여 이미지의 quality가 굉장히 좋아진 것을 확인할 수 있습니다. (burr한 이미지들은 실제 같지 않기 때문에 Discriminator를 통과 할 수 없음)

하지만 GAN loss가 pixel의 값으로 계산을 하는 것이 아니고, 실제 같은지 아닌지에 대한 확률값에 의한 학습이므로 Ground truth와는 상이한 결과를 보입니다.

 

3. Pix2Pix 모델

위 두가지 loss의 장단점을 합쳐서 만든 모델이 Pix2Pix모델입니다. 즉, L1 loss와 Adversarial loss를 합쳐만들었습니다. 

Pix2Pix 결과 

위의 결과처럼 L1 + cGAN을 사용했을때, Ground truth와 비슷하고 가장 실제같은 결과를 보여줍니다.


CycleGAN 원리(Loss)

1. Cycle Consistent Loss

CycleGAN의 핵심아이디어는 의외로 간단합니다.

Cycle 예시

저자는 Hello와 Bonjour로 비유를 합니다. 안녕이라는 단어인 hello를 불어로 바꾸면 bonjour가 되고, 이 불어를 다시 영어로 바꾸면 hello가 됩니다. 즉, 같은 것에 대해서는 순환적으로 변환을 해도 절대 바뀌지 않는다는 것입니다.

이 개념을 이미지 translation에 적용한 것 뿐입니다.

이미지에 적용한 cycle 개념

이 순환 모델은 아래와 같이 총 두개의 GAN 모델의 결합으로 구성됩니다.

두개의 GAN

X domain에서 Y domain으로 바꿔주는 GAN모델이 하나있고, Y domain에서 X domain으로 바꿔주는 GAN모델이 있습니다. 총 2개의 GAN모델이 합쳐진 모양입니다. 여기까지만 보면 단순하게 그냥  GAN 2개를 결합한것으로 가뜩이나 GAN이 위에서 살펴보았듯이 실제같지만 자기 맘대로 만들어내는 불안정하다는 단점이 있는데 2개를 결합하게 되면 더 불안정성이 증폭될 위험성이 큽니다.

여기에 저자는 해당 문제를 해결하고자 pix2pix에서 활용했던 L1 loss를 추가하게됩니다.

L1 loss란 앞서 살펴봤듯이 output과 label의 차이를 계산하는 loss입니다. 그러나 이 논문에서 사용하고 있는 dataset은 label이 없는 unpaired dataset이므로 label과의 L1 loss를 계산할 수 없습니다. 대신, 저자는 L1 loss를 활용하기 위한 아이디어를 아래와 같이 고안했습니다.

Cycle consistent loss

앞서 hello가 bonjour이 됬다가 다시 hello가 되어야 하는것과 같습니다. X를 가지고 1번 GAN의 generator가 Y'을 만들었고, 다시 이 Y'을 가지고 2번 GAN의 generator는 X'를 만들것입니다. 그러면 처음 X와 두개의 GAN을 거쳐 만들어진 X'은 같아야합니다. (X(hello) -> Y'(bonjour) -> X'(hello)) 즉, X-X'이 0으로 수렴해야만 하는 L1 loss 개념이 활용되는 것입니다.

마찬가지로 Y 역시 두번의 GAN을 거쳐 나온 Y'와 같아야만 합니다. 이 두가지 L1 loss가 합쳐진 것을 cycle consistent loss라고 부릅니다.

 

CycleGAN loss

CycleGAN 모델의 최종 loss는 GAN loss와 cycle consistent loss를 결합한 것입니다.

 

2. Identity Loss

Identity loss는 이름에서 볼 수 있듯이 정체성을 유지하는 loss입니다.

Identity loss

위와 같이 말->얼룩말로 바꾸는 GAN을 학습하는데, input이미지로 얼룩말이 들어왔을때 이미 얼룩말이기 때문에 GAN은 그대로 얼룩말을 만들어내야합니다. 즉, target domain이 input으로 들어오면 건드리지 말고 그대로 유지를 잘하는지에 대한 loss가 identity loss입니다. 

이 loss는 옵션형태로 학습의 속도가 오래걸릴지라도 더 높은 퀄리티를 원할때 사용하는 loss라고 설명합니다. 


CycleGAN Network 구조

1. Generator

Generator

기존 GAN에 많이 사용하는 generator 모델은 U-net이었습니다. U-net 네트워크는 maxpooling을 사용해 resolution을 줄여 high-feature를 추출하고, 해당 feature를 통해 새로운 이미지를 생성하는 구조입니다. 이러한 구조는 다양성을 추구하는 GAN의 역할에 최적이긴 하지만 low resolution으로부터 생성해내다보니 생성된 이미지의 resolution 자체가 워낙 낮다는 단점이있습니다. 

하지만 저자의 목표는 high resolution을 유지한채 이미지를 생성하는것이었기때문에 U-net을 사용하지 않고 무겁고 학습속도가 훨씬 오래 걸릴지라도 해상도를 유지할 수 있는 ResNet을 사용했다고 합니다. 

U-net과 ResNet의 구조

 

2. Discriminator

Discriminator

Discriminator 부분은 이미지 전체를 가지고 Real/Fake를 결정하지 않고 패치단위로 쪼개서 실행했습니다. 이는 이미지 전체를 볼때는 Real같지만 detail한 부분이 이상할수도 있기 때문에, 이런 이미지들도 Fake라고 잡아내기 위해서 패치단위로 discriminator를 시행했습니다.


Result

CycleGAN 결과

모네나 반고흐 등등의 화가들은 이미 살아있지 않기 때문에 풍경을 보고 자기만의 풍으로 그림을 절대 그릴수 없습니다. 하지만 CycleGAN을 활용하면 위처럼 실제 화가가 그린것같은 이미지를 만들어냄을 확인 할 수 있습니다.

 

CycleGAN의 단점

그렇지만 CycleGAN에도 단점이 있습니다. 

1. Geometric을 변환시키지 못함.

이는 Generator 구조가 U-net이 아닌 ResNet이기 때문에 해상도를 유지한채 style을 변화시키는대는 탁월하지만, 기하학적인 변화까지는 만들어내지 못합니다.

2. Dataset Distribution

이 문제는 어떠한 Neural Network든지 발생하는 문제이지만 유독 GAN에서 조금 더 심합니다.

Dataset Distribution 예시

위는 MRI의 contrast를 바꾸는 연구에서의 L1 loss를 사용하는 CNN과 CondGAN, CycleGAN의 dataset 분포에 따른 결과 비교입니다.  (https://arxiv.org/abs/1805.08841)

위 그림에서 가운데 %는 학습데이터 전체에서 tumor가 있는 데이터의 비율을 뜻합니다. 그리고 각 %에 있는 이미지들은 source인 Flair인 이미지를 해당 %로 학습완성된 모델에 넣어서 나온 결과이미지입니다.

왼쪽 (a)는 tumor가 있는 Flair이미지로 테스트를 했고, 오른쪽 (b) tumor가 없는 Flair이미지로 테스트를 진행했습니다. 

해당 결과 이미지가 얼마나 target인 T1 이미지와 비슷한지를 테스트한 것입니다.

 

왼쪽 (a)를 보면 tumor가 100%인 데이터셋으로 학습한 모델의 결과에서 셋다 target T1처럼 tumor를 가지고 있는 T1영상을 만들어냅니다.

그러나, tumor 비율이 점점 줄어들수록 GAN모델들은 tumor를 CNN모델에 비해 더 못만듭니다. CycleGAN의 경우는 tumor가 0%인 즉, 정상인 데이터셋만 가지고 학습한모델은 아예 tumor를 없애버리는 결과를 볼 수 있습니다.

오른쪽 (b)에서도, 100% tumor만 있는 dataset을 가지고 학습한 CycleGAN은 정상인 Flair이미지를 넣을지라도 무조건 tumor가 있도록 만드는 것을 볼 수 있습니다.

즉, GAN모델들은 자기가 학습한 dataset 처럼만 만들어내는 경향이 큽니다. (tumor를 무조건 만들거나, 무조건 없앰)

 

label과 pixel값 계산을 하는 L1 loss는 label처럼 만들도록 학습을 하기 때문에, 최대한 pixel값의 변화 관계를 학습하게 됩니다. 그렇다보니 학습하지 않은 data가 들어와도 얼추 비슷한 pixel값들의 변화 추이를 따라가면서 결과를 만들어냅니다.

하지만 GAN loss의 학습 원리는 L1 loss의 학습원리와는 다르게, target dataset군을 만들면되는 것입니다. 그러므로 학습에 사용한 dataset에 tumor가 없었으면 무조건 결과는 tumor가 없는 것을 생성하도록 학습하게 되는 것입니다.

 

이와같이 GAN을 사용할시 dataset의 분포를 잘 맞춰서 학습을 해야만 원하는 결과를 낼 수 있다는 유의점이 아직은 존재합니다.

728x90

댓글