논문 : Image-to-image translation with conditional adversarial networks.

저자 : Isola, P., Zhu, J. Y., Zhou, T., & Efros, A. A. (2017)


Why do we choose cGAN?

# CNN과의 차이점

-어떻게 최소화 하는지 방법을 알려주어야 하는데, 그 과정에서 유클리디안 방식을 사용

-유클리디안 방식을 사용하면 흐리게 나옴(모든 출력의 평균을 최소화 하기 때문)

→ 목표 : 출력 이미지를 현실과 구별할 수 없게 내놓으면서도 목적에 맞게 로스 함수를 자동으로 학습

기존 방식

Conditional GANs

픽셀 단위의 classification or regression으로 문제 해결

각 출력 픽셀들은 다른 픽셀들에 서로 독립적이라고 생각

Unstructured 출력 공간 개념

Structured loss 사용

     : 주어진 목표 이미지와 출력의 다름을 penalize 하는 것

Generator U-net 사용

DiscriminatorPatchGAN 사용

# cGAN

G,D에 특정 condition 나타내는 정보 “y”더해줌

Generator GDiscriminator D가 실제 이미지인지 구분하지 못하는 출력을 내도록 학습되고

DGenerator가 생성한 이미지를 “fakes”로 구별할 수 있도록 훈련된다.

※ Z가 필요한가?

-Z의 유무가 큰 영향을 끼치지는 않지만, deterministic한 결론을 피하기 위해 dropout 형태로 여러 layer에 노이즈 줌 

* Deterministic : 입력값에 다라 출력값이 결정되는 것.

* Dropout : 네트워크의 일부를 생략, 모델결합에 투표효과를 주어 신경망 성능 향상

Method

# cGAN목적함수(Objective)

G는 목적함수를 최소화하는 방향으로, D는 최대화 하는 방향으로 나타냄

# L1 (맨하튼 거리)

격자 방식으로 픽셀상 거리를 나타냄, L2 유클리디안 거리는 블러리한 이미지 만들어냄

# 최종 목적함수(Objective)

Generator with skips

이전에는 입력이 여러 레이어를 통하면서 점점 다운샘플링 되고병목 레이어를 통화하고 나면 이러한 과정을 거꾸로 진행하는 처리

입력과 출력 사이에서 저수준의 정보를 공유   → 더 좋은 화질의 이미지 출력 가능

 i과 층 ni 잇는 skip connection만듬 (n은 전체 층의 )

skip connection은 층 i의 모든 채널을 그대로 ni층에 붙어있음

Markovian discriminator (PatchGAN)

#PatchGAN이란?

전체 영역이 아니라 특정 크기의 patch 단위로 가짜/진짜를 판별하고 그 결과에 평균을 구하는 방식

L1은 저주파 영역을 감당하고 D는 고주파 성분에 집중하여 가짜/진짜 여부를 판단함

픽셀들간의 연관성을 거리에 비례하여 작아짐(일정거리 이상 떨어지면 상호간의 관계가 의미가 없어짐)

특정 크기의 patch에 대하여 선명한 이미지 생성 비율을 찾고 학습을 한다면 G의 성능은 향상됨

전체 이미지의 가짜/진짜를 가리는 것보다 상관관계가 유지되는 범위의 적절한 크기를 정하는 것이 효율적임

 

Conclusion

# L1 + cGAN

전반적으로 보면 cGANGAN보다, 그리고 L1과의 combination이 더 좋은 결과를 내어줌.

DConditioning이 없는, Dx를 보지 않는 모델(GAN이라 표기/G에는 있음)

     사실 인풋과 아웃풋의 mismatch를 따지는 모델이 아니기 때문에 이 metric에서는 안좋은 성능일 수 밖에 없음.

L1을 사용한다는 것 ⇒ Discriminator가 하는 일은 변함이 없지만, GD를 속이는 일 뿐 아니라

    ground truth와의 L1 distance를 줄이는 일을 동시에 함

cGAN(특정) input과 비슷한 (특정) output을 생성하도록 지도받음

L1 lossground truth와 생성된 output이 서로 비슷해지도록 지도함

# Colorfulness

cGANcolor distributionground truth와 얼마나 matching하는지에 대한 표 (빨간색)

L1 이 더 narrowdistribution을 보이는데, averaged / grayish color를 만들어내기 때문

cGAN이 더 실제에 가까운 color distribution보임

# Fully-convolutional translation

PatchGAN은 고정된 패치 discriminator를 사용하므로 어떠한 이미지 크기에도 적용할 수 있다.

마찬가지로 generator또한 복잡하게 적용할 수 있으므로 학습할 때 보다 더 큰 이미지에도 적용할 수 있다.

256*256으로 학습했지만 512*512 결과물을 낼 수 있음

#  Semantic segmentation (영상분할)

아웃풋이 복잡하지 않을 때, 반대로 실험해본 결과

Photo에서 Lables로 바뀌는 값은 L1 loss만 사용하는 방법이 더 효과적

cGAN이 더 샤프한 아웃풋을 내주지만, 존재하지 않는 작은 오브젝트를 만들어냄

각각의 Traning Data에서 최대 3000장 정도가 사용/Architecture에서 Photo로 바꾸는 경우에는 400장밖에 사용

또한, training batch size1 또는 4로 작게 가져가고  4일때는 Batch Normalization을   1일때는 Instance Normalization사용

온라인에서도 변환가능  https://affinelayer.com/pixsrv/index.html

+ Recent posts