[논문리뷰] Perceptual Adversarial Networks for Image-to-Image Transformation

2022. 1. 18. 16:55논문리뷰/GAN

https://arxiv.org/abs/1706.09138

 

Perceptual Adversarial Networks for Image-to-Image Transformation

In this paper, we propose a principled Perceptual Adversarial Networks (PAN) for image-to-image transformation tasks. Unlike existing application-specific algorithms, PAN provides a generic framework of learning mapping relationship between paired images (

arxiv.org

 

최근 GAN에 많은 관심이 있어서 관련 논문을 차근차근 읽어가고 있는 중이다. 이번 논문은 이전에 많이 사용되었던 perceptual loss를 다른 관점에서 GAN에 접목시켜 image-to-image translation에서 더 perceptual한 결과를 낼 수 있도록 한다. 차례차례 살펴보도록 하자!

1. Image-to-Image Transformation

 

Image-to-image transformation은 말 그대로 input image를 어떠한 원하는 output으로 변형하는 문제를 말한다. 

 

이는 여러 분야(ex. computer vision, computer graphics)에서 응용이 되고, 가장 흔한 예로는 denoising, in-painting, super-resolution등이 있다.

 

Pixel-wise Loss

위 문제를 푸는 방법 중에 가장 straightforward한 접근으로 output을 pixel-wise로 evaluate하는 방식이 있다.

 

이는 단순히 pixel space에서 distance metric을 통해 output과 ground truth간의 차이를 계산하기 때문에, 어느정도 괜찮은 결과를 뽑아낼 수는 있지만 blurring이나 다른 artifacts 현상이 일어날 수 있다.

**흔히 distance metric을 통해 최적의 parameter를 찾는 방식은 mean 또는 median을 찾으려는 경향이 강하기 때문에 위와 같은 현상이 일어난다.

 

Generative Adversarial Loss

Pixel-wise Loss외에도 GAN모델 또한 image-transformation task에 많이 사용된다. 

 

GAN은 간단히 말해 fake image를 만들어 속이려는 Generator와 fake image와 real image를 구분하려하는 Discriminator로 나누어진다. 이 때 사용되는 Generative adversarial loss는 generated distribution과 real distribution의 차이를 evaluate하는 식이 된다. 즉, 만들어진 이미지를 natural한 real-word 이미지의 분포와 비슷하게 만들기 때문에 더 sharp하고, realistic한 이미지를 만들어낼 수 있다.

 

GAN은 이렇게 현실적인 이미지를 만들어낼 수 있지만, 보통 pair examples를 사용하지 않기 때문에 몇 몇 image-to-image 문제에 적합하지 않을 수 있다. (ex. image in-painting)

 

Perceptual Loss

또 다른 방법으로 Perceptual loss가 있다.

 

이 방식은 output과 ground-truth 이미지 간 high-level perceptural features의 차이를 evaluate한다.

high-level features는 흔히 잘 훈련된 분류 모델(ex. VGG)의 hidden layers를 사용하여 추출되게 된다.

 

이렇게 학습하는 방식은 output image가 ground-truth image와 비슷한 high-level feature를 갖도록 만들기 때문에 여러 artifacts를 완화하고 perceptual quality를 높여주는 효과를 가져온다.

 

하지만 이 방식에도 문제점이 있다. 먼저 well-trained classification network에 dependable하다는 것이고, 두번째는 이러한 network의 features가 classification에  focus되어 학습된 결과이므로 몇 몇 image transformation task에서 잘 동작하지 않을 수 있다는 것이다. 

 

여기서 한 가지 의문이 들을 수 있다.

꼭 external network를 사용해야 하는가?

이 논문에서는 GAN의 Discriminator가 이 역할을 대체할 수 있다고 주장한다.

 

2. Perceptual Adversarial Networks(PAN)

 

결국 큰 틀은 이전의 GAN과 거의 비슷하고, perceptual loss의 external network를 internal network인 disciriminator로 썼다는 점이 가장 큰 차이이다.

 

PAN은 Transformed Network T와 Discriminative Network D 두개의 네트워크로 구성되어 있고, Evaluation에는 Generative Adversarial Loss와 Perceptual Adversarial Loss 두 가지를 결합하여 사용한다.

 

Generative Adversarial Loss

먼저 일반적인 GAN loss를 살펴보자.

Generate network G는 noise distribution $p_z$의 samples가 real-word data distribution $p_{data}$으로 매핑이 되도록, Discriminator network D는 real samples와 generated samples를 구분하도록 minmax 게임을 통해 학습이 된다. 이를 식으로 나타내면 다음과 같다.

 

$$min_G max_D E_{y\sim p_{data}}[logD(y)] + E_{z\sim p_z}[log(1-D(G(z)))]$$

 

이 논문에서도 크게 다르게 사용하지 않는다. 다만, input이 random noise가 아닌 어떠한 이미지일 뿐이다. 즉, pair image를 사용한다는 것이다. 바뀐 식은 다음과 같다.

**input: $x$, ground-truth: $y$

 

$$min_T max_D V_{D,T} = E_{y\in \Upsilon}[logD(y)] + E_{z\in \chi}[log(1-D(T(x)))]$$

 

Perceptual Adversarial Loss

이 논문에서 가장 중점이 되는 부분이다. 이전의 perceptural loss와 다른 부분은 well-trained network로 Discriminator D를 사용했다는 점이고, high-level feature간 차이를 계산하기 위한 metric으로 L1-loss를 사용한다.

 

$$l^{D,j}_{percep} = \frac{1}{N} \sum^N_{i=1} ||d_j(y_i) - d_j(T(x_i))||$$

**여기서 $d_j()$는 $j^{th}$ hidden layer의 image representation을 의미한다. 

 

그리고 Transformation network T와 Discriminative network D의 object에 맞게 loss를 각 각 만들어주면 다음과 같다.

$$L_T = \sum^F_{j=1} \lambda_j l^{D,j}_{percep}$$

$$L_D=[m-L_T]^+ = [m - \sum^F_{j=1} \lambda_j l^{D,j}_{percep}]^+$$

**$[x]^+=max(0,x)$, ${\lambda_j}^F_{j=1}$은 F개의 다른 hidden layer들의 influence를 balancing해주는 hyper-parameter이다.

**positive margin m에 대해서는 논문에서 따로 언급을 하지 않지만, github에서 0.3이라는 상수값을 사용하고, 초기에 Generator에서 생기는 loss값이 너무 크기 때문에 이러한 instability를 보완하기 위한 값이라고 생각이 든다.

 

Perceptual Adversarial Networks

이제 위 내용들을 합쳐서 살펴보자.

Transformation network T와 Discriminative network D의 loss는 다음과 같다.

$$J_T= \theta V_{D,T} + L_T$$

$$J_D=-\theta V_{D,T} + L_D=-\theta V_{D,T} + [m - L_T]^+$$

**$\theta$는 두 loss 간의 가중치 hyper-parameter이다.

 

전체적인 Network Architecture는 위 이미지와 같으며, 간략하게만 설명하겠다. 자세한 구조를 알고 싶으면 논문을 참고하길 바란다.

 

Transformation network T는 흔히 사용되는 Encoder-Decoder 구조를 가지고 있으며, residual connection을 통해서 mirrored layer들을 서로 연결지어준다.

 

Discriminatative network D는 Encoder 구조만 사용하고 generated image와 ground truth image가 input으로 들어가고 output으로는 각 이미지가 real인지 아닌지를 구별한다. 여기서 high-level features로 쓰이는 layer는 $1^{st}, 4^{th}, 6^{th}, 8^{th}$이다.

 

3. Experiments

마지막으로 PAN을 사용한 여러가지 실험들을 살펴볼 것이다.

논문에서는 주로 다른 image-to-image transformation methods와 비교하는 식으로실험결과를 보여주고 있다.

 

snow-streak removal

 

먼저 눈이 내리는 이미지에서 눈을 제거하는 task에 대해서 여러 method들을 적용해본 결과이다. 확실히 다른 방식들과 비교했을 때 가장 natural하고 깔끔한 결과를 보여주는 것을 알 수 있다.

 

Transforming the semanctic labels to cityspace images

 

두번째로는 segmenation label 이미지를 realistic image로 바꾸는 task에서, Perceptual Adversarial Loss에서 Discriminator의 특정 layer만 사용했을 때 어떠한 특징을 가지고 있는지를 살펴보는 실험이다. 

 

lower layers는 patch-to-patch transformation과 color transformation에 집중되어 있는 반면 detail한 부분이 떨어지는 것을 알 수 있고, higher layers는 high-frequency 정보를 잘 잡아내지만 color 정보는 잃어버린 것으로 보인다.

**결과들을 보면 어떠한 무늬들이 일정 간격으로 생기는 것을 볼 수 있는데, 이는 Deconvolution(Transposed Convolution)을 사용하여 생기는 문제라고 한다. 그래서 이를 해결하기 위해 nearest와 같은 non-parametic upsampling을 한 후에 Convolution을 해주는 방법을 사용한다 한다. 정확히 왜 Deconvolution이 저러한 현상을 야기하는지는 좀 더 공부해봐야 알 것 같다.

 

 

마지막으로 hyper-parameter $\theta$값에 따른 실험을 보여준다. $\theta$는 GAN loss와 PA loss 간의 가중치를 control하는 파라메터이고, 값이 커질수록 성능향상이 있었지만 일정 값을 넘어가면 PA loss의 영향이 너무 약해져서 오히려 성능이 떨어진다고 한다.


개념 자체는 간단하지만 결과는 흥미로운 논문이었다고 생각한다. 꽤 오래된 논문임에도 불구하고 image-to-image transformation을 꽤 잘하는 것 같다(물론 실제로 테스트해보아야 알지만). 설명도 직관적이고 방식도 diriect approch이기 때문에 궁금한 점은 별로 없는 것 같다...