- Today
- Total
작심삼일
[VDSR 리뷰] Accurate Image Super-Resolution Using Very Deep Convolutional Networks (CVPR 2016) 본문
[VDSR 리뷰] Accurate Image Super-Resolution Using Very Deep Convolutional Networks (CVPR 2016)
yun_s 2021. 4. 18. 16:58My Summary & Opinion
SRCNN의 실험을 기반으로 성능을 더 높이기 위해 층을 많이 쌓아 깊은 네트워크를 제안했다.
깊은 네트워크는 그 깊이 때문에 gradient가 끝에서 끝까지 전달되기가 힘든데, 이 문제를 residual-learning으로 해결했다.
또한 학습 속도를 높이기 위해 높은 learning rate를 사용했고, 20 epoch마다 업데이트를 함으로써 vanishing/exploding gradient 문제를 예방했다.
그리고 한 네트워크가 multi-scale을 다룰 수 있도록 학습했다.
단순히 깊게 쌓은 네트워크로 기억하기 보다는 학습 테크닉 위주로 보면 좋을 것이다.
Introduction
이전 글에서 소개했던 SRCNN은 SR 문제에 딥러닝을 잘 사용했지만 세 가지 관점에서 한계가 있었다.
첫째, 이미지의 작은 영역(학습할 때 local하게만 고려)에만 의존하고, 둘째, 학습할 때 수렴이 느리게 되며, 셋째, 학습된 네트워크를 한 가지 크기로만 사용할 수 있다.
이 논문에서 소개하는 방식은 이런 문제들을 해결한다. 이 네트워크의 contribution을 요약하면 다음과 같다.
이미지 안의 더 큰 영역에서 contextual 정보를 가져오고, residual-learning을 사용해 수렴 속도를 높였다.
한 네트워크로 multi-scale SR이 가능하다는 것을 알아냈다.
Related Work
SRCNN이 deep-learning based SR에서 SOTA이므로 이걸 분석하고 우리 방식과 비교한다.
1. Convolutional Network for Image Super-Resolution
SRCNN은 3층만 쌓았고 $5 \times 5$크기의 작은 필터를 사용했으며, 더 깊은 네트워크를 만드는 데 실패했다.
하지만 우리는 20층을 쌓으면서 Very Deep하며 더 큰 filter를 사용하는 네트워크를 만드는 데 성공했다.
SRCNN은 고해상도 이미지를 출력으로 한다.
이는 auto-encoder 방식과 비슷한데, auto-encoder 방식은 image detail 등이 사라진다.
이와 달리, 우리는 네트워크로 하여금 residual image를 직접 학습하도록 함으로써 더 빨리 수렴하고 더 높은 정확도를 가졌다.
대부분의 SR 방법들은 하나의 scale로만 학습이 되고 그 scale에만 잘 된다.
다른 scale을 사용하고 싶으면 다시 학습해야 한다.
하지만 다양한 scale에 따른 각각의 모델을 준비하는건 비효율적이다.
우리는 multiple scale에 적용할 수 있는 모델을 설계 및 학습했고, 결과는 매우 좋았다.
Proposed Method
1. Proposed Network
위 그림에서 볼 수 있다싶이 매우 깊은 구조의 네트워크를 설계했다.
제일 마지막 layer를 제외한 모든 layer들은 모두 $3 \times 3 \times 64$ 크기의 filter를 사용했고, 마지막 layer는 $3 \times 3 \times 64$ 크기의 filter를 사용했다.
Interpolated 된 저해상도 이미지를 입력으로 하고 detail을 학습하도록 했다.
Very Deep한 네트워크를 사용할 때 발생하는 문제 중 하나는 convolution 연산을 진행할 때마다 feature map의 크기가 작아진다는 것이다.
예를 들면, $n \times n$ filter를 지닌 네트워크에 $(n+1) \times (n+1)$ 크기를 입력으로 넣으면 $1 \times 1$이 출력으로 나온다.
이 문제를 해결하기 위해 convolution을 진행하기 전에 zero-padding을 진행함으로써 모든 feature map의 크기가 같도록 했다.
이 방법으로 인해 우리가 제안하는 방법은 다른 방법들과 달리 가장자리 부분도 정확히 예측한다.
Image detail이 예측된 후 입력으로 사용된 저해상도 이미지에 더해 고해상도 이미지를 출력으로 한다.
2. Training
${x^{(i)}, y{(i)}}^N_{i=1}$: training dataset
$x$: interpolated low-resolution image, $y$: high-resolution image
1) Residual-Learning
SRCNN은 층을 깊게 쌓으면 long-term memory가 필요하게 되므로 vanishing/exploding gradient problem이 나타날 수 있다. 이 문제를 해결하기 위해 residual-learning을 사용한다.
2) High Learning Rates for Very Deep Networks
SRCNN은 3층 이상의 네트워크로 더 좋은 성능을 보이는데 실패했다.
그 이유 중 하나는 네트워크가 수렴하기 전에 학습을 멈췄다고 본다.
그들이 사용한 learning rate $10^{-5}$는 너무 작았다.
Learning rate를 크게 잡으면 학습이 빠르지만 vanishing/exploding gradient가 될 수 있다.
그래서 learning rate를 크게 잡고 조정해 가면서 exploding gradient를 예방했다.
3) Adjustable Gradient Clipping
학습 속도를 빠르게 하기 위해 $[-{\theta \over \gamma}, {\theta \over \gamma}]$로 gradient를 clip 했다. 여기서 $\gamma$는 현재 learning rate다.
4) Multi-Scale
Multi-scale 모델을 학습하기 위해 파라미터들이 서로 공유되게 했다.
Understanding Properties
제안하는 방법은 세가지 특징이 있다.
첫째, SR 문제를 푸는 데에는 large depth가 필수적이다.
둘째, residual-learning network는 기본적인 CNN보다 학습 속도가 매우 빠르다.
셋째, 각 scale 별 네트워크를 여러 개 사용하는 것보다 우리가 제안하는 네트워크 하나를 사용하는 것이 성능이 더 뛰어나다.
Experimental Results
20 layers
batch size: 64
momentum: 0.9
weight decay: 0.0001
lr: 0.1
Reference
Kim, Jiwon, Jung Kwon Lee, and Kyoung Mu Lee. "Accurate image super-resolution using very deep convolutional networks." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.