데이터 과학

GAN(Generative Adversarial Network) 본문

인공지능/딥러닝 -파이썬 인공지능

GAN(Generative Adversarial Network)

티에스윤 2022. 11. 7. 15:43

- 내용 수정 중- 

 

GAN(Generative Adversarial Networks))의 의미이며 생성자(Generator)와 판별자(Discriminator)의 역할 주고 받으면서 학습하는 딥러닝 알고리즘입니다.  

 

기본적인 알고리즘은 CNN을 기반으로 작성되며 minmax problem으로 생성자와 판별자로서의 기능을 나타내는 알고리즘입니다. 

이 알고리즘으로 딥페이크와 같은 이미지 처리 분야에 적용되고 있으며 이미지 학습과 관련되어 많은 예제들이 나타나고 있습니다. 

 

https://pseudo-lab.github.io/Tutorial-Book/chapters/GAN/Ch1-Introduction.html

 

1. GAN 소개 — PseudoLab Tutorial Book

1.2.2. cGAN cGAN은 Conditional Generative Adversarial Networks의 약자로 생성기와 판별기가 훈련하는 동안 추가 정보를 사용해 조건이 붙는 생성적 적대 신경망입니다. GAN과는 ‘샘플링을 어디서 해오는지’

pseudo-lab.github.io

https://ettrends.etri.re.kr/ettrends/184/0905184009/35-4_91-102.pdf

https://www.samsungsds.com/kr/insights/generative-adversarial-network-ai-2.html

 

GAN의 놀라운 개념을 증명시켜주는 유명한 사례에는 이미지의 산술적인 연산이 있습니다. ‘안경을 쓴 남자’ 이미지를 생성하는 z 에서 ‘안경을 쓰지 않은 남자’ 이미지의 입력인 z 를 빼고 ‘안경을 쓰지 않은 여자’ 이미지에 해당하는 z 를 생성자 G에 넣어주면 ‘안경을 쓴 여자’ 이미지가 아래 그림처럼 생성된다는 것이 밝혀졌습니다.

이는 GAN 생성자의 결과물을 우리가 원하는 데로 마음껏 조작할 수 있다는 가능성을 확인한 것이며, 단순한 데이터의 분류로서의 이해가 아닌 새로운 것을 창조할 능력을 가지게 된 것을 의미합니다. (출처: https://www.samsungsds.com/kr/insights/generative-adversarial-network-ai-2.html)

 

 

이와 관련되어 캐글에서 여러가지의 예제가 있으며 pytorch와 텐서플로우 기반 라이브러리를 활용한 예제들이 나타나고 있습니다. 문제는 학습 시키는데 어느 정도의 GPU 성능이 의존적이며 이에 대한 시스템 환경이 구성되어야 한다는 점이 있습니다. 

 

 

starter-anime-face-dataset.ipynb
0.01MB

 

https://www.kaggle.com/code/nassimyagoub/gan-anime-faces

 

art of GAN이라는 예제를 통해 알고리즘의 핵심적인 내용을 이해해 봅시다. 

 

https://www.kaggle.com/code/karnikakapoor/art-by-gan/notebook