CycleGAN¶
- 쌍을 이루지 않은 데이터셋으로 학습이 가능한 image-to-image translation 메서드 제안
- cycle-consistent loss를 제안하여 다양한 업무에서 뛰어난 성능을 보임.
- CycleGAN은 Pix2Pix의 한계점을 보완하는 형태로 등장
1.2. Generative Adversarial Networks(GAN)¶
- GAN은 생성자와 판별자 두 개의 네트워크로 구성
- 생성자 : 판별자를 속이는 이미지 생성
- 판별자 : 특정한 이미지의 진짜/가짜 여부 판별
- 생성자와 판별자가 번갈하면서 학습하면서, 생성자는 판별자를 속일 정도로 실제와 비슷한 이미지를 생성하게 됨
- 목적함수에서 G(생성자, Generator)값은 최소화하고, D(판별자, discriminator)값은 최대화하는 것을 목표로 움직인다.
1.3. Conditional GAN(cGAN)¶
- 데이터의 모드(mode)를 제어할 수 있도록 조건(condition) 정보를 함께 입력하는 모델
- 사용자가 제시한 라벨에 대한 이미지 생성작업 및 판별작업을 실시
1.4. Pix2Pix¶
- 대표적인 Image-to-Image Translation 네트워크의 일종
- 학습과정에서 이미지 x 자체를 조건으로 입력받는 cGAN의 한 유형
- Pix2Pix는 픽셀을 입력받아 픽셀을 예측한다는 의미
- GAN 성능을 더 향상시키기 위해 L1손실함수를 함께 사용
- Pix2Pix에서는 서로 다른 두 도메인 X, Y의 데이터 두 개를 한 쌍으로 묶어서 학습을 진행해야 한다는 단점이 존재한다
2.2. CycleGAN 핵심 아이디어¶
- 생성자 G(x)가 다시 원본 이미지 x로 재구성될 수 있도록 한다.
- 원본 이미지의 content는 보존하고 도메인과 관련된 특성을 바꾸도록 한다.
- 따라서 생성자와 판별자는 두 개가 존재한다 : (1) G : X -> Y, (2) F : Y -> X (단, G와 F는 역함수 관계이다)
- 한 쌍으로 묶이지 않은 데이터를 학습하기 위해 Cycle-consistency loss를 사용한다.
2.3. 전체 목적 함수¶
- Adversarial loss : target domain의 있을 법한 이미지를 생성하도록 함
- Cycle-consistent loss : 입력과 매칭되는 image-to-image translation 결과를 찾을 수 있도록 한다.
2.4. CycleGAN의 구현¶
네트워크 아키텍쳐(Network Architecture)
- 잔여 블록을 활용하는 아키텍쳐 및 instance normaliztion을 사용
- 이미지 내 패치 단위로 진위 여부를 판별하는 판별자를 사용
학습 방법(Training details)
- Least-squares loss : 기존의 cross-entropy 기반의loss 대신 MSE 기반의 loss 사용 : 실제 이미지 분포와 가까운 이미지를 생성할 수 있으며 학습 안정화에 기여
- Replay buffer : 생성자가 만든 이전 50개의 이미지를 저장해 두고, 이를 이용해 판별자를 업데이트 : 모델 oscillation 개선
2.5. 성능 비교¶
- Pix2Pix와 비교해서 이미지 생성 결과가 낮으나 거의 비슷한 성능을 보여주고 있음
- 다만, Pix2Pix는 정답 이미지를 함께 input한다는 점을 감안한다면 unpaired 이미지를 투입하는 CycleGAN이 상당히 높은 성능을 보여주고 있음.
- CycleGAN의 손실함수를 모두 사용했을 때 가장 우수한 결과가 나오는 것을 알 수 있음
- GAN alone과 GAN + forward는 평가 지표상으로는 높을 수 있으나, mode collapse(매번 같은 결과의 이미지만 출력하는 현상)의 문제가 발생할 수 있음.
- 색상 구성을 보존해야 할 경우, indentity loss를 선택적으로 추가해서 사용가능 : 그림을 사진으로 변경할 때와 같이 색상 정보가 유지되어야 하는 업무에서 효과적으로 사용 가능
2.6. CycleGAN의 한계¶
- Content의 모양 정보의 변경이 필요한 경우, 정상적으로 동작하지 않음 : 사과를 오렌지로 바꾸고자 할 경우, 사과의 색만 변경되어버림.
- 학습 데이터에 포함되지 않은 사물을 처리하는 경우, 정상적으로 처리되지 않음
'전문지식 함양 > TIL' 카테고리의 다른 글
[프로그래머스 겨울방학 인공지능 과정] CNN을 활용한 풍경 이미지 분류 실습1 (0) | 2022.02.17 |
---|---|
[프로그래머스 겨울방학 인공지능 과정] 자연어 처리 이론 기초1 (0) | 2022.02.14 |
[프로그래머스 겨울방학 인공지능 과정] python 풍경 이미지분류 알고리즘3(完) (0) | 2022.02.08 |
[프로그래머스 겨울방학 인공지능 과정] GAN 이론 기초2 : Image-to-Image Translation with Conditional Adversarial Networks (0) | 2022.02.08 |
[프로그래머스 겨울방학 인공지능 과정] GAN 이론 기초 (0) | 2022.02.07 |