반응형
SMALL
CycleGAN
CycleGAN의 문제 상황 : Unpaired 데이터셋 상황에서 GAN 손실 함수만 사용한다면?
- 특정한 이미지 x가 주어졌을 떄, target domain Y 의 그럴싸한 이미지로 바꾸도록 학습할 수 있음
- (x랑 y는 서로 매칭되어 있지 않은 상태 )
- 매칭되는 y없이 단순히 이미지 x의 특성을 타겟 도메인 Y의 특성으로 바꾸고자 함
- 어떤 입력이든 y 도메인에 해당하는 하나의 이미지만 내보내려고 학습이 될 수도 있음
- 결과적으로 , 추가적인 제약조건이 필요
CycleGAN의 핵심 아이디어
- Cycle-consistency loss를 사용
- 이미지를 translation 시킬 때, 다시 원본으로 돌아올 수도 있도록 함
- CycleGAN은 G(x)가 다시 원본 이미지 x로 재구성될 수 있도록 함
- 원본이미지의 content는 보존하고 도메인과 관련한 특성을 바꾸도록 함
- G: X -> Y F: Y -> X (G와 F는 역함수 관계)
- 목표 : F(G(X)) ~~ X G(F(Y))~~Y
- 한 쌍으로 묶이지 않은 데이터를 학습하기 위하여 사이클 손실을 이용
- Gan loss는 일반적인 conditional loss와 동일
- 그림 1-1) x가 생성자 G에 들어갔을 떄 y 도메인에 그럴싸한 이미지가 될 수있도록 생성자 G를 학습
- Cycle loss는 원본 이미지로 다시 돌아올 수 있도록 가능한 특정 이미지와 매칭되는 Y이미지를 내보낼 수 있도록 하는 방식
- x domain으로 다시 돌아올 수 있도록 하는 방식 - Forward cycle consistency loss
- y domain으로 다시 돌아올 수 있도록 하는 방식 - Backward cycle consistency loss
CycleGAN의 전체 목적 함수
- Adversarial loss (GAN loss): target domain의 있을 법한 이미지를 생성하도록
- Cycle-consistent loss : 입력과 매칭되는 image-to-image translation 결과 이미지를 찾을 수 있도록
- cycle loss는 말을 얼룩말로 바꾸고 이 변환한 얼룩말을 다시 말로 복원한 이미지와 진짜 말의 이미지의 차이
- identity loss는 input을 얼룩말로 바꾼 generator 여기서는 즉 F에게 input으로 그냥 얼룩말을 주게 되었을 때 얼마나 똑같은 얼룩말이 나올것인지 그 두 이미지의 차이를 계산한것
- identity loss를 추가해준 것이 진짜 이미지와 더욱 비슷한 색감을 가진 output을 냄
Identity mapping : when an image from the other domain is provided Generator, it is expected to generate
the same Image.
CycleGAN의 구현 (Architecture)
- 네트워크 아키텍처
- 잔여 블록을 활용하는 아키텍처 및 instancenormalization을 사용
- 이미지 내 패치 단위로 진위 여부를 판별하는 판별자를 사용
- 학습 방법
- Least-squares loss : 기존의 cross-entropy 기반의 loss 대신에 MSE 기반의 loss를 사용
- 실제 이미지 분포와 더욱 가까운 이미지를 생성할 수 있으며 학습이 안정화
- Replay buffer : 생성자가 만든 이전 50개의 이미지를 저장해 두고, 이를 이용해 판별자를 업데이트
- 모델의 oscillation을 개선
- Least-squares loss : 기존의 cross-entropy 기반의 loss 대신에 MSE 기반의 loss를 사용
반응형
LIST
'영상처리 > 딥러닝' 카테고리의 다른 글
[CycleGAN논문 리뷰] Unpaired Image-to-Image Translationusing Cycle-Consistent Adversarial Networks (0) | 2022.07.12 |
---|---|
SRGAN (0) | 2022.07.08 |
GAN (0) | 2022.07.06 |
CS231n Lecture 2 | Image Classification (0) | 2022.06.06 |
CS231n Lecture 1 | Introduction to Convolutional Neural Networks for Visual Recognition (0) | 2022.06.01 |