본문 바로가기
컴퓨터비전(CV)/논문 리뷰

[논문 리뷰] Perceptual Losses for Real-Time Style Transfer and Super-Resolution

by jun0823 2022. 5. 9.
반응형

https://arxiv.org/abs/1603.08155

 

Perceptual Losses for Real-Time Style Transfer and Super-Resolution

We consider image transformation problems, where an input image is transformed into an output image. Recent methods for such problems typically train feed-forward convolutional neural networks using a \emph{per-pixel} loss between the output and ground-tru

arxiv.org

 

0. abstract

 

 기존 image transformation 문제에서는 모델의 output과 ground-truth images 사이의 per-pixel loss를 최소화하는 방법으로 구현되었다.

 

 이 논문에서는 Perceptual loss function을 최적화하는 방법을 통해 high-quality의 image를 생성할 수 있도록 하였다.

 

 이러한 방법은 기존 모델들과 비슷한 result를 보였지만 three orders of magnitude 정도 빠르다고 한다.

 

 또한 super resolution을 위해 per-pixel loss 대신 perceptual loss를 사용하였다.

 

 

1. Introduction

 

 기존 image transform을 다루는 한가지 방법으로는 output과 ground-truth 사이의 per-pixel loss function을 사용하여 train하는 방법을 사용하였다.

 

 이러한 방법은 network의 forward pass만을 필요로 하기 때문에 장점이 있다.

 

하지만 per-pixel losses는 직접 눈으로 보았을 때의 차이를 정확히 잡아내지 못한다.

 

 

예를들어 사과가 담긴 두장의 사진이 있다.
우리의 눈으로 두 사진을 인식하였을 때 두 사진은 단지 좌우반전만 이루어졌을 뿐 
두 사진 모두 사과를 담고있는 사진으로 인식할 뿐만 아니라 
두사진이 같은 사진이라고 생각할 것이다.

 

우리 눈은 두 이미지가 서로 같다고 인식하지만 per-pixel loss의 경우 두 이미지는 매우 다르다고 판단할 것이다.

 

같은 위치의 픽셀에 대해서만 비교를 하기 때문에 좌우 반전된 두 이미지를 계산하는 loss는 크게 나타날 것이고, 학습에 문제가 생기게 될 것이다.

 

두번째 MSE의 문제점으로는 바로 MSE의 수식에 있습니다
바로 모든 픽셀에 대해 평균을 낸다는 점인데요
이부분은 예시를 통해 확인해 보겠습니다

 

 

왼쪽 feature map에 대해 오른쪽 feature map은 C x H x W = 9로 나누어 평균으로 계산

 

 왼쪽은 평균을 내기 전 feature map이고, 오른쪽은 평균을 계산한 feature map이다.

 왼쪽 feature map에서는 각 픽셀값의 차이가 99이기 때문에 경계가 뚜렷이 구분되는 것을 확인할 수 있습니다.


 하지만 오른쪽 feature map에서는 channel의 수는 1, 가로 세로가 3이므로 9로 모든 픽셀에 해당하는 값을 나누었는데
이에따라 픽셀값의 차이가 99에서 11로 줄어들어 경계가 모호해 지는 것을 확인할 수 있다.

 이미지 검출이나 화질 개선(resolution)의 문제에서는 object의 edge를 뚜렷하게 나타내는 것이 중요하다.

 

 그래서 최근의 work에서는 per-pixel loss 대신 pretrained networks에서 추출된 feature representations들의 차이를 계산하는 perceptual loss를 사용한다. (jth layer's output = feature representations)

 

 이 논문에서는 low-level pixel information에 의존하는 per-pixel loss 대신 pretrained loss network로부터 추출된 high-level features 를 사용하는 perceptual loss를 사용한다.

 

두 feature map을 비교하는 이유는
픽셀단위로 정확히 일치하였을 경우만 생각하는 경우가 아닌 이미지를 추상화 시켜 비교하여
우리 눈이 인지적으로(perceptually) 보았을 때 비슷하다고 느낄 수 있도록 하기 위함이다.

 

 또한 사전학습된 network를 사용하는 이유로는

이미 입력된 image에 대해 적절히 추상화된 feature map을 network가 기억하고 있다는 것인데,
이는 인지적이고, 의미를 나눌 수 있는 정보들을 이미 모델이 가지고 있기 때문이다.

 

 이 loss의 또다른 장점은 per-pixel보다 더욱 명확하게 유사성을 측정하고, real-time에 작동한다는 것이다.

 

2. Related Work

(추후 수정)

 

3. Method

 

논문에서 사용된 두가지 방법은 바로 image transformation network f, loss function이다.

weight update 수식을 보면

weight update fucntion

 

수식에서 보면

 

W라는 weight를 가지고 있는 f transform fucntion에서 추출된 output과 target image인 y 사이의 loss를 계산하고,

하이퍼 파라미터인 람다 i와 곱한 후 모든 dataset에 이 과정을 수행한 것(각각 dataset에 해당하는 losses)을 더한다.

그중 error를 최소로 하는 weight 값을 찾아 그 weight 값으로 update를 하는 것이다.

 

우리는 loss function으로 perceptual loss를 사용하였는데, 이러한 방법의 key insight는 이미지 분류를 위해 사전 훈련된 conv network가 loss function에서 측정하고자 하는 지각 및 의미 정보(perceptual and semantic information)를 인코딩하는 방법을 이미 학습했다는 것이다.

 

우리의 loss function φ는 'feature reconstruction loss'와 'style reconstruction loss'로 나눌 수 있는데, 이는 content에 해당하는 loss와 style에 해당하는 loss를 구분하여 학습을 진행하겠다는 의미이다.

따라서 각각의 input image당 content target 'yc', style target 'ys'를 가진다.

 

style transfer에서는 content target yc와 input image x가 서로 같고, style target 당 하나의 network로 학습을 진행한다.

 

single-image super-resolution에서는 input image x는 low-resolution input이고, content target yc는 ground-truth high-resolution image이다. 또한 이때 style reconstruction loss는 사용되지 않는다.

super-resolution factor 하나당 하나의 network를 이용하여 학습을 진행한다.

 

 

3-1 Image tranformation networks

 

 이 모델에서는 다른 pooling layer를 사용하지 않았다. 대신에 for in-network downsampling and upsampling에서 strided and fractionally strided convolutions들을 사용하였다.

 

 또한 다섯개의 residual block들로 구성되어 있다. residual conv layer가 없는 부분은 spatial batch normalization과 ReLU를 뒤에 이어 붙이는 방법을 택하였다.(output layer 제외)

 

 이때 tanh 대신 ReLU를 선택하였는데, 그 이유는 output image가 [0,255]의 range를 갖도록 하기 위함이다.

 

 모델의 첫번째와 마지막 layer에서는 9x9 kernels을 사용하였고, 다른 conv 에서는 모두 3x3의 kernel을 사용하였다.

 

Inputs and Outputs

 

style transfer에서의 input과 output의 image shape은 모두 3x256x256이다.

 

super-resolution에서의 output shape은 2x288x288이고,

upsampling factor를 f라고 한다면, input의 shape은 3x288/f x 288/f이다.

 

Downsampling and Upsampling

 

 super-resolution에서 upsampling factor를 f라고 한다면, 이 stride를 1/2로 하는 conv layer를 가지는 모델의 residual block의 개수는 log2 f이다.

 

 style transfer에서 downsample을 진행할 때에는 several residual block뒤에 2 stride를 가지는 두개의 conv를 사용하고, upsample의 경우 1/2의 stride를 가지는 두개의 conv를 사용한다.

 

input과 output이 같은 size를 가지는 것은 몇가지의 benefit을 가지는데

 

첫번째는 바로 computational하다는 것이다.

 

두번째는 effective한 receptive field size를 가질 수 있다는 것이다.

이때 receptive field size란 출력 레이어의 노드 하나에 영향을 미치는 입력 레이어의 공간 크기를 의미한다.

 

 

3-2 Perceptual Loss Fucntions

 

이 논문에서는 두가지의 loss function을 제시하였고, 이때 loss function은 ImageNet dataset으로 pretrained된 VGG16를 사용하였다.

 

pretrained network를 사용하는 이유는 각 image에 대한 적절한 feature map을 갖고 있기 때문인데, input image가 들어온 경우 network는 이미 pretrained 되어있기 때문에 어느 class로 가야할지 알고 있고, image input으로 들어왔을 때  어떻게 추상화 되어야 할지 이미 알고 있기 때문에 속도 측면에서 우수하다.

 

Feature Reconstruction Loss

 

이 논문에서 model의 output image y_hat이 얼마나 target image y의 픽셀과 정확히 일치하는지를 파악하는 것이 아닌, loss network φ로부터 출력된 feature들이 얼마나 유사한지를 파악한다.

 

φj (x)를 loss network φ의 j 번째 layer의 출력 결과라고 하자.

j가 conv layer라면 Cj x Hj x Wj의 shape을 가지는 feature map이 출력될 것인데,

 

이때 feature reconstruction loss는 두개의 feature representations 사이의 유클리디안 거리를 이용하여 loss를 구한다.

 

feature reconstruction loss function

이때 우리는 위 수식을 최소화 하는 y_hat을 찾아 y와 비교하였을 때 visually indistinguishable 한 image를 생성하도록 하는 것이 목표이다.

 

또한 우리는 higher layer로 갈지라도 흐릿한 사과와 바나나의 모양을 볼 수 있듯이 higher layer에서 reconstruct를 진행하기 때문에 image content와 overall spatial structure가 유지 되지만(high layer에서는 추상화가 많이 이루어지기 때문), color, texture, exact shape는 유지되지 않는다.

 

high-layer로 갈수록 content는 유지되지만 color는 유지되지 않는 것을 확인할 수 있다.

 

이러한 이유는 Pre-trained 된 네트워크 모델의 뒷부분으로 갈수록 대략적인 Edge로부터 구체적인 패턴의 Feature를 추출할 수 있는데, 때문에 이미지 상의 전반적인 구조를 표현하는 특징을 추출하기 위해 뒷 단 Hidden Layer 의 출력값을 하나만 사용한다.

 

style reconstruction loss

 

위에서와 같이 φj (x)를 loss network φ의 j 번째 layer의 출력 결과라고 하자.

j가 conv layer라면 Cj x Hj x Wj의 shape을 가지는 feature map이 출력될 것인데,

 

우리는 이때 gram matrix G φ j (x) (이하 G(x))를 정의할 수 있는데, 이 gram matrix는 두 벡터의 내적으로 구할 수 있고, Cj x Cj size를 가지는 행렬이다.

 

 

Gram matrix를 구하는 fucntion

φj (x)가 Hj x Wj point에서 Cj dimentional feature를 가지고 있다고 생각한다면, G φ j (x)는 Cj dimentinal feature의 uncentered covariance의 부분이라고 생각할 수 있고, 이때 각각의 grid location은 서로 independent한 sample이라고 생각할 수 있다.

 

Gram matrix는 쉽게 φj (x)를 Cj x HjWj의 size를 가지는 'ψ' matrix로 변환할 수 있는데, 이때 gram matrix의 수식은

'G φ j (x) = ψψT / CjHjWj' 로 나타낼 수 있다. (ψψT = ψ와 ψ의 내적)

 

 이러한 Gram matrix는 두 feature 사이에 얼마나 유사한지를 나타내는 지표로 사용하는데, 왜냐하면 어떤 부분의 특징을 잘 나타낼 수록 ψ point의 값이 커질텐데, 그 둘을 서로 내적하여 Gram matrix의 결과로 나타내므로, 같은 특징을 가질수록 두개의 ψ point의 값이 더욱 커지기 때문에

 Gram matrix에서는 같은 특징을 가질 수록 큰 값을 가질 것이고, 같은 위치의 픽셀에서 특징이 서로 다른 경우에는 내적 값이 작아질 것이기 때문에 어느 픽셀에서 비슷한 특징을 가지고 있는지 파악할 수 있다.

 

 서로 다른 공간에서 동시에 활성화되는 특징이 무엇인지 어느정도 포착해 낼 수 있다는 것이다. 

 하지만 gram matrix는 벡터의 내적으로 값을 구하기 때문에 공간정보가 사라지게 된다는 단점이 있다.

(벡터의 내적은 스칼라이기 때문, 방향정보 상실)

 

style reconstruction loss

 

 

 따라서 우리는 higher layer로 갈수록 color나 style은 비슷하게 보존되지만, spatial content는 보존되지 않는다는 것을 확인할 수 있습니다

 

 Style reconstruction loss에서는 squared Frobenius norm을 사용하여 아래와 같은 수식으로 나타낼 수 있다.

 

 

style reconstruction loss function

 

 위 수식은 서로의 분포차이(point당 특징 차이)를 줄이고, 상관관계를 높인다(유사한 style을 갖도록)는 의미를 가지고 있다. 

 

3.3 Simple loss functions

 

논문에서는 위 언급한 두개의 loss function 이외에 low-level pixel information을 다루기 위한 loss function도 정의하고 있는데

 

Pixel loss

 

pixel wise MSE function

이 loss function은 network가 match 하도록 expected되는 ground-truth y가 존재할 때만 사용된다.

 

Total Variation Regularization (상하좌우 인접 픽셀들간의 차이에 대한 페널티를 부여)

 

spatial smoothness를 보장하기 위해, total variation regularizer l tv (y_hat)을 사용한다.

 

 

4. Experiment

 

4-1 style transfer

 

 

y : initialized white noise

람다 : 하이퍼파라미터

 

위 수식을 최소화 할 수 있는 y를 찾아 model이 output으로 출력하게 된다.

 

 

4-2 Single-Image Super-Resolution

 

맨 왼쪽은 target, 3번째는 pixel-wise MSE loss function, 맨 오른쪽은 Feature reconstruction loss function

 

이 논문에서는 Super-Resolution을 위해 위에서 언급하였던 feature reconstruction loss function을 이용하면 된다고 하였는데

 

사진에서 볼 수 있듯이 MSE loss를 사용한 것보다 vgg loss를 이용한 feature reconstruction loss를 이용한 사진이 경계가 뚜렷하고, 우리눈으로 보았을 때 훨씬 더 '눈(eye)'라고 인식하기 쉽다는 것을 파악할 수 있다.

반응형

댓글