Introduction

Single image super-resolution 문제는 low-resolution 영상 1장을 input으로 받았을때 원본의 high-resolution영상으로 복원하는 문제입니다. 요즘 CNN을 이용하여 Single image super-resolution (SISR) 문제를 풀어내는 논문들을 보면, 점점 더 깊은 네트워크 구조를 사용하는 추세를 보입니다. 이번에는 기존의 SISR 문제를 해결하는데 소개된 네트워크 구조 몇가지를 간단히 살펴보고, CVPR 2017에 accept된 가장 최신의 CNN을 활용해서 SISR문제를 풀어나간 논문을 살펴보며 SISR 문제의 트랜드를 알아 보도록 하겠습니다.

 

Previous CNN based SISR networks

스크린샷 2017-05-30 오후 3.11.59
Various network architectures for solving SISR problem
스크린샷 2017-05-30 오후 3.09.36.png
Comparison chart of the different network architecture

2014년에 소개된 SRCNN논문은 CNN을 활용하여 end-to-end로 SISR 문제를 풀어낸 최초의 논문이었습니다. SRCNN 논문의 저자는 SISR 문제를 푸는데에 있어서 3번의 convolution이 영상의 패치에서 feature를 추출하고, 비선형 맵핑을 하고, 최종 영상을 복원하는 과정을 모두 담고 있다고 설명하였고, 성능또한 이전에 CNN을 이용하지 않았던 방식에 비해서 뛰어남을 증명했습니다. 이후 SRCNN의 저자는 SRCNN을 조금 더 발전시켜 ECCV 2016에서 FSRCNN을 소개했습니다. 기존의 방법에서는 크기가 작은 low-resolution의 영상을 bicubic interpolation으로 목표하는 영상의 크기로 키우고, 이렇게 만들어진 low-resolution영상을 input으로 사용했던 방법을 탈피했습니다. 처음부터 작은 크기의 low-resolution 영상을 그대로 네트워크에 통과시켰고, 최종 layer에서 transposed convolution을 배치하여 목표 크기로 영상을 복원하는 방식을 적용하였습니다. 이를 통해 네트워크를 경량화 시키고, 대신에 좀 더 많은 convolutional layer를 배치하여 SRCNN에 비하여 소폭의 성능 향상을 가져올 수 있었습니다.

더 주목할만한 내용은 ECCV2016 보다 몇달 앞서서 CVPR 2016에서 발표되었습니다. 김지원님이 발표한 두 편의 논문에서 소개된 방법은 서로 비슷한 수준의 성능을 보여줬는데, 이전에 소개된 방법들에 비해 괄목할한 성능 향상이 있었습니다. 하나는 이전에 소개된 방법들에 비하여서 훨씬 깊은 20개의 convolution layers를 활용한 VDSR이라고 소개된 방법이었고, 다른 하나는 5개의 layers에서 중간 층을 recursive하게 반복하는 방법이었습니다. 두 방법 모두 이전의 방법들에 비하여서 훨씬 뛰어난 성능을 보여줬는데, 둘 중에서 좀 더 간단하고, 다른 구조에 적용하기 쉬운 VDSR에 대해 살펴보겠습니다.

스크린샷 2017-05-30 오후 4.16.30.png
VDSR network architecture

VDSR의 네트워크 구조는 위와 같습니다. SISR 문제의 경우 최종적으로 추정해야 하는 label이 영상의 형태입니다. 때문에 CNN을 활용하여 영상을 몇개의 class로 분류 하는 object recognition과같은 문제에 비해 sensitive한 문제로 분류할 수 있습니다. SRCNN의 경우에는 네트워크가 converge 하게 위해 각 layer 마다 서로 다른 learning rate를 배정했고, 네트워크도 3층 이상으로 쌓을 경우 성능이 떨어진다고도 발표하기도 하였습니다. 하지만 VDSR은 과감하게 20층의 layers를 쌓았고, learning rate도 SRCNN이 10^{-5} 였던데 반해 깊어진 네트워크를 학습시키기 위하여 10^{-1} 로 크게 올렸습니다. 대신에 깊어진 네트워크를 잘 학습시키기 위하여 두 가지 방법을 제안했습니다.

  1. Residual learning: 최초의 input 영상을 최종 영상이 확정되기 바로 전에 네트워크에서 만들어낸 영상과 더해주는 방법입니다. SISR 문제의 경우 input으로 들어오는 low-resolution 영상이 최종 high-resolution 영상에 비해 많은 차이가 나는 영상이 아닙니다. 따라서 네트워크는 최초의 low-resolution의 영상에 비해 high-resolution 영상이 가지는 디테일들만 만들어 주게 하면 영상 하나를 온전히 만들어내는 과제에 비해 훨씬 더 간단한 문제로 바뀝니다.
  2. Gradient clipping: learning rate를 높게 잡았기 때문에 네트워크가 diverge할 위험은 더 높아졌습니다. 때문에 이를 보완하기 위하여 gradient clipping을 사용했습니다. gradient clipping은 gradient값이 일정 범위 이상 (ex. [\theta, \theta] ) 일 경우 이를 \theta 로 clipping 시켜주는 방법입니다. 저자는 [-\frac{\theta}{\gamma},\frac{\theta}{\gamma}] 로 clipping 시켰는데, 이는 learning rate \gamma 의 값이 클수록 더 엄격하게 clipping을 줘야 더 안정적으로 네트워크가 converge할 수 있기 때문이라고 설명했습니다.

이러한 방법을 통해 저자는 안정적으로 20층 짜리 SISR 문제를 해결하는 CNN 네트워크를 만들어 낼 수 있었고, 밴치마크를 통해서 이를 확인할 수 있습니다.

스크린샷 2017-06-08 오후 6.05.01.png
Performance comparison table

 

Paper

Title: Deep Laplacian Pyramid Networks for Fast and Accurate Super-Resolution
Authors: Wei-Shng Lai, Jia-Bin Huang, Narendra Ahuja, and Min-Hsuan Yang
Publish: CVPR 2017 (accepted)

 

 Network architecture

 

스크린샷 2017-06-08 오후 6.09.34.png
LapSRN network architecture, (blue line: transposed convolution, green line: element-wise addition, red line: convolution)

CVPR2017년에 발표된 논문에 Laplacian Pyramid Super-Resolution Network (LapSRN) 이라는 이름으로 발표된 구조입니다. LabSRN은 FSRCNN의 transposed convolution방식과 앞에서 VDSR을 소개할때 봤던 residual learning 방식을 차용하였습니다. 그리고 기존의 방식들은 영상의 resolution을 2배 이상 크게 올릴때도, low-resolution 영상에서 high-resolution 영상을 한번에 추정하였는데, LapSRN의 경우엔 Resolution이 8배 향상된 영상을 추정한다고 하였을때, 2배 늘린영상, 4배 늘린영상을 순차적으로 만들어내어 최종적으로 8배 늘린 영상을 만들어내는 순차적 업샘플링 하는 Pyramid 방식을 도입하였습니다. 이러한 구조를 통해 저자는 LapSRN이 4배 이상의 큰 업샘플링을 시도하는 과제에서 특히나 기존의 방식들에 비하여서 더 좋은 성능을 보여줄 수 있었다고 합니다. 저자는 2배, 4배 업샘플링 과제에서는 각 층마다 10개의 convolution layers를 쌓았고, 8배 업샘플링 과제에서는 층마다 5개의 convolution layers를 쌓았다고 합니다. 각 convolution과 transposed convolution뒤에는 LeakyReLU 함수가 적용되었습니다. 단 각 층마다 중간 결과 영상을 만들어내는 image reconstruction branch에서의 transposed convolution의 경우에는 적용되지 않았습니다.

 

Loss function – Charbonnier penalty function

저자는 SRCNN이나 VDSR에서 사용한 L_2 loss 함수를 사용하는 대신에 Charbonnier penalty 함수를 사용했다고 합니다. Charbonnier penalty 함수를 이용하여 loss 함수를 다음과 같이 정의했습니다.

스크린샷 2017-06-08 오후 7.55.24.png
\rho(x)=\sqrt{x^2+\epsilon^2} is Charbonnier penalty function, \epsilon is empirically set to 10^{-3} , N is the number of training samples in each batch, L is the number of level in LabSRN

Charbonnier penalty 함수를 사용할 경우 조금 더 outlier에 대해 robust해 진다고 합니다.

 

Experimental results

Residual learning, loss function

 

스크린샷 2017-06-08 오후 8.06.45.png
Analysis on the contributions of different components – residual learning, pyramid structure, loss function

유명한 SET5와 SET14에 테스트한 결과를 보게되면 residual learning과 pyramid structure를 적용하였을때 가장 좋은 결과가 나옴을 확인 할 수 있고, loss 함수도 l_2 loss를 사용할 때 보다 Charbonnier penalty 함수를 사용했을때 더 좋은 결과를 얻을 수 있음을 확인할 수 있었습니다.

 

Network depth

 

스크린샷 2017-06-08 오후 8.14.14.png
trade-off between performance and speed on the depth at each level of the LabSRN

네트워크 깊이에 대한 결과가 있습니다. 각 층마다 3,5,10,15개의 convolution layers를 배치 후 실험하였고, 여기서도 망의 깊이가 깊어지면 깊어질수록 성능이 향상됨을 확인할 수 있었습니다. 저자는 네트워크의 깊이에 따라 SISR을 수행하는데 시간이 얼마나 걸리는지도 측정하였는데, 속도와 성능의 조화를 생각하여 resolution을 2배, 4배올리는 과제에는 각 level의 depth를 10으로 하였고 8배 올리는 과제의 경우엔 5를 사용하였다고 서술했습니다.

 

Quantitative evaluation of state-of-the-art SR methods

스크린샷 2017-06-08 오후 8.51.38.png
Performance comparison table, RED: best score, BLUE: second best score

결과를 보면 resolution을 2배 향상시키는 scale 2의 경우 VDSR이나 DRCN과 비등비등한 성능을 보이지만, scale 4,8의 경우에는 확실히 좋은 성능을 보이는 것을 확인할 수 있습니다. 여기서 scale 2,4에도 LabSRN 8x 모델이 사용된 경우를 볼 수 있는데, 이는 resolution을 8배 상승 시키는 모델에서도 LabSRN은 2배, 4배 상승된 결과물을 만들어 낼 수 있기 때문에 그에 대한 결과를 표시한 것입니다.

 

Conclusion

LabSRN의 경우 가장 최근에 발표된 논문 중에서 좋은 성적을 보여준 논문이었습니다. 이 논문에서는 한 가지 아쉬움이 남는 부분이 있습니다. 논문에서 비교한 이전의 SISR 모델들의 경우에는 l_2 loss를 사용한 결과물이었습니다. 덕분에 이전 모델들 간에는 어떤 모델을 사용하느냐가 성능에 어떤 영향을 끼치는지 객관적으로 확인할 수 있었던데 반해, 이 논문에선 이전 모델들과 달리 l_2 loss 가 아닌 Charbonnier penalty 함수를 사용함으로써 모델의 성능을 객관적으로 비교하기 어렵다는 점이 있었습니다. 그리고 Charbonnier penalty 함수를 잘 살펴보면 결국 l_1 loss 와 거의 동일한 loss 함수임을 알 수 있는데, 이전 포스트에서 살펴본바에 의하면 모델과는 상관 없이 l_2 loss를 사용할때보다 l_1 loss를 사용하는 경우에 더 좋은 성능을 기대할 수 있었습니다. 이는 LabSRN이 좋은 성능을 보여주기는 하였지만, 이것이 모델의 구조가 VDSR이나 DRCN보다 훌륭해서 였는지, 아니면 단순히 l_1 loss를 적용해서 이러한 결과를 보여줄 수 있었던 것인지 모호한 점이 분명 존재합니다. 이러한 아쉬움을 뒤로한체 앞으로 더 흥미로운 논문들이 많이 발표될 것을 기대하며 이번 포스팅을 마칩니다.

 

Reference

  1. W. S. Lai, J. B. Huan, N. Ahuja, and M. H. Yang. Deep Laplacian pyramid networks for fast and accurate super-resolution. CVPR, 2017, accepted
  2. C. Dong, C. C. Loy, K. He, and X. Tang. Image super- resolution using deep convolutional networks. TPAMI, 38(2):295–307, 2015.
  3. C. Dong, C. C. Loy, and X. Tang. Accelerating the super- resolution convolutional neural network. In ECCV, 2016.
  4. J. Kim, J. K. Lee, and K. M. Lee. Accurate image super- resolution using very deep convolutional networks. In CVPR, 2016.
  5. J. Kim, J. K. Lee, and K. M. Lee. Deeply-recursive convolu- tional network for image super-resolution. In CVPR, 2016.
Posted by:brianjaum

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s