Deep Learning study

Photo Realistic Single Image Super Resolution Using a Generative Adversarial Network (SRGAN) 본문

AI/papers

Photo Realistic Single Image Super Resolution Using a Generative Adversarial Network (SRGAN)

HwaniL.choi 2019. 7. 20. 12:25
반응형

오늘은 super resolrution GAN 에 대해서 알아보도록 합시다 !

 

SRGAN은 딱히 어렵다거나 복잡한 것은 없지만, image super resolution에 관심이 좀 있던터라 쟁여뒀던 논문을 꺼내어 읽어보았습니다. ㅋㅋ

 

그럼 먼저 super resolution 이 뭔지부터 알아봅시다.

물론 모르는 사람은 없을테지만, 위의 링크에서도 볼 수 있듯이 이미지의 해상도를 높여주는 작업입니다. 즉 저해상도 이미지를 고해상도로 바꾸는 것이죠 !

 

여기서 소개할 super resolution 방법은 GAN을 이용한 방법입니다.

 

Introduction

 

Super Resolution(SR)은 computer vision분야에서 많은 주목을 받고있습니다. 많은 SR문제를 해결하고자하는 노력들이 있었지만, 복구된 SR 이미지들의 texture 의 detail한 부분들이 살아니지 못했습니다. 

그 문제는 ground truth image와 복구된 High Resolution(HR) image 사이의 Mean Squared Error를 최소화 시키는데에 있습니다. MSE를 이용한 방법은 간단하고 편리하지만, 세밀한 texture같은 이미지를 보았을때 생기는 지각적인 차이들을 잡아내는데에는 매우 한계적입니다. 왜냐면 MSE는 단순 서로다른 이미지 간의 Pixel wise 의 차이들의 평균값들을 계산해내는 것 이므로, 서로다른 픽셀간의 정보를 담아낼 수 없게되기 때문이겠죠.

 

위의 사진에서 첫 번째 이미지는 bicubic interpolation을 이용, 두 번째는 MSE 를 사용, 세 번째는 SRGAN의 결과물입니다. 여기서 볼 수 있듯이 , MSE를 이용한 방식은 origianl을 잘 표현하는 듯 싶지만, 흐릿하고 블러처리(?)된 듯한 느낌의 결과를 만들어냅니다.

 

그래서 이 문제를 해결하기 위해서 소개할 것이 SRGAN입니다. 이 모델은 ResNet을 이용하며 MSE loss의 문제점을 해결하기위해서 새로운 perceptual loss를 소개합니다.

 

 

Method

 

이 논문에서는 여러 loss 들을 합쳐놓은 perceptual loss를 정의하게 됩니다.

여기서 정의한 perceptual loss를 이용하여 Generator의 prameter를 최적화하면 되겠죠. 그럼 이 loss가 어떻게 이루어져 있는지 알아보도록 합시다.

 

Perceptual loss function

 

기본적으로 perceptual loss는 두 가지 term으로 이루어져 있습니다. 첫 번째가 content loss, 두 번재가 adversarial loss입니다.

 

먼저 content loss 부터 알아보겠습니다.

 

Content loss

 

첫 인트로에서도 말했지만, 여태 가장 보편적으로 사용된것은 아래의 MSE loss입니다.

하지만 MSE에는 문제점이 있었지요. 바로 높은 peak signal to noise ratio를 얻을수 있는 반면에, high frequency 를 얻는데에는 한계가 있었다는 것입니다. 그래서 매우 흐릿한(smooth)듯한 느낌의 결과가 나오게 되었죠.

 

그래서 여기서는 pixel-wise loss를 버리고 새로운 방법을 가져옵니다. 어려운 것은 아니고 VGG19모델을 이용하는 것 입니다. 생성된 이미지(Generator로부터 나온 이미지)와 실제 HR 이미지의 VGG로부터 추출된 feature map 의 차이 즉, 두 feature간의 euclidean distance를 이용하자는 것 입니다.

ϕij는 vgg19에서 i번째 maxpooling layer를 거치기 전 j 번째 conv에서 얻어진 feature map을 가리킵니다.

VGG19 구조 보기

 

 

adversarial loss

 

이건 항상 보던 것 이므로 간단하게 설명해야될것만 보고 넘어가도록합시다.

 

사실 원래알던 모양과는 조금 다르긴합니다. 우리가 원래 알던 모양은  [1-logx]형태죠. 왜 위처럼 변형을 했는지는 조금만 생각해보면 알수 있습니다. 바로 gradient때문인데요, 1-log(x)형태를 이용하면 초반의 기울기의 변화가 매우 작아서 학습이 잘 이루어지지 않습니다. 하지만 -log(x)형태를 이용한다면 학습 초반의 기울기가 매우 커지게됩니다. 따라서 gradient의 behavior가 훨씬 좋아지게 되는 것입니다.

 

파란 그래프 : log(1-x), 빨간 그래프 : -log(x)

위의 그래프를 보면 좀 더 잘 이해가 될것입니다.

 

논문의 큼지막한 내용은 여기까지고 결과물 몇개보고 마치도록 할게요

 

 

 

 

마치면서 , 정말 간단한 논문이였지만 생각보다 흥미로운 내용이여서 재미있었던것 같습니다 ! 다음엔 .. 또 손에 잡히는걸로 ..

 

오늘도 이만 !

 

 

Reference

[1] Photo Realistic Single Image Super Resolution Using a Generative Adversarial Network (SRGAN)

반응형
Comments