Curaai00's Deep Learning Blog

ResNet: Deep Residual Learning for Image Recognition

딥러닝/이미지 인식
Deep Residual Learning for Image Recognition

ResNet: Deep Residual Learning for Image Recognition

ResNet 논문을 읽고 번역&재정리 한 글입니다. 부족한 점이나 실수가 있다면, 댓글 혹은 이메일(curaai00@gmail.com)로 보내주시면 감사하겠습니다. 

Abstract

요즘 그래픽카드와 딥러닝의 발전으로 네트워크는 더욱 더 깊어지고 커집니다. 그래서 논문은 Residual Learning 프레임워크를 제시하여 네트워크가 더 깊어지고 커져도 학습하기 쉽게 도와줍니다. 그리고 실험 결과를 통해 이 ResNet(Residual Networks)이 optimize하기 쉽고, depth가 증가해도 정확도가 더 높은 모습을 증명합니다.

Introduction

CNN은 지금 현재 이미지 인식 분야에서 선구자적인 역할을 맡고있습니다. CNN과 End-to-End Network가 합쳐며 depth(stacked layers)란 단어가 생기기까지 하였는데, 이를 네트워크를 "아주 깊게" 쌓으면서 기존보다 훨씬 좋은 성능이 나온다는 것을 여러 대회(ImageNet Challenge)를 통해 보여줬습니다. 그래서 "과연 네트워크의 Depth를 늘이는 것만으로도 쉽게 성능을 향상 시킬 수 있을까?"라는 의문이 생기기 시작하였습니다. 하지만 실제로는 Depth가 어느 부분까지 상승하다가 그 이상은 vanishing/exploding gradient라는 문제 때문에 오히려 성능을 더 떨어트리는 원인이 되었습니다. 이 현상을 degradation problem이라고 하는데, depth가 깊은 상태에서 학습을 이미 많이 진행한 경우 weight들의 분포가 균등하지 않고, 역전파시 기울기가 충분하지 않아 학습을 안정적으로 진행할 수 없는 문제가 있습니다. over-fitting 문제라고 착각할 수도 있겠지만 실제로 그것이 원인은 아닙니다.




Deep Residual Learning

Residual Learning

H(x)를 기존의 네트워크라고 할때 (x는 layer의 input입니다) 이 H(x)는 여러 비선형 layer로 이루어져 천천히 복잡한 함수에 근사된다고 가정할 때, F(x) := H(x) - x 로 바꿔 F(x) + x를 H(x)에 근사하도록 하는 것(Residual mapping)이 더 쉽다고 가정합니다. 이를 feed-forward neural network에 적용한 것이 "Shortcut connection"*(Fig.2)입니다. 


Identity mapping by Shortcuts

Residual Learning의 중점은 degradation 문제를 어떻게 해결하느냐 인데, 위(Fig. 2)에 나왔던 것처럼 F(x) + x를 H(x)에 근사하게 합니다. shortcut connection을 Neural Network에 사용하여 역전파(back propagation)할 때, identity mapping(x)를 미분하면 적어도 1이상의 값이 나와 최소한의 기울기를 만들어서 학습이 제대로 일어나지 않는 현상을 최소화했습니다. H(x)와 F(x) + x가 천천히 근사하는 방식은 같더라도 학습의 속도나 안정성으로 보았을 때 Shortcut connection이 훨씬 더 효율적입니다.

기본적인 residual block을 다음 수식과 같이 정의합니다. 이때 σ는 ReLU이고, biases는 표기상 생략되었습니다. 위의 경우에서는 x와 F와 dimension이 동일해야 하는데, 만약 dimension이 바뀔 경우 Linear projection W_s를 적용할 수 있습니다.

여기서 W_s는 x의 dimension을 맞추기 위해서만 사용됩니다.

(2)을 projection shortcut connection이라고 부릅니다. 

Network Architecture


Plain Network

Residual block을 사용하지 않고, 단순히 쌓은 네트워크(Fig. 3, middle)입니다. 이 네트워크는 VGG Net(Fig. 3, left)에서 영감을 받아 만들었습니다. plain network는 두가지 design rule이 있습니다.

  • 각 layer들은 같은 크기의 feature map output size를 만들고, 동일한 number of filters를 가집니다.
  • feature map size가 반으로 줄어들 경우, layer당 complexity를 유지하기 위해 number of filters를 2배로 늘입니다. convolution layer의 stride를 2로 하여 down-sampling을 직접 수행합니다.

convolution layer(34개)를 통과한뒤, global average pooling, 1000-way fully-connected layer with softmax로 끝납니다. 또한 이 모델은 VGG Net보다 fewer filters, lower complexity를 가지고 있고, layer baseline은 3.6 billion FLOPs로서 VGG의 18%(FLOPs)입니다.

Residual Network

plain network에 base를 두고 shortcut connection을 추가한 ResNet(Fig. 3, right)입니다. shortcut connection(Fig. 3, solid line)은 input과 output이 같은 dimension일 때 사용됩니다. dimension이 증가할 때(Fig. 3, dotted line)는 두가지 경우를 고려하였습니다.

  • identity shortcut connection을 계속 실행하는 경우, dimension을 증가시키기 위해 나머지를 zero padding 하였습니다.
  • projection shortcut connection은 dimension을 맞추기 위하여 1x1 convolution을 사용합니다.

양쪽 옵션 모두 stride는 2를 사용합니다.

Implementation

모델 전부 ImageNet Challenge를 위해 사용하였습니다.

  • weight decay 0.00001 & momentum 0.9
  • drop out X
  • image는 [256, 480] 중 가까운 방향으로 resize됨
  • per-pixel mean subtraction 과 함께 224x224로 랜덤 crop
  • standard color augmentation 사용
  • Batch Normalization을 convolution 후, activation 전 사용
  • batch size 256으로 SGD 사용
  • learning rate는 0.1 부터 시작, local minimum을 만나거나 loss가 진동하는 경우 1/10씩 감소시킴
  • iteration: 60 * 10^4

테스트시 대회를 위해 standard 10 crop testing을 적용하였습니다. fully convolutional을 적용하였습니다.

Experiment

ImageNet Classification

ImageNet classification dataset에서 model을 평가하였고, 학습이미지는 1.28 백만장, 평가는 5만장을 이용하였습니다. 그리고 서버로 보내는 최종 테스트시에는 10만장을 이용하였고, top-1, top-5 에러율을 평가하였습니다. 

Plain Network


위 그림은 ImageNet 참가시 사용한 Network Architecture Implementation detail입니다.


Fig. 4, left를 보시면 plain-18이 34보다 전체적인 error가 적은것을 보실 수 있습니다.

Residual Network


ResNet-18, 34모두 plain network에 base를 두고 있고, 첫번째 비교(Table 2 and Fig. 4)에서 identity shortcut connection을 사용하였습니다(zero padding). 그리고 Table 2와 Fig. 4로 부터 3가지 요점을 찾을 수 있습니다.

  1. ResNet을 사용할 경우 네트워크의 depth가 증가하여도 error가 감소합니다. (degradation 문제 해결)
  2. 같은 depth여도 ResNet이 성능이 더 좋습니다. (Table 2)
  3. plain 보다 ResNet이 더 빨리 solution을 찾아갑니다. (Fig. 4)

Deeper Bottleneck Architectures


ResNet 50/101/152 부터는 Fig. 5, right와 같은 bottleneck architecture를 사용하였습니다. 이 아키텍쳐를 통해 네트워크를 더 깊게 쌓을 수 있었고, dimension이 바뀌는 경우에는 projection shortcut connection을 사용하였다고 합니다.

ResNets


위 Table 들을 보시면 전반적으로 ResNet이 성능이 더 우수하다는 것을 알수 있습니다. 또한 Network가 더 깊어질 수록 성능을 향상 시킬수 있다는 것 또한 보여줍니다.

CIFAR-10 and Analysis


CIFAR-10 test set을 이용하였을 때 각 layers 별로 성능을 체크하였고, layer가 너무 깊을 경우(1202) 다시 error가 증가하는 것을 볼수 있습니다. Fig. 6

Fig. 6는 CIFAR-10에서 학습을 진행할 때 plain network 같은 경우에는 깊을 수록 학습이 잘 진행되지 않지만 ResNet의 경우에는 반대의 양상을 띄게 됩니다. ResNet-1202는 제외합니다.

Analysis of Layer Responses


각 3x3 convolution layer(Batch Norm 후, ReLU 전)의 표준편차입니다. ResNet이 plain network에 비해 small response를 보이는 것으로 보아, 좀더 안정적으로 학습을 진행한다고 할수 있습니다.

Exploring Over 1000 layers

위의 Figure, Table 들을 보시면 layer의 수가 1000이 넘어가는 ResNet이 있는데 이 ResNet들은 아무리 residual function도 layer가 너무 과도하게 높으면 제대로 발휘하지 못한다는 것을 보여줍니다.

ResNet on Object Detection


기존의 VGG를 사용하던 Faster R-CNN에 ResNet을 이용하여 Object Deteciton을 사용하였더니, 성능이 크게 향상된 것을 확인할 수 있습니다.

Reference

Arxiv: Deep Residual Learning for Image Recognition

Arxiv: Identity Mappings in Deep Residual Networks

Identity Mappings in Deep Residual Networks 블로그 포스팅