핵심단어
GAN, Generator, Discriminator, CycleGAN,
학습목표
- GAN의 학습 방식과 생성자(Generator)와 판별자(Discriminator)에 대해 이해하기
- CycleGAN 이 동작하는 방식에 이해하기
GAN
GAN의 뜻
- Generative Adversarial Networks, 생성적 적대 신경망
- 실제와 유사한 데이터를 생성하는 모델
위조지폐 예시로 GAN 이해하기
생성자(Generator) : 위조지폐범 역할, 실제와 동일한 데이터를 만들기 위해 노력
판별자(Discriminator) : 탐정 역할, 생성된 데이터가 진짜인지 아닌지 판단
코드로 이해하기
코드는 여기~
CycleGAN
- CycleGAN은 DCGAN의 구조를 변경하여 만든 새로운 구조
- CycleGAN을 통해 특정 이미지 도메인의 특성을 다른 이미지에 적용하는 작업 가능
CycleGAN 의 장점
- 이전의 모델은 Train 데이터셋을 구성할 때 레이블에 해당하는 데이터를 무조건 1:1로 짝지어 줘야했음 (흑백 1000장 - 컬러 1000장)
- CycleGAN은 이와 다르게 서로 변환하고 싶은 두 스타일의 이미지를 따로 구하더라도 좋은 성능을 보임
- 학습을 위한 데이터셋 마련이 훨씬 쉬워지고, 그에 따라 모델의 성능이나 유용성 역시 좋아지게 됨
CycleGAN 의 원리

- 생성자를 2개 준비
- 각각의 생성자는 A→B, B→A 로 이미지를 변경
- 판별자 역시 2개를 준비
- 각각의 판별자는 A, B 에 대해 Real/Fake 를 판단하게 됨
사진 윗부분
- A 이미지를 입력하여 A→B 생성자를 통해 B 이미지를 생성한 후 B 판별자를 통해 판별
- 생성된 B 이미지를 B→A 생성자를 통해 다시 A 인풋과 같은 형태로 생성할 수 있도록 함
사진 아랫부분
- B 이미지를 입력하여 B→A 생성자를 통해 A 이미지를 생성한 후 A 판별자를 통해 판별
- 생성된 B 이미지를 A→B 생성자를 통해 다시 A 인풋과 같은 형태로 생성할 수 있도록 함
cycle 을 거치는 이유?
- CycleGAN은 비슷한 이미지에 대해 1:1 매칭을 시켜 이미지를 학습하는 것이 아님
- A→B 혹은 B→A, 즉 이미지를 변환하면서 Input 정보가 유실되어 원본 이미지의 특성을 잃어버리게 될 수 있음
- 원본 데이터로 돌아갈 수 있을 정도로만 변환을 진행하기 위해서 A→B→A, B→A→B 로 돌아가는 Cycle 구조를 가지게 되었음
- 이 때문에 CycleGAN 이라는 명칭이 붙었다
학습후기
오늘도 겨우 겨우 3시에 개념 머리에 넣기 성공!
코드는 한번 더 보긴 해야겠다! 아쟈쟈~