Conditional GAN, CGAN
이번 글에서는 조건부 GAN(Conditional GAN, CGAN)이라고 부르는 CGAN 모델에 대해서 살펴보도록 하겠습니다. 기존 GAN부터 WGAN 모델에서는 주어진 훈련 세트에서 사실적인 이미지를 생성하는 GAN을 구축하였습니다. 하지만 생성하려는 이미지의 유형을 제어할 수 없다는 한계가 있습니다. 이 문제를 해결하기 위해 추가적인 정보를 GAN에 입력하여 생성 과정을 제어할 수 있는 방법을 모색했고, 이로인해 조건부 GAN이 탄생하게 되었습니다.
CGAN 기본 아이디어
CGAN은 생성자와 판별자에게 추가적인 정보, 예를 들면 레이블이나 태그를 제공함으로써 특정 조건을 만족하는 데이터를 생성할 수있게 합니다. 이 추가적인 정보는 생성자가 특정 유형의 이미지를 생성하도록 유도하고 판별자는 그 이미지가 실제 데이터셋에서 왔는지, 아니면 생성자에 의해 만들어졌는지를 더 잘 판별할 수 있게 도와줍니다.
1) 작동 원리
조건부 GAN은 전통적인 GAN의 프레임워크를 기반으로 하지만 특정 조건을 충족하는 데이터만을 생성하는 방식으로 확장된 개념입니다. 이 조건을 레이블, 텍스트 설명, 다른 이미지 등 다양한 형태로 제공될 수 있습니다.
- 생성자
- 조건에 맞는 가짜 데이터를 생성하는 것입니다.
- 생성자는 랜덤 노이즈와 조건 정보를 입력받습니다. 이 조건 정보는 예를 들어, 생성하고자 하는 이미지의 레이블이 될 수 있습니다. 생성자는 이 두 입력을 통합하여 조건에 맞는 이미지를 생성하려고 합니다. 이 과정에서 신경망은 조건과 노이즈 데이터에서 유용한 특징을 추출하여 조건에 부합하는 이미지를 합성합니다.
- 판별자
- 실제 데이터와 생성된 데이터를 구별합니다.
- 판별자는 실제 데이터와 가짜 데이터 모두를 받되, 각 데이터에는 해당 데이터의 조건 정보가 함께 제공됩니다. 예를 들어 '고양이' 이미지라는 조건이 주어졌을 때, 판별자는 실제 고양이 이미지와 생성된 고양이 이미지를 구분해야합니다. 판별자는 두 종류의 데이터를 비교하면서 가짜 데이터를 실제와 구별하도록 학습합니다.
2) 조건 정보의 역할
조건 정보는 생성자와 판별자에게 명확한 지침을 제공합니다. 이를 통해 GAN은 단순히 '생생하게 보이는' 이미지를 넘어 특정 특성이나 주제를 가진 이미지를 생성할 수 있습니다. 예를 들어, 조건 정보가 '비오는 날'이라면 생성자는 비가 내리는 장면을 '행복'이라면 웃는 사람의 이미지를 만들려고 시도할 것입니다.
기존 GAN과의 차이점
기존 GAN 모델은 무작위성에 크게 의존하여 무작위로 데이터를 생성하지만, 조건부 GAN은 특정 조건을 충족하는 데이터 생성에 초점을 맞춥니다. 예를 들어 '고양이' 이미지를 생성하도록 지시할 수 있씁니다. 이는 기존 GAN보다 훨씬 효율적이며 특정 애플리케이션에 적합한 데이터를 생성하는 데 유용합니다.
조건부 GAN의 설명
조건부 GAN의 구조는 기본적으로 기존 GAN과 유사합니다. 생성자는 무작위 노이즈와 추가적인 조건 정보를 입력받아 가짜 데이터를 생성합니다. 판별자는 실제 데이터와 생성된 데이터를 비교하고 어느 것이 실제이고 어느 것이 가짜인지를 구별하려고 시도합니다. 조건부 GAN의 핵심은 이러한 생성 과정에서 제어 가능한 출력을 달성하는 것입니다.
마무리
여기까지 CGAN에 대한 설명을 살펴보았습니다. 간단한 이론을 살펴보았으니, 이제는 실습을 수행해보아야겠지요? 다음 글에서는 CGAN에 대한 코드 구현과 실습을 해보도록하겠습니다. 생성형 AI의 근간이 되는 GAN의 발전 과정을 살펴보면서 새로운 아이디어들이 쑥쑥 생겨나고 더 좋은 연구 주제들을 만들어낼 수 있을 것 같습니다. 블로그를 작성하면서 공부도 하고 실습을 해보면서 아이디어에 대한 소스도 얻고 한번에 일석 이조를 얻는 그런 느낌입니다. 서둘러서 얼른 실습을 진행해볼 수 있으면 좋겠습니다. 그럼, 이번 CGAN에 대한 글은 여기서 마치도록 하겠습니다.
조건부 GAN의 설명
1. 논문 : https://arxiv.org/abs/1411.1784
2. 만들면서 배우는 생성 AI : https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=324278784
실습
2024.04.22 - [Personal Study/Model] - [생성 신경망] CGAN 모델 구현
'Personal Projects > Model' 카테고리의 다른 글
[생성 신경망] CGAN 모델 구현 (0) | 2024.04.22 |
---|---|
[생성 신경망] WGAN 모델 구현 (0) | 2024.04.20 |
[생성 신경망] 와서스테인 GAN (Wasserstein GAN, WGAN) - 이론 (0) | 2024.04.19 |
[생성 신경망] DCGAN 모델 구현 (0) | 2024.04.18 |
[생성 신경망] GAN 모델 구현 (0) | 2024.04.17 |