이번 포스트에서는 ICML 2018에서 발표된 논문인 “CyCADA: Cycle-Consistent Adversarial Domain Adaptation”라는 논문에 대해 소개드리고자 합니다.

 

Background

본격적으로 논문을 소개하기에 앞서 domain adaptation에서 풀고자 하는 문제가 어떤 것인지 간단하게 설명하고 넘어가겠습니다.

 Unsupervised Domain Adaptation

자율주행 자동차 개발을 위해서 차와 사람을 구분하는 알고리즘을 개발한다고 가정해보겠습니다. 이를 위해 한국 여러 도시를 돌아다니면서 도로 데이터를 모았고, 이러한 데이터로 학습된 사람과 차를 잘 구분하는 아래의 그림과 같은 모델이 있습니다.

Screen Shot 2018-09-14 at 4.28.08 PM

 

이 때 이 모델을 탑재한 자동차를 미국으로 수출하고 싶은데, 이를 미국에서 테스트를 해보니 아래와 같이 기존의 모델로는 잘 분류가 되지 않는 현상이 발생했습니다. 이는 한국 환경과 미국 환경의 차이로 인해 data distribution간의 discrepancy가 존재하기 때문입니다.

Screen Shot 2018-09-14 at 4.31.14 PM

하지만 미국에서 새로 데이터를 모으고, 이를 라벨링 한 뒤 다시 모델을 학습하기에는 시간과 비용이 많이 들게 됩니다. 최소한의 비용으로 이러한 문제를 해결하기 위해서 unsupervised learning을 통해 이를 해결하고자 하는 연구들이 많이 진행되고 있는데요. 아래의 그림과 같이 domain classfier에 대해서 adversarial learning을 통해 두 domain이 구분이 되지 않도록 해주면, 완벽하지는 않지만 만족할만한 성능을 얻을 수 있습니다.

Screen Shot 2018-09-14 at 4.31.20 PM

Screen Shot 2018-09-14 at 4.31.25 PM

위와 같이 서로 다른 도메인간에 구분을 못하도록 하는 다양한 방법이 연구가 되었지만, 그 중에서 가장 대표적인 Unsupervised Domain Adaptation by Backpropagation(ICML 2015) 방법과 Adversarial Discriminative Domain Adaptation(CVPR 2017) 방법에 대해 간단하게만 소개드리겠습니다.

우선 Unsupervised Domain Adaptation by Backpropagation 논문에서 소개된 gradient reversal 방법은 기존에 학습하던 모델에 별도의 discriminator을 추가하고, 이를 통해 domain classify loss를 reverse하여 전달하는 방식으로 두 도메인을 구분하지 못하도록 학습하는 방법입니다. 조금 더 자세히 살펴보면 아래의 그림에서 보시는 바와 같이 서로 다른 두 개의 loss가 있는데, 이 중에서 상단의 loss가 하는 일은 우리가 학습하려고 하는 label에 대해서 잘 구분할 수 있는 feature extractor와 label predictor를 학습하는 것입니다.

Screen Shot 2018-09-14 at 4.54.58 PM

여기까지는 기존에 학습하던 방식과 똑같은데, 하단의 loss를 학습하는 방식이 이 논문의 핵심 아이디어입니다. 우선 domain classifer에 대해서는 loss를 minimize하는 방식으로(domain을 잘 구분할 수 있도록) 학습을 시킨 뒤에, feature extractor에 gradient를 전달해줄 때 이를 reverse하여서 (-1을 곱하여서) 전달해줍니다. 이렇게 하면 feature extractor 입장에서는 domain을 최대한 구분하지 못하게 학습이 되고, 위에서 살펴본 우리가 원하는 효과를 얻을 수 있습니다.

Screen Shot 2018-09-14 at 4.55.05 PM

올해 CVPR 2018에 다양한 domain adaptation 논문들이 나왔는데요, 이를 살펴보면 대부분이 Adversarial Discriminative Domain Adaptation(ADDA) 방식으로 주로 학습을 하고 있습니다. 이전 방법과 가장 큰 차이는 domain을 섞기 위해서 gradient를 reverse해서 전달하는 것이 아니라, GAN을 학습할 때와 같이 discriminator에 fake label을 주는 방식으로 학습을 진행한다는 점입니다. ADDA 학습 과정에 대해 살펴보면 우선 아래의 그림과 같이 domain real label에 대해서 discriminator을 학습합니다. 위의 예시와 연계하여 생각해보면 주어진 도로 환경의 사진이 한국인지 미국인지 잘 구분하도록 discriminator를 학습합니다.

Screen Shot 2018-09-14 at 5.13.19 PM

그런 뒤에 잘 학습된 discriminator에 domain fake label을 주고 학습하면, feature extractor 입장에서는 domain을 구분하지 못하도록 학습이 됩니다. 혹시 이 부분이 잘 이해가 안가시는 분이 있다면 GAN 학습 방식을 찾아보시면 이해하시는데 도움이 될 것 같습니다.

Screen Shot 2018-09-14 at 5.13.28 PM

gradient reversal과 ADDA 방식의 성능을 비교해보면 아래와 같이 ADDA의 성능이 더 좋은 것을 살펴볼 수 있습니다. 저자는 논문에서 gradient reversal 방식은 domain discriminator가 converge하게 될 경우 feature extractor로 전달될 gradient가 vanish하는 문제가 발생하기 때문에 ADDA 방식이 더 효과적이라고 주장하였습니다.

Screen Shot 2018-09-14 at 5.26.02 PM.png

 CycleGAN

CycleGAN은 서로 다른 domain의 unpaired image들에 대해서 image-to-image translation을 할 수 있는 네트워크입니다. 분량 관계상 자세한 내용은 김태오님의 블로그 글을 참조하시면 좋을 것 같습니다.(https://taeoh-kim.github.io/blog/gan%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-image-to-image-translation-pix2pix-cyclegan-discogan/)

CyclaGAN의 핵심 아이디어는 서로 다른 도메인으로 변환을 하기 위해서 아래와 같이 GAN loss 만을 사용하거나 Cycle loss만 사용하면 아래의 그림과 같이 제대로 학습이 되지 않으니, 이를 동시에 활용하자는 것입니다.Screen Shot 2018-09-14 at 6.03.43 PM

그 결과 아래의 그림과 같이 다양한 domain들에 대해서 성공적으로 image-to-image translation을 할 수 있었습니다.

Screen Shot 2018-09-14 at 6.07.46 PM.png

 

CyCADA : Cycle-Consistent Adversarial Domain Adaptation

CyCADA는 ADDA를 연구한 저자들이 기존 방법의 단점을 개선하여 연구한 결과입니다. 저자는 기존 ADDA의 경우 feature sapce단에서 adversarial loss를 적용하기 때문에 pixel-level이나 low-level domain shifts를 잘 잡아내지 못하는 단점이 있다고 주장합니다. 이를 개선하기 위해서 다른 domain으로 image translation을 할 수 있는 CycleGAN을 추가한 것이 사실상 이 논문의 전부입니다. 논문에서 설명한 구조는 아래의 그림과 같습니다. 언뜻보면 복잡해보이지만 사실 ADDA에 CycleGAN 을 추가한 것 입니다.

Screen Shot 2018-09-14 at 6.28.15 PM.png

위의 그림을 보면 CycleGAN와 ADDA가 한꺼번에 end-to-end로 학습되는 것 같이 보이는데요, 실제 저자의 github 코드를 살펴보면(https://github.com/jhoffman/cycada_release) 2 stage로 나뉘어 학습되고 있습니다. 우선 CycleGAN을 통해서 source image를 target styled image로 변환을 해줍니다. 이 때 기존의 CycleGAN과 약간 다른점이 있다면 바로 semantic consistency loss를 추가했다는 점입니다. Semantic consistency의 역할은 가령 MNIST dataset에 포함된 2를 USPS dataset style로 변환을 하려고 할 때, 변환된 이미지가 숫자 2를 유지하면서 변환될 수 있도록 합니다. 이러한 제약조건을 주지 않으면 아래의 그림과 같이 2와 비슷하게 생긴 9로 바뀌는 등의 문제가 발생하게 됩니다. 다만 저자는 memory의 한계로 인해서 GTA5 <-> Cityspaces 를 학습시킬 때에는 이 부분을 제외하고 학습하였다고 하였습니다.

Screen Shot 2018-09-14 at 6.31.05 PMScreen Shot 2018-09-14 at 6.31.19 PM

그 뒤에 앞서 설명한 ADDA를 이용해서 target styled source image와 target image를 함께 학습합니다. CycleGAN을 통해서 pixel-level에서는 거의 비슷하게 보이도록 변환이 되었지만 feature-level에서는 여전히 구분히 될 여지가 있는데 ADDA를 통해서 이를 완화할 수 있게 됩니다.

Screen Shot 2018-09-14 at 6.37.06 PM.png

Experiments

해당 논문에서 저자는 digits datasets와 GTA5 to Cityspaces task에 대해서 CyCADA의 효과를 실험적으로 보여줍니다. 자세한 실험 결과에 대해 소개하기 앞서, GTA5 <-> Cityspaces 간에 CycleGAN을 적용하여 변환된 이미지 결과를 보면 아래와 같습니다. 눈으로 보기에도 각 이미지들이 서로 다른 도메인으로 성공적으로 translation 되는 것을 확인할 수 있습니다.

Screen Shot 2018-09-14 at 6.40.47 PM

우선 digits datasets들 간의 domain adaptation 결과는 아래와 같습니다. 표에서 보이는 DANN이 앞에서 설명하였던 gradient reversal이고, ADDA의 결과도 적혀있습니다. 표 상에서 CyCADA pixel only는 CycleGAN만 적용한 것을 의미하고, pixel + feat는 CycleGAN과 ADDA를 함께 적용한 것을 의미합니다. 표 상에서 앞의 두 개 task에서는 CycleGAN을 적용한 것만으로도 기존의 다른 domain adaptation 방법에 비해 높은 정확도를 보여줍니다. 다만 SVHN -> MNIST task에서는 이 방법을 적용했을 때는 오히려 다른 방법들에 비해 성능이 떨어졌는데, ADDA까지 함께 적용했을 때 성능이 가장 우수한 것을 확인할 수 있습니다.

Screen Shot 2018-09-14 at 6.40.52 PM

GTA5 -> Cityspaces task에서는 CycleGAN, ADDA가 각각 효과적이지만 이 둘을 합쳤을 때 가장 성능이 우수하다는 점을 실험으로 보여주고 있습니다. 올해 CVPR 2018에 나온 Learning to Adapt Structured Output Space for Semantic Segmentation 이라는 논문에서도 같은 실험을 했었는데 동일한 아키텍쳐에 대하여 mIoU가 35.0 정도 수준이였습니다. CyCADA는 직관적이고 구현하기도 쉽지만 높은 성능을 보여준다는 것을 다시 한 번 확인할 수 있습니다.

Screen Shot 2018-09-14 at 6.40.58 PM

 

Summary

본 논문에서는 CycleGAN과 ADDA를 함께 적용하는 단순한 방법을 통해서 domain adaptation의 성능을 끌어올렸습니다. 하지만 실제로 이를 적용해보면 task에 따라서는 잘 작동하지 않을 수도 있는데요. GTA5 <-> Cityspaces 같은 경우 pixel-level의 fine한 feature를 무시한 채 변환이 되어도 segmentation을 하는데에 문제가 없지만, 의료 데이터 같은 경우 다양한 조직들의 구조가 유지되지 않으면 segmentation tsak를 학습하는 과정에서 오히려 악영향을 끼칠 수도 있습니다. 이러한 문제에 대해 관심이 있으신 분들이라면 올해 CVPR 2018에서 발표된 “Translating and Segmenting Multimodal Medical Volumes with Cycle- and Shape-Consistency Generative Adversarial Network” 이라는 논문을 살펴보셔도 좋을 것 같습니다. 해당 논문은 CycleGAN과 segmentor을 end-to-end로 학습하여 서로가 서로에게 도움이 될 수 있도록 설계하였습니다.

 

Reference

-Unsupervised Domain Adaptation by Backpropagation(ICML 2015)

-Adversarial Discriminative Domain Adaptation(CVPR 2017)

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

-CyCADA : Cycle-Consistent Adversarial Domain Adaptation(ICML 2018)

-Learning to Adapt Structured Output Space for Semantic Segmentation (CVPR 2018)

– Translating and Segmenting Multimodal Medical Volumes with Cycle- and Shape-Consistency Generative Adversarial Network (CVPR 2018)

Posted by:Hyun Jae Lee

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s