본문 바로가기

논문 리뷰

VDSR 리뷰

논문 제목은 Accurate Image Super-Resolution Using Very Deep Convolutional Networks이다.

 

Contribution

1. 20층의 깊은 모델을 학습시켜서 기존 모델보다 좋은 성능을 달성했다.

2. 더 깊은데 기존 모델보다 수렴도 빠르다.

3. 하나의 모델에 다양한 scale factor(두 배, 세 배 등등)를 적용할 수 있다.

 

Residual Learning

 

SRCNN은 super resolution에 처음으로 딥러닝을 적용해서 좋은 결과를 얻었고, VDSR의 베이스가 된 논문이다.

 

SRCNN에서의 실험 결과

SRCNN에서 제시한 위 테이블을 보면, 깊이를 키웠을 때 오히려 성능이 더 안좋은 것을 확인할 수 있다. ResNet 이전의 논문이므로 당연한 결과이다. 네트워크가  gradient vanishing이 일어나면서 학습이 잘 일어나지 않는다.

 

ResNet에서의 skip connection은 input feature map인 x가 우리가 원하는 output feature map인 H(x)와 어느정도 가깝다는 가정하에 F(x) = H(x) - x 인 residual만을 학습한다는 아이디어이다. Super resolution에서는 HR이미지와 LR 이미지가 low frequency를 공유하고 있다. 사실 화질만 다를 뿐 같은 이미지이므로, residual이 작을 것이다.

 

SRCNN은 입력인 x를 끝까지 유지함과 동시에 residual한 부분까지 만들어내야 했다. 깊은 CNN을 통과하는 동안 동일한 입력을 유지해서 뱉어내는 것은 오토인코더와 유사하다. 즉, 오토인코더의 일과 residual을 만들어내는 일을 둘 다 하기 때문에 학습시키기가 어려웠다. VDSR에서는 전자의 일을 덜어준 것이라고 설명한다. r = y - x라는 residual 이미지를 학습하게 된다. 

 

이런 loss를 학습하게 된다.

 

이렇게 망을 깊게 쌓는 것이 scale factor가 올라갈수록 중요한데, 특히나 high scale factor에서는 receptive field가 커서 주변 context 정보를 많이 끌어와야 SR의 ill-posed를 완화할 수 있기 때문이다.

 

Architecture

 

ILR이라는 것은 LR인데 interpolated 되었다는 것이다. 여기서는 bicubic을 사용해서 scale factor만큼 이미지를 다운샘플링 하고, 그걸 다시 bicubic으로 키워서 ILR을 만든다. 사실 저렇게 큰 이미지를 통째로, 그것도 bicubic이라는 learnable하지 않은 알고리즘으로 키워서 넣는 것은 계산량이나 결과 면에서 손해가 많은데, 이걸 ESPCN에서 지적을 했다(SRCNN을 지적했지만 여기서도 같은 문제이다).

 

이 ILR이 depth가 64로 키워지고, H와 W는 유지한 채로 3x3x64 필터에 18번 태워진다. 그리고 마지막에 H x W로 다시 복원되어서 residual image가 된다. 이렇게 총 20개의 layer를 거치게 된다. 여기서는 RGB 채널을 다 넣어주는게 아니고 이미지를 YCbCr로 바꾼 다음 Y 채널만 넣어준다. 그래서 output은 (batch size, H, W, 1)의 shape이 된다.

 

Convergence Speed

Residual learning과 더불어 높은 initial learning rate이 수렴 속도를 빠르게 했다. 위 표를 보면 10 epoch에서 initial learning rate가 높을 수록 결과가 좋고, 나중에 가서도 결과가 제일 좋다. Residual learning이 적용 안된 모델은 저렇게 높은 learning rate를 견디지 못하는 모습이다.

 

여기서는 depth가 올라갈수록 성능이 좋아지는 것을 보여준다. Residual learning은 높은 learning rate에서도 안정적이고 빠른 수렴이 가능하다.

 

Adjustable Gradient Clipping

이 범위에서 gradient clipping을 했는데, 분모는 learning rate이다. 훈련 시에 20 epoch마다 learning rate에 0.1을 곱해줘서 decay를 걸었는데, learning rate이 작아질수록 gradient clipping을 덜 엄격하게 걸어도 되므로 분모에 넣어준 것이다. 이걸 논문에서는 adjustable gradient clipping이라고 하며, 이런 방식때문에 0.1이라는 높은 initial learning rate로도 모델을 학습시킬 수 있었다고 주장한다. 여기서는 momentum을 사용했는데, 개인적으로는 Adam으로 learning rate 0.001로도 안정적으로 잘 학습이 되었다. 

 

Multiple Scales

Test time scale factor가 3이랑 4일 때를 보면, 3이랑 4만 훈련한 모델보다 2,3,4를 다 훈련한 모델이 성능이 더 좋다. 2일 때도 큰 차이가 나지 않는다. 하나의 모델에서 다양한 scale factor에 범용적으로 적용할 수 있고, 심지어 그렇게 훈련한 것이 고정된 scale factor로 훈련한 모델보다 해당 scale factor에서도 성능이 더 좋았다는 것이다.

 

Results

모든 데이터셋의 모든 scale factor에서 baseline들를 다 꺾었다.

 

아래는 개인적으로 구현한 결과물이다. 왼쪽이 bicubic, 오른쪽이 VDSR이다.

 

 

 

github.com/sangyun884/VDSR---tf2.0

'논문 리뷰' 카테고리의 다른 글

Few-shot Knowledge Transfer for Fine-grained Cartoon Face Generation  (0) 2021.01.12
U-GAT-IT 리뷰  (0) 2021.01.09
Deep Knowledge Tracing 리뷰  (1) 2020.12.26
StarGAN 리뷰  (0) 2020.12.20
CycleGAN 리뷰  (0) 2020.11.15