Conditional generative model

2021. 3. 11. 22:02·AI/이론
Conditional generative model

Conditional generative model¶


✅ Conditional Generative Model¶

1️⃣ (Basic) GAN vs Conditional GAN¶

image.png

  • D: Discriminator
  • G: Generator
  • 다른 부분은 다 똑같지만 Conditional GAN은 입력에 Conditinal 정보를 넣어주기 위해서 c라는 부분이 존재한다.


2️⃣ 예시: Super resolution¶

image.png

  • Input: 저해상도 이미지
  • Output: Input image에 고해상도 이미지
  • Conditional GAN의 대표적인 예시


image.png

  • 입력은 저해상도 영상이 들어가고 출력은 고해상도 가짜 영상이 나오게 된다.
  • Real 데이터로는 고해상도 이미지를 주어서 판별기가 현재 주어진 생성 영상이 실제 고해상도 영상과 비슷한 통계적 특성을 갖는지를 판단하게 된다.



image.png

원래 기존에는 Regression model를 활용하여 고해상도를 만들었다.

🔎 이 두가지 차이를 비교해 보자¶

image.png

  • MAE / MSE는 픽셀 강도 차이를 측정하지만 유사한 패치가 많이 있다.
    • MAE / MSE는 안정적인 평균 이미지를 생성합니다.
    • 해상도는 높아지는거 같긴 하지만 여전히 만족스러운 sharp한 영상 대신에 blurry한 결과가 나온다. 평균적으로 안정적인 영상을 출력하기 때문이다.
  • GAN 손실은 그것이 진짜인지 가짜인지 암시적으로 비교한다.
    • 가장 비슷한 real data에 가깝게 되어 결과가 좋게 나온다.


📌 평균을 예측한다는 것의 예시¶

조건

  • 과제: 주어진 image에 Coloring
  • real image는 2가지 색을 가진다. "black" or "white"

image.png

위 그림을 보게 되면,

  • L1 loss로 결과를 만들게 되면 결과는 회색이 나오게 된다. 검은색과 흰색의 중간이 평균 loss가 더 낮은 방향 이므로
  • 하지만 GAN loss는 흰색 or 검정색을 출력한다. 왜냐하면 discriminator는 real data가 흰색이거나 검은색만 있으므로 회색을 잡아내기 때문이다.



✅ Image translation GANs¶

1️⃣ Pix2Pix¶

📌 Loss function¶

image.png

  • GAN loss + L1 loss를 합쳐서 사용
  • GAN만 사용하면 실제 데이터 인지를 판단하기 때문에 우리가 기대하고 있는 결과인 y와 비슷한 영상이 나와야 하므로 L1 loss도 같이 사용하게 된다.
  • L1 loss를 가이드로 제공해서 학습을 안정적으로 하는 효과를 준다.

📌 결과¶

image.png



2️⃣ CycleGAN¶

image.png

  • Pix2Pix에서는 두 도메인 간의 번역을 학습하려면 "쌍 데이터"가 필요했다.
  • CycleGAN을 사용하면 쌍이 아닌 데이터 셋이있는 도메인 간 변환이 가능하다.


📌 Loss function¶

image.png

  • GAN loss: X → Y 스타일로 가는 방향과 Y → X 스타일로 가는 방향을 같이 학습을 진행한다.
  • Cycle-consistency loss: 이미지와 만들어진 이미지가 양방향으로 동일해야 한다.


📌 GAN loss¶

image.png

  • GAN loss는 Translation을 하게 된다.
  • CycleGAN은 두가지 GAN loss를 가진다. (X → Y, Y → X)
  • GAN loss: $L(D_{X})+L(D_{Y})+L(G)+L(F)$
  • G,F: generator
  • $D_{X},D_{Y}:$ disciminator

❗ 문제점¶

  • 하지만 이렇게 GANloss만 사용하게 되면 입력에 관계없이 생성기는 항상 동일한 것을 출력 할 수 있다.(Mode Collapse)
  • 입력 내용이 출력에 제대로 반영되지 않는다.


📌 Cycle-consistency loss¶

image.png

  • X의 이미지를 Y로 변환하고 출력 이미지를 다시 X로 변환
    • 복구 된 이미지는 원본 이미지와 동일해야 한다.
  • 이렇게하면 이미지의 내용을 보존하게 된다.
  • No superviseon(self-supervision)



3️⃣ Perceptual loss¶

GAN loss

  • 훈련 및 코딩이 상대적으로 어렵다 (Generator & Discriminator가 적대적으로 개선됨)
  • pre-trained network가 필요하지 않다.
  • pre-trained network가 필요하지 않으므로 다양한 application에 적용가능

Perceptual loss

  • 학습 및 코딩이 간단하다 (단순한 순방향 및 역방향 계산으로 학습 됨).
  • 학습된 loss을 측정하기 위해 pre-trained network 필요


image.png

  • Image Transform Net: 입력에서 변환 된 이미지 출력

    • 이 결과로 나온 값이 $\hat{y}$이다.

  • Loss Network: 생성된 이미지와 대상 이미지 사이의 style and feature loss를 계산한다.

    • 일반적으로 ImageNet으로 미리 학습된 VGG Model을 사용
    • Transfor Net은 학습 과정에서 수정된다.


📌 Feature reconstruction loss¶

image.png

  • 변환된 이미지와 Content Target이미지가 loss network에 들어가게 된다.
  • L2 Loss를 계산한다.
  • 이때 들어가는 Content Target이미지는 일반적으로 원래 입력 이미지가 된다.
  • Content가 변한지 않았다는 것을 판단


📌 Style reconstruction loss¶

image.png

  • Style Target에는 우리가 변환하고 싶은 Style의 이미지를 넣어준다 (ex. 반 고흐의 이미지)
  • 위와 같이 2개의 값을 L2 Loss를 계산한다.



✅ Various GAN applicaions¶

- Deepfake¶

- Face de-identification¶

- Video translation(manipulation)¶

'AI > 이론' 카테고리의 다른 글

Multi-modal tasks II (Visual data & Audio)  (0) 2021.03.12
Multi-modal tasks I (Visual data & Text)  (0) 2021.03.12
Panoptic segmentation  (0) 2021.03.11
Instance segmentation  (0) 2021.03.11
torch.autograd  (0) 2021.03.10
Object Detection  (0) 2021.03.10
Semantic segmentation  (0) 2021.03.09
Image classification II  (0) 2021.03.09
'AI/이론' 카테고리의 다른 글
  • Panoptic segmentation
  • Instance segmentation
  • torch.autograd
  • Object Detection
N-analyst
N-analyst
  • N-analyst
    개발자CuCu
    N-analyst
  • 전체
    오늘
    어제
  • 공지사항

    • 티스토리에서 원하는 글 찾는 방법
    • 분류 전체보기 (140)
      • 티스토리 (4)
      • 알고리즘 (5)
        • 알고리즘 정리 (1)
        • 백준 (4)
      • 마크다운(Typora) (13)
        • 사용법 (13)
      • 에러 (1)
        • 파이썬 (1)
      • 데이터 분석 (5)
        • python_analysis (3)
        • Machine Learning (2)
      • AI (109)
        • 파이토치로 시작하는 딥러닝 기초 (2)
        • 부스트 캠프 AI tech (41)
        • 이론 (66)
      • 파이썬(python) (1)
        • 기타 (1)
      • 웹 프로그래밍 (1)
        • 설정 팁 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.6
N-analyst
Conditional generative model
상단으로

티스토리툴바