s5unnyjjj's LOG

Image-to-Image Translation with Conditional Adversarial Networks 본문

Review (Paper, Code ...)/Paper Review

Image-to-Image Translation with Conditional Adversarial Networks

s5unnyjjj 2020. 9. 13. 12:47

paper: openaccess.thecvf.com/content_cvpr_2017/html/Isola_Image-To-Image_Translation_With_CVPR_2017_paper.html

 

< Outline >

1. Introduction

2. Formulation

3. Network Architecture

4. Result

5. Conclusion

 

----------------------------------------------------------------------------------------------------

 

1. Introduction

 - Image to Image Mapping Network에서는 Photo-realistic을 추구한다. CNN은 모든 출력의 평균을 최소화하기에 CNN만 사용하면 blurry image만 출력하게된다. 그러므로 CNN과 그럴듯한 이미지를 만들어내는 GAN을 결합하여 Photo-realistic Image를 만든다.

 - 또한 일반 GAN이 아닌 이미지 변환 작업(pari로 되어있던 dataset을 이용하여 이미지 번역 작업)에 적합한 cGAN을 사용한다. 기존 GAN에서 D는 G를 만들어준 입력 데이터 전부를 보고 Real/Fake 여부를 판단한다. 따라서 G는 D를 속이기 위해 데이터의 일부 특징을 과장하려는 경향이 있다 .그러다보니 G는 사람이 보는 이미지 퀄리티 여부와 상관없이 D를 잘 속이는 방향으로만 학습한 결과 이미지가 blurry 된다. 그러므로 출력이미지를 현실이미지와 구분할 수 없도록 하면서도 목적에 맞게 loss function을 자동으로 학습하게끔 하는 것이 목표인 cGAN을 사용한다.

 

 - 그 외에도 Structured losses for image modeling을 사용한다. Structure Loss를 사용하는 이유는 대부분의 기존 이미지 변환 알고리즘들이 pixel to pixel 변환에 초점을 맞추기 때문이다. 이 경우에 pixel과 인접한 다른 pixel 간에 서로 영향을 끼치지 않고 독립적이라는 Unstructure loss가 숨서있는데, 실상을 pixel간에는 상관관계가 높기 때문에 올바른 가정이 아니다. 반면, Structure loss는 pixel간 연관관계까지 고려하여 자동으로 적용하기 때문에 다른 변환 알고리즘에 비해 좋은 결과를 도출한다. 그러므로 독립적인 Unstructured loss는 올바른 가정이 아니기에 pixel간의 joint configuration(연관관계)를 고려하는 Structured loss를 cGAN이 학습한다. 

 

 - Image to Image translation : inpainting(아마자 특징들을 추출하여 가려지거나 보이지 않는 부분을 복원하거나 생성하는 기법), future state prediction, image manipulation, style transfer, super-resolution(이미지 시스템의 해상도를 높이는 기법)

 

2. Formulation

 - Adversarial Loss + Reconstruction Loss

 L1 Loss와 결합하여 Generator가 Discriminator를 속일 뿐만 아니라 Ground truth와 유사하게 생성한다. 

 1) Adversarial Loss( Conditional GAN Loss )

 X : 변환 할 영상, Y : 변환 결과 영상, Z : 입력 잡음

 - Z로 입력 잡음을 사용하는 이유는 original GAN의 입력에 Z가 없다면, G를 통해서 나오는 결과는 deterministic한 결과가 나오게 된다. 그래서 Z값을 달리하게되면 다른 영상이 생성될 가능성이 있다. Pix2Pix는 입력영상 X를 condition으로 사용하기에 Z가 큰 영향이 없지만 deterministic한 결과를 피하기 위함이다. 

 - X, Y를 둘다 사용하는 이유는 {변환할 영상 X, 변환 결과 Y}를 쌍으로 사용하기 때문이다. 

 2) Reconstruction Loss( L1 Loss )

 L1 loss는 격자 방식으로 필셀상 거리를 나타내기에 해당 loss를 사용하게 되면 Ground truth 이미지와 유사한 이미지 도출한다.

 

 

3. Network Architecture

 1) Conditional GAN

 D(Discriminator)는 G(Generator)가 만든 가짜 데이터 쌍과 진짜 데이터 쌍을 분류하도록 학습시킨다. G는 D를 속디로고 학습한다. 최종적으로 Map edge가 photo가 되도록 학습시킨다.

 2) Generator

 - Pix2Pix는 colorization과 마찬가지로 입/출력의 resolution이 동일하고 어느정도 detail과 shape를 유지하는 성질을 가지고 있기 때문에 Encoder-decoder인 E-D구조를 사용하게 되면 손실이 발생하게 된다. 왜냐하면 E-D구조에서는 영상크기를 줄였다가 다시 키우는 과정에서 detail이 사라지면서 영상이 blur해지는 문제가 발생하게되기때문이다. 그러므로 Generator에서는 U-Net구조를 사용한다. U-Net구조는 속도가 빠르고, Patch Size(이미지 인식 단위) 상관없이 lcoalization(모델이 주어진 이미지 안의 object가 이미지 안에 어느 위치에 있는지 위치정보를 출력)과 context가 가능하다. 또한 Encoder-decoder와 다르게 U-Net은 Skip-connection을 이용하여 연결함으로써 정보의 손실을 방지한다.

[그림 출처] blog.naver.com/PostView.nhn?blogId=laonple&logNo=221358887811&categoryNo=0&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=postView&userTopListOpen=true&userTopListCount=10&userTopListManageOpen=false&userTopListCurrentPage=1

- 하단의 그림은 Encoder-decoder를 사용한 결과와 U-Net을 사용한 결과를 비교한 그림이다.

 

 3) Discriminator

 - PatchGAN을 사용하였으며, PatchGAN은 전체 영역이 아닌, 특정 크기(N x N)의 patch 단위로 진위 여부를 판별하고, 그 결과에 평균을 취하는 방식이다. PatchGAN을 사용하게 되면, 전체이미지가 아니라 작은 patch에 대하여 sliding방식으로 연산을 수행하기 때문에 파라미터의 개수가 훨씬 적으며, 이로인해 연산속도가 빨라진다. 또한 전체이미지의 크기에 영향을 받지않기에 구조적인 관점에서도 유연해짐으로써 특정 크기의 patch에 대하여 선명한 이미지 생성비율을 찾고 학습한다면 G의 성능이 향상되기에 Discriminator에서는 PatchGAN을 사용하였다. 

[그림 출처] brstar96.github.io/mldlstudy/what-is-patchgan-D/

 - 하단의 그림은 PatchGAN을 사용한 결과이다. 

 - 1x1은 PixelGAN이며 286x286은 ImageGAN이다. 여기서 ImageGAN이 아닌 70x70을 사용한 이유는 하단의 표를 보면 FCN(Fully Convolutional Network)-Score 값이 70x70가 ImageGAN이 더 높기 때문이다. 그렇다고 해서 70x70이 항상 좋은것은 아니다. 특정 pixel과 다른 pixel간의 연관관계에 따라 선택해야한다. 즉, correlation 관계가 유지되는 범위에 해당하는 적절한 크기의 patch를 정하고, 그 patch 들이 대게 진짜인 결과가 나오도록 학습함으로써 효율은 극대화된다. 

 

4. Result

 - cgan이 detail하기에 cgan을 사용하였으며, 하단의 그림은 cgan을 사용하면 detail하다는 장점을 보여주는 결과이다.

 - 또한 L1 Loss와 cgan을 결합함으로써 성능이 극대화 된 것을 아래의 그림을 통해 확인할 수 있다.

 - 하단의 그림은 Sketch to Photo를 보여주는 결과이다.

5. Conclusion

 Photo-realistic 위해 GAN의 Adversarial Training을 도입하였고, 이미지 변환의 효율성을 높이기 위하여 GAN이 아닌 cGAN을 사용하였다. 또한 U-Net과 PatchGAN을 사용함으로써 성능을 최적화 시켰으며 Training Data로서 Pair 존재가 필수이며 이를 Pix2Pix라고 한다.

 


>> 부족한 점이 많을 수 있기에 잘못된 내용이나 궁금한 사항이 있으면 댓글 달아주시기 바랍니다.

>> 긴 글 읽어주셔서 감사합니다. 

반응형
Comments