Cycle GAN
2023, Dec 21
1. 사전 지식
Image-to-Image Translation
- 한 영역의 이미지들을 다른 영역으로 전환하는 작업
- Paired -> Pix2Pix
- Unpaired -> CycleGAN
Pix2Pix(conditional GAN)
- Generator: U-Net 기반 아키텍처
- Discriminator: Convolutional Patch GAN 분류기
- 이미지가 generator의 입력으로 들어가고, 변환된 이미지가 출력됨.
- Discriminator는 real 이미지와 fake(generator의 출력) 이미지를 입력으로 받음.
Loss
- Discriminator: cGAN에서와 같은 loss함수 사용
- negative log-likelihood를 최소화하는 것이 목표
- Generator: L1 loss 사용
- L1 loss: 실제 정답과 예측값 간의 차이의 절대값
- Total Loss: 기존 cGAN loss에서 L1 loss 항을 더해준 것
Result
2. Cycle GAN
- 소스와 대상 영역 사이에서 일대일 매핑 없이 한 영역에서 다른 영역으로 변환 가능
- Generator G: X -> Y 변환하는 방법 학습
- Generator F: Y -> X 변환하는 방법 학습
- Discriminator Dx: X와 X’ = F(Y)를 구별하는 방법 학습
- Discriminator Dy: Y와 Y’ = G(X)를 구별하는 방법 학습
Loss
- adversarial loss

- Generator G, F: 손실 함수 최소화
- Discriminator Dy, Dx: 손실 함수 최대화
- negative log-likelihood 함수 대신 least-squares loss로 대체
- cycle consistency loss: 네트워크가 올바른 매핑을 학습하도록 강제하기 위해 사용

- G(X) = Y’ 생성 -> F(Y’) = X’ 순환 이미지 생성
- X와 X’ 사이의 평균 오차 계산
- G(Y) = X’ 생성 -> F(X’) = Y’ 순환 이미지 생성
- Y와 Y’ 사이의 평균 오차 계산
- Total Loss
Result
3. midi -> sheet(악보) 이미지 생성 적용
- midi 파일을 악보 이미지로 변환하는 것을 학습하는 것이 목적
- midi 파일의 정보를 이미지로 표현
- midi 파일에 해당하는 악보 이미지
- midi 파일과 sheet 이미지의 크기를 256x256로 동일하게 맞춤
학습 결과
- 65 Epochs
- 650 Epochs
- 학습을 계속 진행시켜도 나아지는 결과가 보이지 않아 학습 중단
실패 원인 분석
- midi와 midi에 해당하는 악보 이미지의 데이터 양의 부족
- midi의 도메인과 악보 도메인의 연관성
- midi 데이터의 주음계는 0~127 범위로 128개의 데이터로 표현되는데 numpy의 resize 함수로 midi 데이터의 크기를 강제적으로 늘려 반복되는 부분이 생겨 문제가 발생한 것으로 예상
Reference
[1] CycleGAN: Jun-Yan Zhu, Taesung Park, Phillip Isola, Alexei A. Efros, “Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks,” arXiv preprint arXiv:1703.10593, 2017.
[2] cGAN: Mehdi Mirza, Simon Osindero, “Conditional Generative Adversarial Nets,” arXiv preprint arXiv:1411.1784, 2014
[3] Pix2Pix: Phillip Isola, Jun-Yan Zhu, Tinghui Zhou, Alexei A. Efros, “Image-to-Image Translation with Conditional Adversarial Networks,” arXiv preprint arXiv:1611.07004, 2017
