본문 바로가기
Study (Data Science)/CV

cGAN / Pix2pix

by 콜라찡 2023. 2. 18.

GAN의 목적

1. Pg -> Pdata (만들어낸 이미지의 분포가 실제 이미지의 분포로 수렴하면 성공)

2. D(G(z)) -> 1/2 (Generator가 만들어낸 결과(G(z))를 Discriminator가 판별했을 때, 1이 진짜, 0이 가까이지만 잘 모르겠어서 1/2로 판별해내면 성공. 첨에는 0으로 잘 가려내겠지만 나중에는 1인가? 하다가 결국 그 평균인 1/2에 수렴해야함)

D모델과 G모델 각각의 Max를 더하여서 최종적으로 그 값이 Min이 되도록 노력 좀 해봐랏.

  • D(x) : x는 진짜에서 뽑아온 분포니, D가 판별했을 때 진짜이도록, 즉 1이 되도록
  • D(G(z)) : G(z) output 자체가 가짜니
    • D입장에서는 ; D가 판별했을 때 가짜이도록, 즉 0이 되도록
    • G입장에서는 ; D가 판별했을 때 진짜이도록, 즉 1이 되도록
  • 결국, log 1 + log 0.5 가 될 것임.

log 0 = undefined 

log 0.5 = 약 -0.301 

log 1 = 0

cGAN의 목적 (Conditional GAN)

condition 을 concated 하여 input으로 함께 제공하고,  (like guideline) 더 정확한 이미지를 생성하도록 함

 

pix2pix의 목적

손스케치만 되어있는 input picture로  label인 REAL pic과 유사한 FAKE pic을 generator가 생성해내는 것. 

유의점 : condition을 나타내는 문자가 y에서 x로 변경된 것 주의.

구조 :  U-NET + L1 + cGAN + patchGAN

  • U-NET을 쓴 이유 
    • Encoder-Decoder 방식과 달리 그 구조가 >< 이러하여 사진에서 사진이라는 데이터 형질을 잘 반영할 수 있게 해주고, > 부분의 사전정보를 < 쪽으로 잔차연결처럼 정보를 제공하여 좀 더 쉽고 정확한 정보로 학습할 수 있음.
  • L1을 쓴 이유
    • L1 : MAE (Absolute) / L2 : MSE (Squared)
    • L1은 실제-가짜간의 편차의 절대값이라 outlier에 L2보다 less sensitive, blurry함
    • L2보다 기울기 손실의 가능성이 적기 때문에 보다 안정적인 학습이 가능함
    • 실제 이미지와 정확하게 일치하는 복제본을 생성하도록 강제하지 않아 다양한 출력이미지가 가능
  • GAN이 아닌 cGAN을 쓴 이유
    • condition인 손으로 그린 그림을 함께 input으로 전달하면서 훨씬 real image에 가까운 이미지가 생성가능
    • GAN은 노이즈를 input으로 받아 sharp한 형태의 output을 위해 많이 학습 필요
  • patchGAN이란
    • Discriminator 모델이 사용하는 부분적인 GAN
    • patch를 단위로 진짜 (1) 와 가짜(0)를 구분하게 됨
    • 좁은단위가 기준이 되어 파라미터 양이 적고, 시간단축 가능
    • 더 디테일한 피드백으로 real image에 가까운 학습을 도움
    • 이미지의 위치적 특성이 많이 들어갈 수 있음
    • Generator가 더 다양한 이미지를 만들도록 권장하여 diversity good.
    • input 이미지가 커도 별 부담이 없음

 

 

 


참고자료들

https://www.youtube.com/watch?v=ImiD4npRj7k
https://www.youtube.com/watch?v=ImiD4npRj7k

 

https://www.youtube.com/watch?v=ImiD4npRj7k
https://www.youtube.com/watch?v=ImiD4npRj7k
https://www.youtube.com/watch?v=ImiD4npRj7k
https://www.youtube.com/watch?v=ImiD4npRj7k
https://www.youtube.com/watch?v=ImiD4npRj7k

728x90

'Study (Data Science) > CV' 카테고리의 다른 글

Diffusion 2 (Stable diffusion)  (0) 2023.04.12
AE, DAE, VAE  (0) 2023.03.31
OCR (광학문자인식)과 딥러닝  (0) 2023.01.31
생성 모델들 / GAN  (0) 2023.01.17
Convolution Layer 심화학습  (0) 2022.12.29

댓글