본문 바로가기
Personal Study/Model

[생성 신경망] 조건부 GAN (Conditional GAN, CGAN)

by muns91 2024. 4. 21.
Conditional GAN, CGAN

 

 이번 글에서는 조건부 GAN(Conditional GAN, CGAN)이라고 부르는 CGAN 모델에 대해서 살펴보도록 하겠습니다. 기존 GAN부터 WGAN 모델에서는 주어진 훈련 세트에서 사실적인 이미지를 생성하는 GAN을 구축하였습니다. 하지만 생성하려는 이미지의 유형을 제어할 수 없다는 한계가 있습니다. 이 문제를 해결하기 위해 추가적인 정보를 GAN에 입력하여 생성 과정을 제어할 수 있는 방법을 모색했고, 이로인해 조건부 GAN이 탄생하게 되었습니다. 

 

 

Conditional Generative Adversarial Nets

Generative Adversarial Nets [8] were recently introduced as a novel way to train generative models. In this work we introduce the conditional version of generative adversarial nets, which can be constructed by simply feeding the data, y, we wish to conditi

arxiv.org

 


 

CGAN 기본 아이디어

 CGAN은 생성자와 판별자에게 추가적인 정보, 예를 들면 레이블이나 태그를 제공함으로써 특정 조건을 만족하는 데이터를 생성할 수있게 합니다. 이 추가적인 정보는 생성자가 특정 유형의 이미지를 생성하도록 유도하고 판별자는 그 이미지가 실제 데이터셋에서 왔는지, 아니면 생성자에 의해 만들어졌는지를 더 잘 판별할 수 있게 도와줍니다. 

 

1) 작동 원리

 조건부 GAN은 전통적인 GAN의 프레임워크를 기반으로 하지만 특정 조건을 충족하는 데이터만을 생성하는 방식으로 확장된 개념입니다. 이 조건을 레이블, 텍스트 설명, 다른 이미지 등 다양한 형태로 제공될 수 있습니다. 

 

  1. 생성자
    • 조건에 맞는 가짜 데이터를 생성하는 것입니다.
    • 생성자는 랜덤 노이즈와 조건 정보를 입력받습니다. 이 조건 정보는 예를 들어, 생성하고자 하는 이미지의 레이블이 될 수 있습니다. 생성자는 이 두 입력을 통합하여 조건에 맞는 이미지를 생성하려고 합니다. 이 과정에서 신경망은 조건과 노이즈 데이터에서 유용한 특징을 추출하여 조건에 부합하는 이미지를 합성합니다. 
  2. 판별자
    • 실제 데이터와 생성된 데이터를 구별합니다.
    • 판별자는 실제 데이터와 가짜 데이터 모두를 받되, 각 데이터에는 해당 데이터의 조건 정보가 함께 제공됩니다. 예를 들어 '고양이' 이미지라는 조건이 주어졌을 때, 판별자는 실제 고양이 이미지와 생성된 고양이 이미지를 구분해야합니다. 판별자는 두 종류의 데이터를 비교하면서 가짜 데이터를 실제와 구별하도록 학습합니다. 

조건부 GAN 구조

 

2) 조건 정보의 역할

 조건 정보는 생성자와 판별자에게 명확한 지침을 제공합니다. 이를 통해 GAN은 단순히 '생생하게 보이는' 이미지를 넘어 특정 특성이나 주제를 가진 이미지를 생성할 수 있습니다. 예를 들어, 조건 정보가 '비오는 날'이라면 생성자는 비가 내리는 장면을 '행복'이라면 웃는 사람의 이미지를 만들려고 시도할 것입니다. 

 


 

기존 GAN과의 차이점

 기존 GAN 모델은 무작위성에 크게 의존하여 무작위로 데이터를 생성하지만, 조건부 GAN은 특정 조건을 충족하는 데이터 생성에 초점을 맞춥니다. 예를 들어 '고양이' 이미지를 생성하도록 지시할 수 있씁니다. 이는 기존 GAN보다 훨씬 효율적이며 특정 애플리케이션에 적합한 데이터를 생성하는 데 유용합니다.

 

 

조건부 GAN의 설명

 조건부 GAN의 구조는 기본적으로 기존 GAN과 유사합니다. 생성자는 무작위 노이즈와 추가적인 조건 정보를 입력받아 가짜 데이터를 생성합니다. 판별자는 실제 데이터와 생성된 데이터를 비교하고 어느 것이 실제이고 어느 것이 가짜인지를 구별하려고 시도합니다. 조건부 GAN의 핵심은 이러한 생성 과정에서 제어 가능한 출력을 달성하는 것입니다. 

 

출처 : CGAN 논문

 


 

마무리

 여기까지 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

 

만들면서 배우는 생성 AI

딥러닝 기초부터 최신 생성 AI 모델까지 설명합니다. 텐서플로와 케라스를 사용해 변이형 오토인코더(VAE), 생성적 적대 신경망(GAN), 트랜스포머, 노멀라이징 플로 모델, 에너지 기반 모델, 잡음

www.aladin.co.kr

 

실습

2024.04.22 - [Personal Study/Model] - [생성 신경망] CGAN 모델 구현

 

[생성 신경망] CGAN 모델 구현

Conditional GAN (CGAN) 실습 이전 글에서는 CGAN에 대한 이론을 살펴보았습니다. 그럼 이론을 살펴보았으니, 코드를 보면서 구현 실습을 하도록 하겠습니다. 코드에 대한 참고는 글 맨 하단에서 참고하

muns-da2.tistory.com