AI

생성형 인공지능 이미지 생성 GAN, diffusion

✿(๑❛ڡ❛๑)✿ 2024. 5. 4. 23:56
728x90
SMALL

GAN

  • GAN(Generative Adversarial Networks : “적대적 생성 신경망”)은 AI기술 중 하나
  • 실제에 가까운 이미지나 사람이 쓴 것과 같은 글 등 여러 가짜 데이터들을 생성하는 모델
  • 서로 다른 두 개의 네트워크를 적대적으로(adversarial) 학습시키며 실제 데이터와 비슷한 데이터를 생성(generative)해내는 모델
  • 생성된 데이터에 정해진 label값이 없기 때문에 비지도 학습 기반 생성모델로 분류됩니다.

학습 방법

  • GAN은 Generator(G,생성모델/생성기)와 Discriminator(D,판별모델/판별기)라는 서로 다른 2개의 네트워크로 이루어져 있음
  • 이 두 네트워크를 적대적으로 학습시키며 목적을 달성. 생성모델(G)의 목적은 진짜 분포에 가까운 가짜분포를 생성하는 것이고 판별모델(D)의 목적은 표본이 가짜분포에 속하는지 진짜분포에 속하는지를 결정
  • 이 2가지 모델을 포함한 GAN의 궁극적인 목적은 “실제 데이터의 분포”에 가까운 데이터를 생성하는 것이며, 따라서 판별기가 진짜인지 가짜인지를 한 쪽으로 판단하지 못하는 경계(가짜와 진짜를 0과 1로 보았을 때 0.5의 값)에서 가짜 샘플과 실제 샘플을 구별할 수 없는 최적 솔루션으로 간주

평가지표

  • 정성적 지표 : 사람이 이미지 평가(비용 많이 듦)
    • Nearest Neighbor, Rating and Preference Judgement, Rapid Scene Categorization
  • 정량적 지표 :
    • FID(Freechet Inception Distance), IS(Inception Score), Mode Score, Maximum Mean Discrepancy

한계

  • 기술적으로 고해상도 이미지를 생성할 수 없음
  • 학습이 불안정
  • 악용 가능성도 존재

종류 (한계 극복 방안)

  • DCGAN :CNN을 이용해서 discriminator 구현하고, deep convolutional neural network을 이용해서 generator를 만듦
  • SRGAN
  • CycleGAN
  • cGAN(Conditional Generative Adversarial Networks) :판별기가 훈련하는 동안 추가 정보를 사용해 조건이 붙는 생성적 적대 신경망 → label값 필요

https://youtu.be/AVvlDmhHgC4?feature=shared

    • 분류모델과의 구분 : 분류모델은 특정한 decision boundary를 학습한다면, 생성모델은 각각의 클래스에 대해서 적절한 분포를 학습
    • 목표 : 이미지 데이터의 분포를 근사하는 모델 G를 만드는 것 모델 G의 학습이 잘 되었다면 통계적으로 평균적인 특징을 가지는 데이터를 쉽게 생성생성모델 : 실존하지 않지만 있을 법한 이미지를 생성할 수 있는  델
  • GAN

생성자 : 노이즈 벡터(z는 하나의 노이즈를 샘플링할 수 있는 Distribution)로 부터 입력을 받아서 새로운 이미지를 만듦/ 가짜 이미지가 판별자에 의해 진짜라고 구분될 수 있도록(1에 가깝도록) 학습

판별자 : 진짜와 가짜를 받아서 진짜에는 1, 가짜에는 0을 부여할 수 있도록 학습

목적함수 : 생성자인 G는 V의 값을 낮추고자함, 판별자인 D는 V의 값을 높이고자함

  • GAN의 수렴 과정

공식의 목표 = 생성자의 분포가 원본학습데이터의 분포를 따르도록 만드는것

판별자는 가짜와 진짜를 구분할 수 없어 확률값을 항상 1/2을 내보냄

  • GAN 알고리즘 (프로그래밍상에서의 구현)
        • for k steps do : k번 discriminator 학습 m개의 노이즈를 뽑은 뒤 m개의 원본데이터 샘플링 → 기울기값을 구하고 경사를 타고 ascending → 식의 값을 최대화end for : generator 학습 m개의 노이즈를 뽑은뒤 m개의 가짜 이미지를 만듦 → 기울기값을 낮추는 방향으로 생성자 학습for the number of training iterations do : 학습의 반복횟수만큼 반복(epoch)
  • 실습 https://colab.research.google.com/drive/1V-zDvefmaGmbJrC5kDgA0bXg6QAOhb9P?authuser=1#scrollTo=K54Z7PNIqTkO

https://youtu.be/odpjk7_tGY0?feature=shared

  • DCGAN

CNN을 이용해서 discriminator 구현하고, deep convolutional neural network을 이용해서 generator를 만듦

  • 특징 : 산술적 연산 가능 (안경낀 남자- 남자 +여자= 안경낀 여자)
  • LSGAN Gradient Vanishing문제를 해결

cross entropy loss를 least squares loss로 변경

  • Semi-Supervised GAN discriminator가 클래스를 구분. fake class를 추가하여 discriminator는 이를 fake label로 구분해야함 generator는 input으로 준 one-hot vector와 output이 똑같이 나올수 있도록 학습
  • CycleGAN

https://youtu.be/v3CShIspUfE?feature=shared

참고

GAN 소개

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

GAN 구조 처음 나온 논문(DCGAN)

https://arxiv.org/abs/1511.06434

https://ysbsb.github.io/gan/2020/12/05/DCGAN.html

https://velog.io/@wilko97/논문리뷰-DCGANs-ICLR-2016

== DCGANs이라는 CNN기반의 GANs 네트워크가 unsupervised learning에서도 강력히 사용될 수 있다

의료gan.pdf

 

 

Diffusion model

https://process-mining.tistory.com/182

https://ffighting.net/deep-learning-paper-review/diffusion-model/diffusion-model-basic/

https://velog.io/@hewas1230/StableDiffusion

 

728x90
LIST