ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Style Transfer과 Cycle Gan에 대하여 : "화풍 따라하기"
    전반적인 딥러닝 기법 2021. 10. 20. 16:57

     의료 영상 데이터를 이용해서 deep learing algorithm을 돌릴 때 가장 큰 장애물 중 하나가 데이터 자체 확보의 어려움이다. 높은 ROC curve를 요구하는 의료영상 기반 딥러닝 네트워크는 보다 좋은 양질의 학습 데이터를 필요로 하지만, 개인정보 보안 상 등 여러 이유로 한꺼번에 몇천개의 데이터를 획득하는 것은 쉽지 않다. 물론 현재 여러 open source medical data가 있지만, 아직도 다른 성격의 데이터들에 비해 학습용 데이터가 턱없이 부족한 것은 사실이다. 이러한 단점을 해결하기 위해 최근 GAN을 이용하여 synthetic medical image data를 만드는 새로운 시도들이 이어지고 있다고 한다.

    GAN이 도대체 무엇이길래 높은 정밀도를 요구하는 의료 데이터까지 모방할 수 있는 것일까? 오늘 포스트에서는 GAN, 그중에서도 cycle gan에 대해 다루도록 하겠다.

     

    먼저 나는 GAN을 보다 더 잘 이해하기 위해 빌딩을 한옥 스타일로, 혹은 한옥을 현대적인 빌딩 스타일로 바꿔보는 프로젝트를 해보았다. 어떻게 input image의 형태는 유지하면서(예를들어 한옥의 형태는 유지하면서) target image의 화풍(빌딩만이 갖고 있는 특성)만을 입힐 수 있는 것일까? 이를 설명하기 위해 처음 Style Transfer 개념을 도입한 "A Neural  Algorithm of Artistic Style" 논문을 먼저 살펴보겠다.

    Neural style Transfer를 간단하게 설명하면, Content image와 style image가 주어졌을 때, 윤곽과 형태는 content image와 유사하게 보존하면서 texture나 스타일만 원하는 style image와 유사하게 바꾸는 것을 말한다. 여기서 한가지 주의해야할 점은 새로운 이미지인 X는 P의 형태를 가져오기 때문에 P와 X의 이미지 사이즈는 같아야 한다.

    논문을 살펴보면 앞서 A라고 표현한 style과 P라고 표현한 content 사이의 매칭에 대해 설명할 때 CNN을 이용해 유추할 수 있다고 한다. 그렇다면 어떻게 CNN이 그림의 style을 추출하며, content가 CNN을 지나갈 때 어떠한 feature값들이 남아있는 것일까? 위 그림(neural style transfer)을 보면 크게 두 종류: style reconstruction, content reconstruction로 나뉘게 되는데 style reconstruction부터 살펴보겠다.

     

    -Style reconstruction

    Style reconstruction에서 representation은 각각의 신경망 층에서 나오는 feature map들의 집합을 의미한다. 먼저 style feature부터 살펴보면, 박스 안 왼쪽이 가장 얕은 층이고 오른쪽으로 갈 수록 깊은 층임을 알 수 있는데 얕은 층에서는 단조로운 패턴들이 반복하지만 깊은층으로 갈수록 feature들이 더욱 더 복잡해지고 확대됨을 알 수 있다.

     

    -Content reconstruction

    Content에서 feature들이 어떻게 움직이는지 살펴보면, 얕은 층에서는 원본 사진과 거의 유사하지만 깊은 층으로 갈수록 점점 feature들은 남겨지고 그 외 다른 픽셀값들은 제거되는 모습을 확인할 수 있다. 즉, 다시 말해 content에서는 사물을 알아보기 위한 feature 값들만 남게 된다. 따라서 content와 style을 합칠 때 style의 전체적인 배열은 버려지고 반복되는 feature만 남게 된다. 반면 content에서는 object를 확인할 수 있는 feature들이 남기 때문에 content의 전체적인 틀에 그림의 texture를 입힌 모습으로 생산될 수 있는 것이다. 이러한 방법을 사용해 내가 원하는 작품의 작가 화풍을 따라할 수 있게 되었으며 아래 사진들은 해당 논문에서 제시한 style transfer 예시이다.

     

    Style transfer라는 개념이 나타난 이후, 많은 딥러닝 개발자들이 여러 방식을 사용하여 style transfer구현을 시도하였으며 이 중 오늘은 cycle gan을 초점으로 살펴보겠다. Cycle gan이란 단어를 먼저 보면, cycle이란 말은 대충 알겠는데 도대체 저 GAN이 무엇을 의미하는지 감이 안올 수도 있다. 따라서 cycle gan을 설명하기 앞서 GAN이 정확히 무엇인지 먼저 짚고 넘어가겠다.

    Generative Adversarial Nets

    GAN은 generative adversarial net의 약자로 2014년 Ian J. Goodfellow에 의해 발표된 비지도학습에 사용되는 인공지능 알고리즘을 의미한다.

    흔히들 GAN의 개념을 설명하기 위해 위조지폐범과 경찰의 이야기를 예로 많이 든다. 이제 GAN이 뭔지 알기 위해 보자면, 제일 처음 그림 좌측에 z라 표현된 noise가 있다고 하자. 이 noise를 가지고 위조지폐범은 G(z)라는 위조지폐를 만든다. 이제 경찰은 이 위조지폐와 실제 지폐를 구분한다. 경찰은 위조지폐라고 판단되면 0을, 실제지폐라고 판단되면 1을 출력한다. 위조지폐 G(z)와 실제 지폐 x가 경찰 손으로 들어갔을 때 D(G(z))는 위조지폐이기 때문에 0을, 실제 지폐 D(x)은 1을 출력하게 된다.

    이렇게 한번 경찰이 해당 지폐들을 구분한 것이 바로 한 번의 epoch가 된다. 첫 번째 도전에서 경찰이 위조지폐와 진짜 지폐를 잘 구분할지라도 점차 위조 지폐범은 더욱 비슷하게 생긴 위조지폐를 만들려고 노력할 것이고 경찰도 점차 위조지폐를 더 잘 구분하기 위해 노력할 것이다. 그러다가 어느 순간 너무나도 완벽한 위조지폐가 탄생한다면 경찰은 결국 해당 지폐를 구분하지 못하기 때문에 이게 진짜인지 가짜인지 찍기 시작할 것이고 확률은 50%로 수렴하므로 학습이 끝나게 된다.

    여기까지가 GAN에 대한 전반적인 설명이였다. 그럼 style transfer를 위해 그냥 간단하게 GAN을 도입하면 되지않나? 라고 생각하기 쉽지만 실은 GAN에는 치명적인 단점이 존재한다. X에서 G(X)로 매핑할 경우 그냥 G(X)가 진짜 이미지처럼 보이게 하면 되기 때문에 input의 특성을 무시하게 되어 style transfer 관점에서 보면 결국 의미없는 매핑이 된다.

    따라서 image A를 B 스타일로, B를 A 스타일로 변환하고 싶을 때 GAN만을 사용하면 각각의 input image의 형태, 윤곽을 무시한 새로운 output이 탄생하게 된다. 이를 방지하고자 cycle gan의 개념이 나오게 되었다.

    Cycle GAN은 한 이미지의 특성을 캡쳐하고 그 특징을 다른 이미지에 쉽게 입힐 수 있는 방식을 제안한다. 예를 들어 위와 같이 그냥 말 사진에 얼룩말이 가진 특징을 씌워서 해당 이미지를 얼룩말 사진으로 만드는 것과 같은 기능을 수행할 수 있다. 이때 중요한 점은, 이를 지도학습으로 구현하려고 한다면 말 사진을 두고 그와 완전히 동일한 포즈와 크기의 얼룩말 사진을 갖고와서 하나의 pair로 학습시켜야 하지만, cycle GAN은 그냥 바꾸고 싶은 말 사진과 아무 얼룩말 사진만 입력하더라도 모델이 이를 해석하여 적용시킨다는 점이다.

    Cycle GAN의 핵심은 사진의 스타일을 바꾸되, 다시 원본 이미지로 복구 가능할 정도로 바꾸는 것이다. 즉, x domian에서 y domain으로의 단순 매핑이 아니라, 다시 돌아오는 부분을 고려하여 input 이미지로 잘 돌아올 수 있도록 제약조건을 걸어 주어야 한다. 이는 말을 얼룩말로 바꾸려고 할 때 바뀐 얼룩말 사진을 다시 말로 바꿀 수 있어야 한다는 의미이다. 이를 위해 G net을 훈련시키는 동시에 얼룩말을 말로 바꿔주는 F net을 훈련시켜야 한다.

    CycleGAN 이용하였을 Input image 대해 얻을 있는 Output 다음과 같다. Input 이미지를 모네, 고흐와 같은 아티스트들의 그림 스타일로 바꾸거나, 말을 얼룩말로, 사과를 오렌지로, 오렌지를 사과로, 아이폰 사진을 dslr 초점을 변경한 결과물을 얻어낼 수 있다.

     

    여기까지가 style transfer부터 cycle GAN에 대한 전반적인 설명이였다. 이제부터는 직접 cycle GAN을 학습시켜본 결과에 대해 이야기해보려고 한다. 우리의 전통 가옥인 한옥과 현대 건축물의 상징인 빌딩을 서로 다른 특징을 갖고 있다. 나는 한옥이 마치 고흐, 모네와 같은 특정 화가들의 화풍처럼 뚜렷한 특징을 갖고 있다고 생각하였으며 따라서 이러한 한옥 스타일을 빌딩에 입히고 반대로 빌딩의 스타일을 한옥에 입혀보면 어떨까?라는 생각을 하게 되었다.

    모든 코딩 작업은 구글 colab에서 이루어졌으며 각각의 이미지들은 크롤링 작업을 통해 얻은 후, 전처리 과정을 통해 128 x 128 사이즈의 총 172개의 학습 데이터가 사용되었다.

    시간 관계상 100 epoch 까지 학습이 진행되었으며 10.6의 train loss를 갖는다. 

    먼저 한옥의 image 갖고 빌딩의 style 가져온 output값들을 살펴보겠다. Epoch 작은 관계로 정확한 빌딩의 모습은 없지만 컴퓨터가 최대한 푸른 색을 지니고 높은 형태를 지닌 빌딩의 특성 값들을 input값에 입히려고 노력했음을 있다.

    그 다음은 빌딩의 image를 갖고 한옥의 style을 입힌 결과물들이다. 그림을 보면 이 경우에도 컴퓨터가 한옥의 기와와 나무 재질 등의 특성값을 빌딩 이미지에 주려고 노력했음을 볼 수 있다.

     

    cycle gan을 구현하는 코드는 아래 github에서 처럼 fastai 라이브러를 이용하여 쉽게 구현 가능하다.

    https://github.com/fastai/course-v3/blob/master/nbs/dl2/cyclegan.ipynb

     

    GitHub - fastai/course-v3: The 3rd edition of course.fast.ai

    The 3rd edition of course.fast.ai. Contribute to fastai/course-v3 development by creating an account on GitHub.

    github.com

     

    [1] Leon Gatys, Alexander Ecker, Matthias Bethge; A Neural Algorithm of Artistic Style . Journal of Vision2016;16(12):326. doi: https://doi.org/10.1167/16.12.326

     

    A Neural Algorithm of Artistic Style | JOV | ARVO Journals

    Open Access

    jov.arvojournals.org

    [2] Ian Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, and Yoshua Bengio. 2020. Generative adversarial networks. <i>Commun. ACM</i> 63, 11 (November 2020), 139–144. DOI:https://doi.org/10.1145/3422622

     

    Generative adversarial networks | Communications of the ACM

    Preview is not available. By clicking download,a new tab will open to start the export process. The process may takea few minutes but once it finishes a file will be downloaded on your browser soplease do not close the new tab.

    dl.acm.org

    [3] Zhu, Jun-Yan et al. “Unpaired Image-to-Image Translation Using Cycle-Consistent Adversarial Networks.” 2017 IEEE International Conference on Computer Vision (ICCV) (2017): 2242-2251.

    댓글

Designed by Tistory.