Deep Residual Learning for Image Recognition 본문
Abstract
- Deep neural net은 학습시키기 어렵다는 문제가 있다. 그러나 본 논문에서는 residual learning framework을 통해 깊은 신경망도 잘 학습시킬 수 있다.
- 제안하는 residual network는 optimize가 쉽고 상당히 깊은 depth를 가지는 뉴럴넷에서도 성능을 낼 수 있다.
- VGG보다 8배 많은 152개의 레이어를 사용했음에도 성능이 좋았다. (레이어 수는 훨씬 많지만 실제 Complexity 측면에선 오히려 ResNet이 VGG보다 lower complexity)
- Classification뿐만 아니라 detection, localization, segmentation등 다양한 task에서 SOTA를 달성했다.
1. Introduction
- Deep 뉴럴넷은 low/mid/high level의 enrich feature를 만들어낼 수 있다는 점에서 좋은 성능을 보여주고 있다. 따라서 신경망의 depth는 매우 중요한 요소라 할 수 있다.
- 그렇다면 레이어를 많이 쌓아올리는 것은 네트워크를 더 쉽게 학습시킨다고 볼 수 있을까?
- Degradation(gradient vanishing, gradient exploding)이라는 문제가 있다.
- Gradient vanishing은 gradient값이 너무 작아서 네트워크를 제대로 학습시키지 못하는 문제를 말한다. 이 문제는 입력값에 비해 출력값이 너무 작은 space로 맵핑될 때 발생할 수 있으며 레이어가 깊어질수록 발생하는 문제이다. activation function으로 sigmoid or tanh 함수를 사용할 때 발생할 수 있음
- Gradient exploding은 gradient vanishing과 반대로 gradient 값이 너무 커져서 발산해버리는 문제
- Layer를 더 많이 사용했는데 degradation으로 인해 오히려 error가 더 높음
- Degradation(gradient vanishing, gradient exploding)이라는 문제가 있다.
- 네트워크의 depth를 늘리는 것은 이러한 degradation 문제를 일으킨다. degradation문제는 모델의 오버피팅으로 인해 발생하는 것이 아니라 레이어를 더 많이 쌓아올려 모델의 training error가 더 커지게 만든다. 즉 degradation은 training 과정에서 네트워크를 최적화하기 어렵게 만든다고 볼 수 있다.
- shallower 모델과 deeper 모델을 가정했을 때 deeper model에 제안하는 identity mapping 레이어를 추가하면 deeper model의 성능이 shallower model보다 더 높아질 수 있다.
- 따라서 본 논문에서는 degradation problem을 해결하기 위한 deep residual learning framework를 제안한다.
- x는 input, F(x)는 일반적인 Conv, BN, relu 같은 레이어를 거친 것을 의미한다. F(x)에 shortcut connection으로 x를 더해주어 F(x)가 아닌 F(x)+x를 다음 레이어로 전달한다. 여기서 shortcut connection이란 하나 이상의 레이어를 skipping하는 걸 말한다.
- Deep residual net은 단순하게 레이어만 쌓아올린 plain network보다 최적화가 쉽고 성능이 더 높다. 또한 네트워크의 depth가 증가하더라도 좋은 performance를 낼 수 있다.
3. Deep Residual Learning
Residual Learning
- 기존의 뉴럴넷은 아래 왼쪽 그림과 같이 레이어를 쌓아 입력 x값이 target값 y를 잘 맵핑하는 H(x)를 찾는 것이 목표였다.
-
그러나 Residual block에선 H(x)가 F(x) + x가 된다. (여기서 F(x)는 weight layer와 ReLu를 의미한다.)
-
Residual block에서 x는 F(x)와 element-wise add연산이 이루어지기 때문에 x는 변하지 않는 값으로 볼 수 있다. 만약 H(x) = F(x) + x에서 F(x)가 0이라면 H(x) = x가 되고 입력값과 출력값이 같아지게 된다. 그러므로 F(x)가 0에 가까울만큼 매우 작은 값이라면 H(x)는 입력 x와 매우 비슷하다고 볼 수 있다.
-
따라서 ResNet에선 적절한 H(x)를 찾는 것이 아니라 적절한 residual function F(x) = H(x) - x를 찾는 것이 목표가 된다. 여기서 H(x) - x를 residual(잔차)라 부르며 이 값이 최소가 되도록 학습하기 때문에 Residual learning이라 부른다. 또한 이러한 element-wise add연산은 추가적인 파라미터를 필요로 하지 않기 때문에 Complexity를 증가시키지도 않는다.
-
따라서 학습의 방향이 어느정도 정해져있고(?) back-propagation 과정에서 기울기가 사라지지 않기 때문에 gradient vanishing 문제를 방지할 수 있다.
-
논문에서 제안하는 residual block은 아래 수식 (1)과 같이 정의할 수 있다.
- 여기서 x, y는 input, output이며 function F는 Conv, relu Conv를 의미한다.
- 한가지 주의해야할 점은 F + x는 element-wise addition 연산이기 때문에 dimension이 일치해야 한다. dimension이 일치하지 않는 경우 linear projection을 사용하여 dimension을 맞춰준다.
Network Architectures
- 네트워크 간 비교에서 VGG19, Plain net, ResNet34를 비교한다.
- Residual block에서 element-wise add 연산은 dimension이 서로 일치해야 하기 때문에 채널 수가 다른 경우 1x1 conv를 통해 채널 수를 맞춰준 뒤 add연산한다.
- ResNet의 shortcut connection은 identity mapping으로 element-wise add연산을 수행하기 때문에 dimension이 일치해야 한다. 아래 그림에서 실선은 일반적인 shortcut connection이고 점선의 경우 dimension이 일치하지 않기 때문에 dimension을 증가시켜 연산한다.
- dimension을 증가시키기 위한 방법으로 2가지를 고려해볼 수 있음
- zero padding을 이용하여 dimension을 맞춰줌 (이 경우 추가적인 파라미터는 없음)
- 1x1 convolution을 이용하여 dimension을 맞춰줌. (shortcut connection으로 오는 x에 1x1 conv를 사용하여 dimension matching하는 걸 projection shortcut이라 부름)
- ResNet 아키텍처 구조
4. Expriments
Plain Networks.
- ImageNet error, 얇은선 = training error, 굵은 선 = validation error
- Plain Network의 경우(아래 그림 왼쪽) 레이어를 더 많이 사용했을 경우 error가 더 높았다.
- 그러나 논문에서 제안하는 Residual block을 적용했을 경우 레이어가 더 많은 모델의 성능이 더 높은 것을 확인할 수 있다.
- 이 실험에서 plain network의 성능이 안 좋은 이유는 degradation문제가 아니고 단지 제안하는 solution을 적용했을 때 잘 작동한다는 것을 보여주는 결과임
Residual Networks.
-
3가지 major observation
- ResNet-18보다 ResNet-34가 training error도 낮고 validation data에 대해서 일반화가 더 잘되는 걸 볼 수 있다. 이는 ResNet이 degradation 문제를 잘 잡아주고 네트워크의 depth를 늘렸을 때도 좋은 성능을 얻을 수 있다는 걸 의미한다.
- plain-34, ResNet-34를 비교했을 때 ResNet의 성능이 더 높으며 이는 residual learning이 deep 모델에서 잘 작동하며 효과적임
- plain-18, ResNet-18을 비교했을 때 성능면에서 크게 차이가 나지 않는다. 그러나 ResNet의 수렴이 훨씬 빨랐다. ResNet의 최적화가 더 빠르고 쉽다.
Identity vs. Projection Shortcuts.
-
short connection으로 element-wise add연산을 할 때는 dimension이 일치해야 한다. dimension이 일치하지 않는 경우 이를 맞춰주기 위해 linear projection을 사용한다. Table 3에서 ResNet-A, B, C는 서로 다른 유형의 linear projection을 사용하였다.
A. zero-padding shortcut: dimension을 늘리기 위한 경우에 사용
B. projection shortcut: dimension을 늘리기 위한 경우에만 사용하고 나머지 shortcut에선 일반적인 identity mapping 사용
C. 모든 shortcut을 projection (모든 shortcut connection이 projection shortcut이라는 뜻인듯)
- A, B, C 모두 plain-34보단 성능이 좋다.
- B는 A보다 조금 더 better하다. A의 zero-padded dimension, 즉 0으로 채워진 부분은 residual learning이 아니기 때문
- C는 B보다 조금 좋긴하지만 projection shortcut에 의해 추가적인 파라미터가 발생한다는 단점이 있다. 따라서 projection shortcut은 더 이상 사용하지 않는다.
- Identity shortcut은 parameter free하다는 점도 중요함
Deeper Bottleneck Architectures.
- Deeper Network의 경우 오른쪽과 같은 bottleneck design을 적용한 residual block을 사용한다.
- 여기서 1x1을 사용하는 이유는 cost를 줄이기 위해 dimension을 줄이고 이후 element-wise add 연산을 위해 다시 dimension을 맞춰주기 위해 사용한다.
- 이러한 구조가 projection shortcut 구조보다 더 효율적임
- ResNet의 레이어를 101, 152개 사용했을 때도 VGG와 비교했을 때 오히려 lower complexity
CIFAR-10 and Analysis
- 다른 모델들과 비교했을 때
- ResNet-110은 evaluation을 5번 한 거라서 평균, 표준편차까지 기록됨
- ResNet이 plain network보다 error rate이 낮음
- 레이어를 1200개까지 늘려봤는데 training error는 비슷한데 testing error가 더 높게 나옴
- CIFAR-10은 상대적으로 small dataset이기 때문에 레이어를 1202개까지 사용할 필요가 없다고 봄
Object Detection on PASCAL and MS COCO
- Table 7에선 Faster R-CNN의 backbone을 VGG16에서 ResNet-101로 바꿨을 때 결과. VGG보다 ResNet을 썼을 때 mAP가 더 높음
- Table 8은 COCO validation 결과로 VGG보다 더 높은 성능을 보임
- mAP@.5는 IoU를 0.5로 했을 때 mAP를 의미함
- mAP@[.5, .95]는 IoU를 0.5부터 0.95까지 0.05씩 증가시켜 총 10개 케이스에 대한 IoU를 구하고 이를 평균낸 값
Object Detection Improvements
-
Object detection의 성능을 높이기 위해 3가지 technique을 적용함
-
Box refinement
- Faster-RCNN에서 final output은 regressed box이며 이 box는 proposal box와 different하다. 따라서 regressed box로부터 새로운 feature를 pooling하여 새로운 classification score와 regressed box값을 도출함. 총 300개의 new prediction을 구하고 IoU가 0.3인 Non-Maximum suppression을 적용
-
Global context
- global context를 combine하는 것. 이미지가 주어졌을 때 global Spatial Pyramid Pooling을 적용. pooled feature가 RoI layers로 들어간 뒤 global context feature를 뽑아내고 global feature를 classification, box regression layer로 입력함
-
Multi-scaling testing
- testing에서만 multi-scaling을 적용함. 학습된 모델로 image pyramid에서 {200, 400, 600, 800, 1000} 크기의 feature를 추출. 인접한 사이즈의 feature를 2개 선택하여 RoI pooling과 이후 레이어들을 거친 뒤, maxout을 사용하여 merge함
-
baseline model보다 box refinement, context, multi-scale testing을 적용했을 때 성능이 개선됨
- class별로 AP를 계산했을 때 거의 모든 class에서 성능 개선이 이루어짐
References
'ML & DL > Paper Review' 카테고리의 다른 글
Fully Convolutional Networks for Semantic Segmentation (0) | 2021.01.29 |
---|---|
Densely Connected Convolutional Networks (1) | 2020.04.22 |
Going Deeper with Convolutions (0) | 2020.04.22 |
Very Deep Convolutional Networks for Large-Scale Image Recognition (0) | 2020.04.21 |
AlexNet (0) | 2020.04.01 |