[논문리뷰] Accurate Image Super-Resolution Using Very Deep Convolutional Networks (VDSR)
ML

[논문리뷰] Accurate Image Super-Resolution Using Very Deep Convolutional Networks (VDSR)

이 논문은 SRCNN의 한계를 개선하고 SISR 문제에 딥러닝을 적용한 모델을 제안한다.

 

우선, SRCNN은 다음과 같은 한계를 가진다.

 

1. it relies on the context of small image regions.

2. training converges too slowly.

3. the network only works for a single scale.

더보기

하나의 모델은 single scale에 대해서만 적용이 가능해서, 새로운 scale이 요구되는 경우, 모델을 새로 학습해야합니다.

 

2, 3번에 비해 1번이 이해가 잘 되지 않아서, 찾아서 정리해보았다.

SRCNN은 작은 영역의 context에 의존한다. 그 이유는 레이어가 단지 3개이기 때문이다. 레이어가 얕아 좁은 이미지 영역에 대한 정보만을 이용할 수 밖에 없다. 

 

이 논문에서는 SRCNN의 위 3가지 문제를 다음과 같이 해결한다.

 

1. utilize contextual information spread over very large image regions. very deep network using large receptive field takes a large image context into account.

-> large receptive field를 적용하여 좁은 이미지 영역에 대한 정보만을 이용했던 한계를 해결하였다. 

  • receptive field: receptive field란, 하나의 픽셀을 복원하기 위해 이용되는 주변의 정보 영역을 의미한다. 특정 위치의 픽셀들은 그 주변에 있는 일부 픽셀들과만 상관관계가 높고 거리가 멀어질수록 그 영향도가 감소한다. 따라서 전체 영역에 대해 서로 동일한 중요도를 부여해 처리하는 대신 receptive field를 한정하여 처리하면 더 효율적이다. 즉, 주변의 정보 영역을 한정하여 한정한 영역 내부만 처리하는 것!

2. suggest residual-learning CNN and extremely high learning rates with adjustable gradient clipping.

residual-learning을 적용하고, adjustable gradient clipping을 적용한 high lr을 이용한다.

여기서 learning rate를 높이는 것은 학습 속도를 향상시키는 데에 큰 기여를 하는 것은 당연하다. 하지만 lr를 높이면 gradient explosion이라는 문제가 발생할 수 있다. 즉, 미분값이 너무 커져서 학습이 잘 되지 않는 상황을 의미한다. 따라서, lr을 높이는 대신 gradient clipping이라는 방법을 적용한다. "gradient clipping"이란, learning rate가 커서 gradient가 커질 수 있는 상황에서 gradient의 한계값 [-θ, θ]를 정해놓는 것이다. 이렇게 하면 오차가 커도 gradient가 커지는 데에는 한계가 있기 때문에 gradient explosion 문제가 다소 해소될 수 있다. 

이 논문에서는 adjustable gradient clipping이라는 새로운 방법을 제안하는데, 그 내용은 간단하다. 앞서 정해놓은 gradient의 한계값을 learning rate에 반비례하도록 설정하는 것이다. adjustable gradient clipping을 적용해 이 논문에서는 전체 학습시간을 4시간으로 줄였다.

 

3. propose a single-model SR approach. we find a single cnn is sufficient for multi-scale factor SR.

즉, 기존의 single-scale만 다루던 한계를 개선하기 위해 multi-scale을 다룰 수 있는 single network를 따로 설계하고 학습함으로서 해결하였다.

 

 

전체적인 모델의 구조는 다음과 같다.

이 논문에서 중요하게 내세우는 것은 레이어를 20개 쌓아서 신경망을 훨씬 깊게 만들었다는 점과 residual connection을 이용함으로써 학습이 빠르고 안정되도록 했다는 점이다. 정확도가 높은 output을 얻기 위해서 very-deep network를 통해 feature map을 뽑아내면 피쳐맵의 사이즈가 점점 줄어들게 된다. 따라서 conv-layer에 들어가기 전 zero-padding을 사용하여 feature map의 크기를 input의 크기와 동일하게 유지시키고, surround pixel 정보도 잘 살려서, 이미지의 가장자리에 있는 pixel 예측도 잘 이뤄질 수 있도록 한다. 

 

SRCNN은 layer를 통과해서 나온 feature map의 크기가 각기 달라서, 효과적인 학습 수렴을 위해서는 layer마다 learning rate가 다 달라야 했다. 하지만 VDSR은 zero-padding을 통해서 feature map의 크기가 항상 같기 때문에, 모든 layer가 하나의 learning rate를 사용해도 충분하며, 이로 인해 학습시켜야 할 parameter 수가 줄어들어 학습 속도가 빨라집니다. 

 

SR 문제의 특성상, input과 output이 상당히 유사한데, 나비의 날개에서 노랑색 부분은 LR과 HR에서 거의 차이가 없어서, 차이를 계산하면 0에 근사한 값이 나온다. 나비 날개의 검정색 테두리 부분과 같은 경계 부근에서는 차이가 크게 나온다. (경계를 확실하게 나타냄으로서 선명도가 높아지기 때문일까?) 따라서 차이가 크게 나타는 부분에 대해서만 CNN을 통해 학습을 잘 시키면, 모델 전체가 더 빠르게 더 정확하게 학습될 것이란 아이디어를 바탕으로, 위의 다이어그램에서처럼 네트워크의 맨 마지막에 residual을 추가한다. 

r = y - x로 정의하고, loss function은 1/2||r−f(x)||^2 로 정의한다.

 

--> Q. residual을 적용함으로서 왜 더 학습 효과가 뛰어날까? 

bellzero.tistory.com/4 잘 모르겠다. 

 

 특이한 점은 19개의 layer를 지나 만들어진 residual(r)값과 skip-connection을 통해 지나온 ILR(x)을 더 하여 고화질의 HR을 출력하는 방식이다.

hwangtoemat.github.io/paper-review/2019-07-26-VDSR-%EB%82%B4%EC%9A%A9/

차이가 크게 나오는 residual(r)과, LR 이미지를 더한 값 == 차이가 크게 나타나는 부분에 대해서만 만들어낸 output?

무슨 차이일까?