chullhwan-song/Reading-Paper

Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks

chullhwan-song opened this issue · 1 comments

What?

  • cyclegan
  • pixel2pixel 연구가 기반.
  • 하지만, 이 연구는 다음처럼 이미지 매칭 Pair 데이터가 있어야한다.
    image
  • 실제로 이러한 학습셋은 구하기 어렵다.
  • cyclegan에서는 이러한 문제를 해결한다. 즉, image to image 가 아니라, domain to domain(image) 관계로 설정한다. 이러한 논리는 선행 연구인 pixel2pixel의 학습셋 문제를 해결
  • 여기에 또하나의 특징이 있는데 이름(cyclegan)에서 언급했듯이, 거꾸로 가는 형태(왔다갔다) 즉, image의 개념을 추가한다. 이는 G에서 발생된 Y를 마치 새로운 Input으로 하고 G(Y)가 원래 X처럼 나오길 바라는 형태이다.
    • X > G(X) > Y > G(Y) > X 형태이기때문에, CycleGAN으로 이름을 지은듯하다.

data set 구성

  • image pair vs domain pair : cyclegan은 domain pair가 있어야한다.
    image

Pixel2Pixel

image

  • Pixel2Pixel에서는 l2 loss 이외에 gan loss를 추가
  • l2 loss 만으로는 그냥 중간값을 취하려는 형태로 generator하지만, gan loss를 추가함으로써, 좀더 디테일한 결과를 얻을수 있다.

CycleGAN

  • 앞에서 언급한거와 같이 Pixel2Pixel은 나쁘지 않는 결과를 얻을 수 있다. 하지만, 학습셋 구성에 있어서, image2image pair를 구성해야하는데 이는 쉽게 구할수 없다.
  • 그래서 다음과 같은 pair로 주어졋을때, 즉, 특정 화가의 풍경사그림이 주어졌을때, 실제 그 풍경과 매칭되는 똑같은 장소의 사진이 아니라, 그냥 매칭되지 않는 풍경 실제사진을 주어졌을때의 문제를 cyclegan이 푼다.
    image

Formulation

  • 목표는 Domain X를 Doman Y로 mapping 하는 function을 학습하는것이다. 이를 위해 위에서 언급한 두개의 매칭 함수를 학습.
    image

  • 이를 그림으로 풀어보면,
    image

    • X > G(X) > Y를 생성하고, G(X) 를 진짜인지 가짜인지 구분하는 D(Y)를 학습 > D(Y)가 위의 예제처럼 실제 이미지처럼 만드는지?
    • 반대로, Y>G(Y) >를 생성하고, G(Y)가 실제 X와 동일하게 만드는지( D(X)를 학습. > D(X)가 위의 예제처럼 반대로 특정 화가풍으로 만드는지..(여기서는 실제 X와 동일하게만드는지를 보는것같다.)
  • 실제로 이 개념하에서, 이 논문은 크게 두개의 loss가 제안한다.

  • Adversarial Loss
    image

    • 위의 개념(image) 으로, 반대방향의 loss(image)도 주어짐.
    • 실제 적용에 있어서는, 논문의 실험에서 나오는데, cross-entropy 개념이 아닌, least square error 개념의 적용결과가 더 좋았다고 한다.
    • vanishing gradient 문제발생 - 밑에 보면 0이..
      image
  • Cycle Consistency Loss

    • 이는 pixel2pixel 개념의 loss를 추가한것이다.
    • pixel2pixel loss에서 보면, 빨간색 부분이고 이 오른쪽은 당연히 gan loss이다. 기본 개념은 pixel2pixel에서 따온것이다.
      image
    • 다만 여기서 Backward 개념을 추가한것이다. 다음처럼 표현,
      image
  • 그래서 최종적으로 다음과 같이 정리/표현한다.
    image
    image

    • 여기서 중요한것이 있는데, gan loss만 적용한다면, "mode collapse" 문제가 일어난다. 즉, image2image pair개념이 아닌 domain2domain개념이기때문에, 입력값을 잃어버리는 현상이 일어나서, 다음의 그림의 Gan alone일때의 모습처럼 똑같은 그림결과만 나온다.
      image
  • Generator G : network

    • U-Net같은 encoder-decoder 구성을 지닌 아닌, Resnet(skip connection)을 적용했고, 7 layer인가를 적용했다고..장점은 좀더 그 도메인에 맞게 리얼리스틱하게 구성한다. 단점은 모양이 변하는 구성에는 약하다.
      image

실험

image
image

  • 특정 주제에 대해, identity mapping loss 개념을 추가하면 좀더 좋은 결과를 얻을수 있다.
    image