Photo-Relistic Single Image Super-Resolution
Using a Generative Adversarial Network (2017.05.25) - https://arxiv.org/abs/1609.04802
Research direction & Motivation
Main Purpose
Capture perceptual reality in super-resolution with SRGAN
저해상도 품질의 이미지를 고해상도로 복원하는 기술인 super-resolution에 있어서 최적화는 objective function에 의해 결정된다. 주로 사용해왔던 방식은 mean squared reconstruction error를 최소화하는 방향이었다. 하지만 이는 명확한 단점은 고해상도의 detail한 측면과 실제성의 측면에서의 한계를 갖고다는 점이었다.
본 논문의 저자들은 이에따라 GAN을 이용한 새로운 모델인 SRGAN을 제안하며 기존에 사용되었던 방법인 linear, cubic, srcnn등의 방법들보다도 고해상도 품질의 이미지를 생성하고자했다. 특히 MSE에 기반을 두고있는 PSNR이나 SSIM과 같은 metric의 한계를 극복하기 위해 adversarial loss와 content loss로 구성된 새로운 Perceptual loss function을 구축했다. 더불어 MOS(Mean Opinion Score)라는 metric을 도입해 실제 사람이 보았을때 고해상도라고 느낄수 있는 이미지를 생성하는 것에 주목했다.
※ PSNR: 영상 또는 동영상 손실 압축에서 화질 손실 정보를 평가
※ SSIM: Luminance, Contrast, Structural 이 3가지 측면에서 품질을 측정해 인간의 시각적 화질 차이를 평가
Related research
SR분야에서 사용되던 방식으로는 Linear, Cubic, Nearest neighbor, Bilinear, Bicubic, SRCNN 등의 여러 방법이 존재한다. Linear과 Cubic은 각각의 pixel 단위에서 linear, polynominal하게 pixel을 이어주는 방식이며 Bilinear, Bicubic은 2차원 평면을 고려해 전자와 동일한 방식을 적용한 기법이다.
최근에는 CNN에 기반한 모델이 우세한 성능을 보여주었는데, bicubic interpolation을 이용해 input image를 upscaling한 뒤 3개의 convolutional layer에 통과시킨 모델이 sota를 달성한 바가있다. 이 결과는 네트워크가 upscaling filter를 직접적으로 학습하는 것이 속도와 정확도 측면에서 효과적이라는 것을 나타냈다.
이러한 방식들은 대부분 pixel 단위의 MSE를 최소화해야할 loss function으로 사용한다. 그렇게되면 질감과 같은 세부적인 detail의 손실이 일어나고 두 image의 perceptual difference를 잘 capture하지 못한다. 본 논문에서는 그럴듯한 고해상도 이미지의 복원을 위해 perceptual similarity에 근사하게하는 loss function을 사용하는 것에 초점을 두었다.
Contribution
Newly suggested model
첫번째로 SRGAN을 고안했다. CNN architecture에 있어서 skip-connection과 residual blocks를 이용한 design은 이미지 분야에서 큰 효과를 보여준 것에 기반해 모델을 설계했다.
Generator는 skip conncetion을 이용해 여러개의 residual block을 연결했으며 bacth normalization과 parameticReLU activation function을 사용했다. 일반적으로 convolution layer를 이용하면 image의 차원은 작아지거나 동일하지만 super resolution은 image의 dimension을 증가시켜야한다. 여기서 pixel을 증가시키기 위해 input image의 feature map을 조합해 pixel의 수를 증가시키는 sub-pixel convolution을 사용했다. 모델 구조를 들여다보면 지난번에 리뷰한 DCGAN을 통해 확립된 안정화된 구조의 원칙들을 따르고 있는 것을 볼 수있다.
Discriminator는 LeakyReLU를 사용하고 VGG network와 유사하게 kernel이 64에서 512까지 2배씩 증가하는 형태의 convolution layer가 위치한다. 동시에 stride=2를 이용해 정보의 소실이 일어나지 않도록 max-pooling을 대체했으며 층을 통과할때마다 feature map의 수가 증가하는 것을 다시 감소시켰다. 최상위층에는 fully connected layer를 배치해 Generator가 생성한 이미지가 HR(실제 고해상도 이미지)인지 SR(생성된 가짜 이미지)인지 판별하는 분류기를 설계했다.
Perceptual loss function
일반적으로 사용되어 왔던 pixel-wise MSE loss는 다음과 같다.
해당 식은 PSNR을 향상 시키는데는 효과적이나, MSE는 pixel단위의 평균치를 구하여 측정되는 loss로써 일종의 smoothing되는 작용을 한다. 따라서 사람의 시각에서 보았을때 고해상도라고 느끼기 어려우며, 이미지의 질감과 같은 지엽적인 부분에서의 손실이 많이 일어난다. 따라서 저자는 pretrained된 VGG19 network의 feature map의 euclidean distance를 측정해 이를 loss function으로 사용했다.
이를 content loss라고 정의하며 최종적으로 아래의 adversarial loss를 더한 것이 SRGAN의 loss function으로 사용된다.
위 식에서 (GθG(ILR))는 생성된 이미지가 HR image일 확률을 뜻하며, 해당 확률이 커지는 방향으로 학습하면서 더 실제 이미지에 가까운 이미지를 생성하게된다.
Experiments
실험에 사용한 데이터는 SR분야에서 사용되는 Set5, Set14, BSD100이 사용되었다. 실험은 크게 두가지로 나뉘는데, 첫번째는 저자들이 정의한 MOS score를 통해 타 알고리즘들과 비교했을때 보여주는 실제 성능을 측정한 것이다. 두번째는 VGG network의 어떤 층에서 feature map을 추출하는 것이 더 좋은 효과를 가져오는지를 알아보기위한 것이다.
Mean opinion score (MOS) testing
MOS score는 26명의 사람에게 이미지를 1점 부터 5점까지의 척도로 좋음을 측정한 뒤 이를 평균을 구한 것으로 논문에서 주장하고자하는 실제와 가장 근접한 metric을 의미한다. BSD100 데이터를 사용해 생성한 SR 이미지에서 10개의 이미지들을 평가하도록했는데, 제시된 그림을 보면 타 알고리즘에 비해 SRGAN이 큰 폭으로 더 높은 점수를 얻었다. 비록 정성적으로 정의된 metric은 아니지만, 실제 이미지를 확인한 사람들이 대부분 높은 점수를 주었다는 것은 의미가 있다.
Investigation of content loss
다음으로 GAN-based network의 perceptual loss에대해 각각 다른 content loss의 효과를 알아보고자했다.
여기서 지칭하는 SRResNet은 SRGAN의 Generator의 구조와 동일한 모델이다. 두 모델에 대해서 MSE, VGG22, VGG54로 구분하고 있다. 두 모델간의 비교가 핵심이라기보다는 이 세가지 다른 loss function이 핵심이다. VGG22는 VGG network의 하위층(lower-level-feature)의 feature map을 통해 추출한 loss이며, VGG 54는 상위층(high-level-feature)에서 추출한 loss이다.
저자들은 상위층의 feature map에서 정의된 loss를 적용했을때가 더 좋은 질감의 detail을 보존하고 있음을 발견하고 이를 SRGAN으로 지칭했다. 또한 MOS와 SSIM, PSNR을 보면 MSE를 사용한 경우가 더 좋은 PSNR값을 얻었으나, MOS score는 오히려 떨어지는 모습이 보인다. 즉, MSE가 낮더라도 인지적인 측면에서 사람의 인식은 그와 상반된다는 것을 의미한다. 이는 아래의 표에서도 현저하게 드러난다.
SR은 고정된 정답이 있는 것이 아니라, 가능한 여러가지의 solution들을 갖고있다. 하지만 MSE는 이 solution들을 pixel 단위로 평균을 내어 산출하다보니 detail 측면에서의 손실이 크다. 반면 SRGAN은 한가지 solution에 집중해 이미지를 생성하다보니, 그것이 비록 원본 이미지에서 나타내는 detail의 모양과 완벽하게 부합하지는 않을지라도 더 고화질처럼 보이며 더 자연스러운 이미지를 생성하는 것이다.
Conclusion
본 논문에서 저자들은 인지적인 측면에서의 고해상도에 주목하고자했다. 그 결과 고안한 방법들은 좋은 성과를 가져왔지만, 그에 따른 본질적인 한계도 존재했다. SRGAN이 생성한 이미지는 좋은 이미지라는 인상은 줄 수 있으나 언급했듯이 하나의 solution에만 집중하다보니 실제 이미지가 보유하고있는 detail의 형태와는 다른 고화질의 detail을 복원한다는 점이다.
위 사진들의 왕관부분을 주목해보면 MSE based의 경우는 화질은 비교적 떨어지지만, HR의 detail의 형태를 최대한 따라가려는 모습을 보인다. 하지만 SRGAN으로 생성한 이미지는 더 선명하지만 어쩌면 전혀 다른 방식으로 detail을 해석하는 모습을 볼 수 있다.
마지막으로 논의해볼 점은 SRGAN을 사용했을 때의 인지적 측면에서의 성능개선이 과연 SRGAN을 사용했기 때문인지 아니면 perceptual loss function의 도입 때문인지를 생각해 볼 필요가 있다. 실제로 제시된 사진들을 비교해보면 SRGAN-MSE와 SRGAN-VGG의 차이가 SRResNet-MSE와 SRGAN-MSE의 차이보다 더 큰 차이를 보인다. 이로보아 모델의 차이라기 보다는 perceptual loss의 정의가 더 주요한 요인으로 작용하는 것으로 보인다.