본문 바로가기
Computer Vision

ResNet (2016) 논문 리뷰

by 아르카눔 2024. 4. 15.

ResNet이 소개된 논문 이름은 Deep Residual Learning for Image Recognition이라는 심플한 이름이다. 저자는 Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun이다. 

ResNet은 residual connection이 핵심인 모델이며 ILSVRC 2015 image classification에서 1등을 한 모델이다. 

 

 

Abstract

Residual functions을 도입해서 layers input에 reference로 작용하도록 구성했다. 충분히 이해할만한 실증적인 증거들을 보여준다. 약 152 layers를 가지고 있으며, 이는 VGGNet보다 8배 더 깊은 구조를 지니지만 complexity는 더 낮다. ILSVRC 2015 image classification에서 1등을 했으며 추가적으로 CIFAR-10에 대해서 100과 1000개의 layers를 가지고 분석했다. 

추가적으로 깊은 모델의 visual recognition 작업에 적절히 대응할 수 있다는 것을 보이기 위해서, COCO object detection에 대해서도 실험을 수행했다. 약 28%의 상대적인 성능 향상을 보였다. 

 

 

1. Introduction

최근 image classification에 있어서 deep convolutional neural networks는 선도적인 돌파구였다. Deep networks는 자연스럽게 low / mid / high level features를 종합하고 end-to-end로 classification을 수행한다. 이는 depth, the number of layers에 의해서 다양한 레벨의 피쳐를 학습함으로써 더욱 강화되었다. ImageNet 챌린지에서도 네트워크의 깊이, depth는 중요하게 작용했다.

 Depth의 중요성이 대두되는데 이런 의문점이 생긴다. 단순히 layers를 깊게 쌓는다고 해서 성능이 향상될까? 우선 vanishing / exploding gradients 문제가 생길 수 있다. 하지만 이는 normalized initialization이나 intermediate normalization layers로 해결이 가능하다는 사실이 널리 알려져있다.

 DNN이 수렴하는데 있어서 degradation 문제가 드러난다. Depth가 증가함에도 정확도는 답보상태이며 오히려 빠르게 저하되기도 한다. 이는 overfitting이 아니라, 적절한 depth의 dnn에 더 많은 레이어를 쌓음으로써 학습 에러가 증가하는 현상이다. 아래의 Fig. 1이 그 대표적인 예시다.

 

 

이런 저하 현상은 모든 시스템이 쉽게 최적화될 수 없음을 시사한다. 저자들은 shallower architecture에 deeper counterpart를 거기다가 덧붙이는 방법을 고한했다. 덧붙여진, added layers는 identity mapping이다. 

 본 논문에서는 deep residual learning 방법으로 degradation 문제를 다루었다. 

 

 

Desired underlying mapping은  $H(x)$이고 이를 활용한 resiaul mapping은 $F(x)$다. $F(x) := H(x) - x$ 이렇게 정의된다. 이때, $H(x) = F(x) + x$는 원래의 mapping (original mapping)이다.

 

$ F(x) + x $은 shorcut connection이라고도 한다. 또는 skip connection이라고도 하는데 이는 단순한 identity mapping으로 작동한다. 

 

152 layer residual net은 ImageNet 2015 챌린지에서 앙상블 방법을 이용해 top-5 error rate 3.57%를 달성하여 1위를 했다. 종합하면 ResNet을 이용해서 ILSVRC & COCO 2015 대회에서 ImageNet detection, ImageNet localization, COCO detection, COCO segmenation 부문에서 1위를 했다.

 

 

2. Related Works

Residual Representations

VLAD는 residual vectors와 Fisher Vector를 활용한 presentation 모델이다.

 

Shortcut Connections

MLP나 inception layer에서도 shorcut의 아이디어를 찾을 수 있다.

 

3. Deep Residual Learning

Residual Learning and Identity Mapping by Shortcuts

 

Fig. 2에 나온 식을 block 단위로 살펴보면 다음과 같다.

 

$ y = F(x, \{ W_i \} ) + x$

 

이때 위 식은 바로 우리가 학습시켜야할 residual mapping이다.

 

이때, 함수 $F = W_2 \sigma (W_1 x)$의 linear transformation과 ReLU ($\sigma()$)로 나타낼 수 있다.

 

원래는 bias가 있으나 표기의 편의성을 위해서 생략했다.

 

$ F + x$ 연산은 shortcut connection 그리고 element-wise addition으로 작동한다.

 

위의 식은 $F$와 $x$의 dimensiton이 같을 때를 가정한 식으로 만약 dimension이 다르면, 아래와 같이 계산한다.

 

$ y = F(x, \{ W_i \} ) +  W_s x$

 

이러한 간단한 linear projection으로 인해서 dimension을 동일하게 만들어서 shortcut connection을 수행한다. 

 

Dimension이 같을 때도$W_s$을 사용할 수 있지만 성능에서 큰 필요가 없음을 뒤에서 보이겠다.

 

Network Architectures

 

우선 VGGNet과 ResNet의 구조를 아래의 Fig. 3에서 비교해보겠다.

 

 

34-layer plain이 shortcut connection이 없는 구조이고 34-layer residual이 shortcut connection이 있는 네트워크 구조다. 

Figure 3의 residual을 보면 각 conv layers가 같은 색깔로 묶여있는데 이를 하나의 블록으로 보면 된다.

 

옅은 주황색으로 칠해진 첫번재 블록과 연한 보라색으로 칠해진 두번째 블록을 제외하고,

나머지 블록의 첫번째 conv layer에는 뒤에 /2가 붙는다.

 

3번째 초록색 블록을 보면 3x3 conv, 128, /2라고 표기되어있다.

이는 kernel size가 3x3 이고, output channels가 128이고, stride가 2라는 뜻이다.

각 블록의 첫 번째 conv layer에 stride를 2로 만들어서 features의 사이즈를 줄여가며 학습한다.

 

 

Implementation

 

인풋 이미지는 resized and scale augmentation이 적용됐다. 224 x 224 crop된 이미지를 랜덤 샘플링했다. 샘플링 풀 (pool)은 원래 이미지 혹은 horizontal flip다. 원래 이미지와 horizontal flip 모두 per-pixel  mean subtraction도 적용됐다. Standard color augmentation 역시 적용했다. Batch normalization도 적용했는데 convolution과 activation function 사이에 적용했다. Weights를 초기화했으며 mini-batch size 256에 SGD를 이용했다. Learning rate는 0.1에서 시작해서 에러가 정체를 보이면 이를 10으로 나누었다. 모델은 약 60 x $10^4$회의 iterations를 거쳐서 학습했다. Weight decay는 0.0001, 그리고 momentum은 0.9를 사용했다. Dropout을 사용하지 않았다. 테스트 과정에서 standard 10-crop testing을 적용했다. 이미지 사이즈에서는 multiple scales를 사용했는데 {224, 256, 384, 480, 640}이 스케일들의 범위다.

 

 

4. Experiments

ImageNet의 1000개의 class에 대한 분류 문제를 실험한다.

 

 

Table 1에서는 layers의 수에 따라서 어떻게 구조를 만들었는지를 나타낸다.

 

 

 

Fig. 4에서는 plain-18과 34, 그리고 ResNet-18과 34의 성능을 보이고 있다. Error rate라서 낮을수록 좋은 성능이다.

Table 2를 보면 validation에 대한 Top-1 error을 나타내는데 ResNet-34가 가장 좋음을 알 수 있다.

 

 

 

 

Table 3에서는 validation에 대해서 ResNet을 깊게 쌓으면 쌓을수록 더 좋은 성능을 보임을 알 수 있다.

 

 

Table 4에서는 single model을, Table 5에서는 앙상블 모델의 성능 비교를 보인다.

앙상블을 활용한 ResNet의 성능이 베스트임을 알 수 있다.

 

 

 

Fig. 5에서는 bottleneck block을 보여주는데 1x1 conv를 활용하여 파라미터 수를 줄였음을 알 수 있다.

 

 

 

 

Table 6에서는 CIFAR-10 데이터에 대한 분류 성능을 보여준다. ResNet-110이 가장 좋은 모델이다.

 

 

 

Fig. 6과 7에서는 CIFAR-10에 대한 다양한 plain과 ResNet 모델들의 성능을 보여준다.

 

 

 

Table 7과 8에서는 PASCAL 2007, 2012 그리고 COCO 데이터에 대한 object detection 성능을 mAP로 측정해서 보여준다.

Faster-R-CNN을 활용하는데 VGG-16을 ResNet-101로 대체한 다음 성능을 비교했다. 

Faster R-CNN에 ResNet-101을 적용했을 때 성능이 향상되었다.