computer vision/image classification

Deep Residual Learning for Image Recognition

loosiu 2023. 12. 4. 11:32

Abstract

더 깊은 neural network는 학습하기 더 어렵다.

이전에 사용된 더 깊은 network의 학습을 완화하기 위해서 residual learning framework를 제시한다.

unreferenced function 학습 대신에, layer input에 reference를 가진 residual function을 학습함으로써 layer를 새로 표현한다.

상당한 증가된 깊이로부터 정확도를 얻을 수 있다.
imagenet dataset에서 VGG net보다 8배 더 깊은 152 layer 깊이를 가진 residual net을 평가한다.
하지만 여전히 더 낮은 복잡도를 가진다.
residual net의 ensemble은 imagenet test set에서 3.57% error를 달성한다.
representation의 깊이는 많은 visual recognition task에서 중요하다.
오로지 극심한 깊은 representation때문에 COCO object detection dataset에서 28%의 상대적인 향상을 얻었다.

 

 

 

Introduction

deep network는 low/mid/high level feature을 통합하고 feature의 level은 쌓인 layer의 수에 의해 질을 높인다.
최근 결과에서 network 깊이가 매우 중요하다는 것을 나타낸다.

 

  • 깊이가 중요하다는 것에 대한 의문점

Q. 더 많은 layer를 쌓는 것만큼 쉽게 더 나은 network를 학습할 수 있나?

A. 이 질문의 답의 방해물은 시작부터 수렴을 방해하는 vanishing/exploding gradient의 악명높은 문제이다.
    그러나 이 문제는 normalize된 초기화와 중간에 normalization layer로 다룰 수 있다. 

 

 

더 깊은 network는 수렴하기 시작할 때, 저하 문제를 나타낸다.
깊이가 증가해서, 정확도는 포화되고 급격하게 저하된다.

 

  • 더 깊은 모델에 대한 해결책

추가된 layer는 identity mapping이고 다른 layer는 학습된 얕은 model로부터 복사했다.
구축된 해결책은 더 깊은 model이 얕은 것보다 높지 않은 training error를 만드는 것을 말한다.

우리는 deep residual learning framework를 소개함으로써 저하 문제를 다룬다.
각각 약간 쌓인 layer가 underlying mapping을 하는 것 대신에 residual mapping을 한다.


H(x): underlying mapping


쌓인 nonlinear layer는 F(x) := H(x)−x의 다른 mapping을 한다.
기존 mapping은 F(x)+x으로 재구성한다.

 

 

F(x)+x는 shortcut connection을 가진 순방향 neural network로 알 수 있었다.
shortcut connection은 한 개나 더 많은 layer를 skip한다.
이 경우에, shortcut connection은 identity mapping을 수행하고 output은 stack된 layer의 output에 추가한다.
identity shortcut connection은 extra parameter뿐만 아니라 계산 복잡성도 추가하지 않는다.
전체 network는 backpropagation으로 SGD에 의해 end to end로 학습되고 기본적인 라이브러리를 사용해서 쉽게 실행한다.

 

  • 저하 문제를 보여주는 imagenet에서 종합적인 실험과 우리의 평가
  1. deep residual net은 최적화하기 쉽지만 깊이가 증가할 때 plain net은 더 높은 training error를 드러낸다.
  2. 이전 network보다 상당히 더 나은 결과를 만드는 증가된 깊이로부터 정확도 향상을 쉽게 얻는다.


152 layer residual net: 3.57% top 5 error on imagenet test set
residual learning 원리는 일반적이고 다른 vision과 비vision 문제에서 적용가능한 것을 기대한다.

 

 

 

Related Work

- Residual Representations

image recognition에서 VLAD는 dictionary에 관하여 residual vector에 의해 encode하는 representation이고 fisher vector는 VLAD의 확률 버전으로서 계산되어진다.
둘 다 image retrieval과 classification에 대해 얕은 representation이다.
vector 양자화에 대해, residual vector를 encoding하는 것은 기존의 vector를 encoding하는 것보다 더 효과적이였다.

low level vision과 computer graphics에서 partial differential equations(PDEs)를 해결하기 위해 사용된 Multigrid 방법은 각 subproblem이 coarser과 finer scale 사이에서 residual solution에 책임이 있는 multiple scale에서 subproblem으로서 system을 표현한다.
multigrid의 대안은 두 scale 사이에서 residual vector를 나타내는 변수에 의존하는 계층적 기반 전처리이다.
이 방법이 해결책의 residual 본성을 알지 못하는 기존 방법보다 더 빨리 수렴하고 좋은 재구성이나 전처리가 최적화를 간단하게 할 수 있다고 제안한다.

 

- Shortcut Connetctions

multi layer perceptrons(MLPs) 학습의 초기 실행은 network의 input에서 output으로부터 연결된 linear layer를 더 하는 것이다.
몇몇 중간 layer는 vanishing/exploding gradient를 다루기 위해 보조 classifier를 연결했다.
이 논문에서는 shortcut connections을 통해 구현되는 layer responses, gradients, and propagated error에 집중하는 방법을 제안합니다.
inception layer는 shortcut branch와 약간 더 깊은 branch로 구성한다.

highway network는 gating function으로 shortcut connection을 나타낸다.
parameter가 없는 shortcut과 반대로 이 gate는 데이터 의존적이고 parameter를 가진다.
gated shortcut이 닫혀있을 때(0으로 수렴), highway network에서 layer는 non residual function을 나타낸다.
그와는 반대로, 공식은 항상 residual function을 학습한다.
shortcut은 절대 닫히지 않았고 모든 정보는 항상 학습되어야 하는 추가 residual function과 함께 항상 전달됩니다
추가적으로 highway network는 극심하게 증가된 깊이를 가지므로 정확도 향상을 입증할 수 없다.

 

 

 

Deep Residual Learning

* Residual Learning

이 layer의 첫번째에서 input을 나타내는 x를 가지고 약간 쌓여진 layer에 맞추기 위해 underlying mapping으로써 H(x)를 고려한다.
많은 nonlinear layer가 점근적으로 근사치를 내는 한가지 가설이 fuction을 복잡하게 한다면, 그들이 점근적으로 residual function을 근사치낼 수 있는 가설과 동등해진다.(즉, H(x)-x)
그래서 H(X)에 근사하기 위해 쌓여진 layer에 기대하는 것보다, 우리는 이 layer가 residual function(F(x) := H(x)-x)에 근사하게 한다.
원래 function은 F(x)+x가 된다.
형태 둘 다 바람직한 function를 점근적으로 근사치낼 수 있음에도 불구하고, 학습의 용이성은 다르다.

만약 추가된 layer가 identity mapping으로 구성될 수 있다면, 더 깊은 model은 더 얕은 것보다 training error가 크지 않아야한다.
저하 문제는 수많은 nonlinear layer에 근사치 되는 identity mapping에서 어려움을 겪는 것을 암시한다.
residual learning 재구성으로 만약에 identity mapping이 최적이라면, solver는 identity mapping에 접근하는 0으로 많은 nonlinear layer의 가중치를 쉽게 다룰지도 모른다. 

실제 case에서, identity mapping은 최적인 것 같지 않지만 우리의 재구성은 문제를 전처리하는데 도움을 줄지도 모른다.
만약 최적의 function이 zero mapping보다 identity mapping이 더 가깝다면, 새로운 것처럼 function을 학습하는 것보다 identity mapping에 관하여 작은 변화를 찾는 것이 더 쉬워야한다.
학습된 residual function은 identity mapping이 합리적인 전처리를 제공하는 제안에 작은 반응을 가진다.

 

 

* Identity Mapping by shortcuts

 

x와 y: layer의 input vector와 output vector
F(x, {Wi}): 학습된 residual mapping

F = W2σ(W1x)
σ: ReLU
bias: 생략


F + x는 shortcut connection, 요소별 추가로 연산됨
추가 후에 두번쨰 nonlinearity를 채택한다.

방정식1에서 shortcut connection은 추가 parameter나 계산 복잡성을 발생시키지 않는다.
실제로 매력적일 뿐만 아니라 plain network, residual network 간의 비교가 중요하다.
같은 parameter, depth, width와 cost를 동시에 가지는 plain과 residual network를 비교한다.


x와 F의 차원은 방정식 1에서 같아야한다.
만약에 이 경우가 아니라면, 우리는 차원을 맞추기 위해 shortcut connection에 linear projection Ws를 수행할 수 있다.
방정식 1에서 정방행렬인 Ws를 사용할 수 있다. 하지만 identity mapping이 저하 문제를 다루는데 충분하고 경제적이다.
그러므로 Ws는 차원을 맞추는데 사용되어졌다.

 

 

residual function F의 형태는 유연하다.
더 많은 layer가 가능하지만 논문에서 실험은 2개나 3개의 layer를 가지는 function F를 포함한다.  
하지만 F가 single layer만 가진다면, 방정식1은 linear layer와 비슷하다(y = W1x + x). 

또한 위의 표기법은 단순화를 위해 fc layer에 관한 것이지만 convolutional layer에도 적용할 수 있습니다.
The function F(x, {Wi})은 수많은 convolutional layer를 대표한다.
요소별 추가는 두개의 feature map과 채널별 채널에 수행된다.

 

 

* Network Architectures

- Plain Network

plain network는 vgg net에서 영감을 받음

 

  • convolutional layer의 두가지 design rule
  1. 같은 output feature map size에 대해, layer는 같은 filter수를 가진다.
  2. 만약에 feature map size를 반으로 줄인다면, filter의 수는 layer당 시간 복잡도를 보존하기 위해 두배로 늘린다.

 

2 stride를 가지는 convolutional layer에 downsampling을 수행한다.
network는 global average pooling layer와 softmax를 가진 1000 way fc layer로 끝낸다.

우리의 model은 vgg보다 더 적은 filter와 낮은 복잡도를 가지는 것에 주목할 가치가 있다.
34 layer baseline은 VGG19의 18%인 3.6 billion FLOPS를 가진다.

 

- Residual Network

plain network에 기반해서, network를 대응되는 residual version으로 바꾸는 shortcut connection을 넣었다.
identity shortcut(eq1)은 input과 output이 같은 차원일 때 사용될 수 있다.

 

  • 차원이 증가할 때, 두가지 option 제시
  1. shortcut은 증가하는 차원에 대해 pad된 0을 추가해서 identity mapping을 수행한다. 
    이 옵션은 추가로 parameter가 없다.
  2. eq2에서 projection shortcut은 차원을 맞추는데 이용된다.

두개의 옵션에 대해, shortcut이 두가지 크기의 feature map을 지날 떄, 2 stride로 수행한다.

 

 

* Implementation

image는 scale augmentation으로 256, 480에서 무작위로 sample된 더 짧은 변으로 resize한다.
224x224 crop은 pixel당 평균을 빼는 것을 가진 horizontal filp이나 image로부터 무작위로 sample된다.
각 convolution 직후와 activation 전에 batch normalization을 채택한다.
우리는 weight를 초기화하고 처음부터 모든 plain/residual net을 학습한다.

 

optimizer: 256 minibatch으로 SGD(weight decay:0.0001 , momentum: 0.9)
learning rate: 0.1로 시작해서 error가 plateaus일 때 10으로 나눔

dropout: X


model은 60x10^4 iteration까지 학습된다 
testing에서 비교 연구을 위해 우리는 일반적인 10 crop testing을 채택한다.
가장 좋은 결과를 위해, 우리는 fully convolutional 형태를 채택하고 multiple scale에서 score를 평균낸다.

 

 

 

Experiments

* Imagenet Classification

data: imagenet 2012 classification dataset(1000개의 class)
data split: 1.28 million training image, 50k validation image, 100k test image 


top1과 top5 error rate 둘 다 평가함

 

- plain network

 

우리는 18 layer와 34 layer plain net을 평가한다.
18 layer plain net이 기본 형태이다.

 


더 깊은 34 layer plain net이 더 얕은 18 layer plain net보다 더 높은 validation error를 가진다.

최적화 어려움은 vanishing gradient에 의한 원인이지 않을 것이라고 주장한다.
plain network는 0이 아닌 분산으로 forward propagated signal을 하게하는 BN으로 학습되어졌다.
우리는 backward propagated gradient가 BN을 가진 좋은 norm인지 확인한다.
따라서 forward 또는 backward signal이 사라지지 않는다.
우리는 deep plain net이 training error의 감소에 영향이 있는 기하급수적으로 낮은 수렴율을 가진다고 추측한다.

 

- Residual Networks

18 layer와 34 layer residual net를 평가한다.
baseline architecture는 shortcut connection이 3x3 filter의 pair에 더해지는 것으로 예상하는 위의 plain net과 같다.

 

  • 첫번째 비교(Table 2와 Fig 4 오른쪽)

증가하는 차원을 위해 모든 shortcut과 zero padding에 대한 identity mapping을 사용한다. 
그래서 plain과 비교하면 추가 parameter가 없다.

 

  • 3가지 주된 관찰(Table 2와 Fig 4)
  1. 상황은 residual learning과 반대이다.(34 layer resnet이 18 layer resnet보다 더 낫다)
    더 중요한건 34 layer resnet은 상당히 더 낮은 training error를 나타내고 validation data에서 일반화할 수 있다.
    -> 증가된 깊이로 정확도 상향을 얻을 수 있다.
  2. plain network와 비교하면, 34 layer resnet은 3.5%로 top1 error를 줄인다.   
    이 비교는 극심한 deep system에서 residual learning의 효과를 입증한다.
  3. 18 layer plain과 residual net을 비교한다.
    하지만 18 layer resnet이 더 빨리 수렴한다.
    net이 지나치게 깊지 않을 때, 현재 SGD는 plain net에서 여전히 좋은 해결책이다.
    이 경우에, resnet은 이른 stage에서 더 빠른 수렴을 제공함으로써 최적화를 완화한다.

 

- Identity vs Projection Shortcuts

우리는 학습에 도움을 주는 identity shortcut으로 parameter 없는 것을 보여준다.
다음으로 우리는 projection shortcut을 연구한다.

 

 

  • 세가지 option 비교(Table 3)
  1. zero padding shortcut은 증가하는 차원으로 사용되고, 모든 shortcut은 parameter가 없다.
  2. projection shortcut은 증가하는 차원에 사용되어졌고, 다른 shortcut은 identity이다.
  3. 모든 shortcut은 projection이다.


3가지 option 모두 plain 상대보다 상당히 더 나았다.
option 2는 option1보다 약간 더 나았고 option3는 option2보다 미미하게 나았다.
우리는 option1에서 zero pad된 차원이 residual learning이 없기 때문에 논쟁하고, 많은 projection shortcut에 의해 도입된 추가 parameter 덕분이라고 생각한다.
하지만 option1, option2, option3 사이에서 작은 변화는 projection shortcut이 저하 문제를 다루기 위해 본질적이지 않다는 것을 나타낸다.
그래서 memory, 시간복잡도, model size를 줄이기 위해 논문 나머지에서 option 3를 사용하지 않는다.
identity shortcut은 아래 소개된 bottlenect architecture의 복잡성을 증가시키지 않기 위해 중요하다.

 

- Deeper Bottleneck Architectures

 

우리가 감당할 수 있는 학습 시간 염려때문에 우리는 bottleneck design으로 block을 만드는 것을 수정한다.
각 residual fuction F에 대해 우리는 2개 대신에 3개의 layer를 쌓았다.


세 개 layer = 1x1, 3x3, 1x1 convolution
1x1 layer: 차원을 줄이고 증가시키는데 책임을 진다. 
3x3 layer: 더 작은 input/output 차원으로 bottleneck이 나타난다.

parameter가 없는 identity shortcut은 bottleneck architecture에 대해 중요하다.
만약에 identity shortcut이 projection에 대체된다면 shortcut은 두 개의 high dimensional end에 연결되어짐으로써 projection은 시간복잡도와 model size가 2배 된다.
그래서 identity shortcut은 bottleneck design에서 더 많은 효율적인 model로 이끈다.

 

-- 50 layer Resnet

우리는 50 layer resnet에서 결과가 나온 3 layer bottleneck block을 가지는 34 layer에서 각 2 layer block을 대체한다.
우리는 증가하는 차원에 대해 option 2를 사용한다

 

-- 101 layer and 152 layer Resnet

우리는 3 layer block을 더 사용함으로써 101 layer와 152 layer resnet을 만든다.
현저하게, 깊이가 상당히 증가했음에도 불구하고 152 layer resnet은 vgg 16,19 net보다 더 낮은 복잡성을 가진다.
50, 101, 152 layer resnet은 상당한 차이로 34 layer보다 더 정확하다.
상당히 증가된 깊이로부터 상당한 정확도 향상을 얻는다.

 

-- Comparisons with state of the art methods

 

우리는 이전에 가장 최고의 single model 결과와 비교한다.
우리의 baseline 34 layer resnet은 매우 경쟁력있는 정확도를 달성했다.
152 layer resnet은 4.49%의 single model top5 validation error를 가진다.
single model 결과는 모든 이전 ensemble 결과를 능가한다.
우리는 ensemble 형태로 다른 깊이의 6개 model을 결합한다.
이거는 test set에서 3.57% top5 error를 이끈다.

 

 

*CIFAR10 and Analysis

cifar10 dataset: 50k training image, 10k testing image(10 classes)
focus를 network 깊이에 뒀지만 깊다고 sota 결과가 나오는 것은 아니다.

network input: 픽셀당 평균을 뺀 32x32 image

filter의 수: 각각 (16,32,64)
subsampling: 2stride로 convolution을 수행


첫번째 layer는 3x3 convolution 그 후 각 feature map size에 대해 2n layer를 가진 각 feature map size(32,16,8)에서 3x3 convolution을 가진 fn layer의 스택을 사용한다.


network는 global average pooling, 10 way fully connected layer, softmax로 끝낸다.
6n+2개 쌓여진 weighted layer가 있다.

 


shortcut connection이 사용될 때, 3x3 layer의 쌍으로 연결된다.
이 dataset은 모든 경우에서 identity shortcut을 사용한다.
그래서 우리의 residual model은 plain 상대로써 같은 깊이, width(채널 수), parameter 수를 가진다.

weight decay: 0.0001
momentum: 0.9
weight initialization과 BN 채택
dropout: X


이 model은 두개의 GPU로 128 minibatch size로 학습했음


learning rate: 0.1 learning rate로 시작하고 32k와 48k iteration에서 10으로 나눈다
early stopping: 45k train, 5k val split에서 결정한 64k iteration에서 학습을 중단한다

 

  • 학습할 때 간단한 augmentation
  1. 4 pixel은 각 변에 pad하고 32x32 crop은 pad된 image나 horizontal filp으로부터 무작위로 sample된다.

 

test할 때, 우리는 32x32 image의 single view로 평가한다.

 

 

20,32,44,56 layer network를 이끄는 n = 3,5,7,9를 비교
deep plain network는 증가된 depth로 고통받고 깊이가 더 깊어질때 더 높은 training error를 나타낸다.

resnet은 최적화 어려움을 극복하고 깊이가 증가할 때 정확도 향상을 입증한다.

우리는 100 layer resnet에서 n이 18인 것을 분석한다.
이 경우에서, 0.1의 초기 learning rate는 너무 커서 수렴하기 시작한다는 것을 우리는 알았다.
그래서 우리는 training error가 80%미만으로 갈때까지 training을 0.01씩 warm up한다.  
그 후 0.1로 돌아가서 계속 학습한다.
learning schedule의 나머지는 이전과 같다.
110 layer network는 잘 수렴한다.

 


110 layer network는 다른 깊고 얕은 network보다 더 적은 parameter를 가지고 sota 결과 중 하나이다.

 

-- Analysis of Layer Responses

 

response는 BN 후와 다른 비선형(ReLU/addition) 전에 각 3x3 layer의 output이다. 
resnet에 대한 이 분석은 residual function의 response 힘을 드러낸다.
resnet은 plain counterpart보다 더 작은 response를 가지는 것으로 나타난다.
이 결과는 residual function이 non residual function보다 0에 가깝게 하는 basic motivation을 돕는다.
우리는 resnet 20, 56, 110 사이에서 비교에 의한 증거로써 더 깊은 resnet이 더 작은 크기의 response를 가진다.
더 많은 layer가 있을 때, resnet의 개별 layer는 덜 signal을 수정하는 경향이 있다.

 

-- Exploring Over 1000 layers

우리는 1000 layer 넘는 깊은 model을 분석한다.
1202 layer를 이끄는 n을 200으로 설정한다.
우리의 방법은 최적화 어려움이 없었고 10^3 layer는 0.1%보다 낮은 training error를 달성한다.
test error는 여전히 상당히 좋았다.

하지만 1000 layer 넘는 deep model 같은 것에는 여전히 open 문제가 있다.
1202 layer, 110 layer network 둘 다 training error는 비슷함에도 불구하고 1202 layer network의 testing 결과가 110 layer network의 것보다 더 나빴다.
1202 layer는 작은 dataset에 대해 불필요하게 깊어서 우리는 overfitting 같다고 주장했다 .
maxout이나 dropout같은 강한 regularization은 이 dataset에 좋은 결과를 얻기 위해 적용되어졌다.
이 논문에서는 maxout/dropout 사용X
그리고 최적화의 어려움에 집중으로부터 산만하게 하는 것 없이 design에 의해 깊고 얕은 구조를 거쳐서 regularization을 부과한다.
하지만 더 강한 regularization을 가진 결합이 결과를 향상시킬지도 모른다.

 

 

* Object Detection on PASCAL and MS COCO

 

challenging coco dataset에서 우리는 28%로 상대적인 향상인 coco의 standard metric에서 6% 증가를 얻는다.