[Paper Review] Deep Residual Learning for Image Recognition (ResNet)
본 논문은 2015 년도에 Kaming He 가 작성한 논문이다.
7년이 지난 논문이지만 본 논문의 영향력은 현재까지도 지대하다.
일단.. 이 논문은 2022년 10월 기준 약 14만회에 이르는 피인용횟수를 기록하고 있다.
1. ResNet 은 Skip Connection 이라는 개념을 제시했다.
YOLO, Transformer, U-Net 등 여러 최신 딥러닝 모델들은 Skip Connection 을 사용하고 있다.
2. ResNet 은 층을 "극단적으로 깊게" 하는 것을 가능케 해주었다. (그것도, 매우 효율적으로)
Deep Learning 에서의 "Deep" 을 가능케 해준 것이다.
이로부터, ResNet 이 딥러닝 분야에서 얼마나 중요한 위치에 있는지 가늠할 수 있다.
본 리뷰는 독자가 기본적인 FCN, CNN 에 대해서 이해하고 있다고 가정한다.
또한 본 리뷰에는 독자의 이해를 돕기 위한 나의 생각이 첨부되어 있다.
FCN 에 대한 이해가 부족하다면 다음 영상을 참고하라.
https://www.youtube.com/watch?v=aircAruvnKk&ab_channel=3Blue1Brown
CNN 에 대한 이해가 부족하다면 다음 블로그를 참고하라. (CNN 을 이해하기에 완벽한 그림들이 첨부되어 있다..!)
A Comprehensive Guide to Convolutional Neural Networks — the ELI5 way
Artificial Intelligence has been witnessing a monumental growth in bridging the gap between the capabilities of humans and machines…
towardsdatascience.com
그럼 시작해보자 !
논문의 핵심을 먼저 짚고 넘어가는 것이 논문 이해에 도움이 될 것이다.
논문의 핵심
- 문제점 관찰
- 층을 극단적으로 깊게 하니 정확도가 오히려 떨어졌다.
- 층을 극단적으로 깊게 하니 정확도가 오히려 떨어졌다.
- 해결 방법
- 새로운 신경망 ResNet 을 만들었다.
- ResNet 은 층을 깊게 해도 학습이 잘 이루어졌다.
- ResNet 매우 깊음에도 불구하고, 학습시키기 쉽다.
- ResNet 은 층을 깊게 해도 학습이 잘 이루어졌다.
- 새로운 신경망 ResNet 을 만들었다.
Abstract 와 Introduction 은 모든 단락이 매우 중요한 내용들을 포함하고 있어서 단락 별로 리뷰한다.
Introduction 이후에는 Figures 와 Tables 별로 리뷰한다.
Abstract
- 극단적으로 깊은 신경망의 원활한 최적화를 위해서 어떠한 방법을 썼는지 간략히 소개
- layers 를 Reformulate 했다고 한다. 잘 와닿지 않는다. 본문에서 자세한 내용을 살펴보자.
- 이 방법으로 실험해보았을 때, 매우 훌륭한 성능을 기록
- ILSVRC 2015 Classification task 에서 우승
- ImageNet 데이터셋 뿐만 아니라 CIFAR-10 등 여러 데이터셋에서 실험과 분석을 수행했다.
- 이렇게 성능이 개선된 것이 오직 '층을 깊게 만든 것' 의 영향
- 실험에 영향을 미칠 수 있는 다른 변수들은 통제한 상태에서 '층의 깊이' 만 다르게 해서 실험을 했나보다.
Introduction 의 1 번째 단락
- "Deep convolutional neural netwokrs" 에 대한 기존의 관점을 소개
- 기존의 관점 : 층을 깊게 하는 것은 효과적이다.
- 신경망의 성능은 층을 깊게 함으로써 많이 개선되어왔다.
- 층을 깊게하면, 추출해내는 특징들의 수준이 더욱 풍부해질 수 있다.
- 최근 ImageNet 에서 좋은 성능을 보여준 모델들은 16~30 층의 깊은 신경망이었다.
- 신경망의 성능은 층을 깊게 함으로써 많이 개선되어왔다.
- 기존의 관점 : 층을 깊게 하는 것은 효과적이다.
Introduction 의 2 번째 단락
- 질문 하나를 던진다. "정말로 층을 쌓으면 쌓을수록 학습이 잘 이루어질까?" 답은 NO.
- 그러나 이 문제가 최근에 해결되었음을 알려주고, 해결한 방법을 언급한다.
(아래가 이해 안되면 그냥 넘어가자.)- 최근 기울기 소실 문제가 알려졌었다.
- 가중치 초깃값을 평균이 0 이고 표준편차가 1 인 정규 분포로 초기화해왔다.
- 이렇게 초기화하면 활성화 함수의 출력값이 0 과 1 양 극단에 주로 존재하게 된다는 것이 관찰되었다.
- 활성화 함수의 출력값이 0 과 1 극단에 존재하면 활성화 함수의 미분 값은 0 에 가깝게 된다.
(sigmoid 함수의 미분 값을 살펴보자. output * (1-output) 이다.) - 그러면, 층이 깊으면 깊을수록 역전파되는 값이 0 에 수렴하게된다. 기울기가 소실되는 것이다.
- 즉, 학습 자체가 이루어지지 않게 된다.
- 어쨌든, 해결했다.
- Xavier Glorot 과 Yoshua Bengio 의 Normalized Initialization 같은 방법으로 해결되었다.
- Tensorflow API 의 Convolution layer 는 여기서 제시된 uniform initialization method 를 default 로 사용한다.
아래 링크를 살펴보자. kernel_initializer = 'glorot_uniform' 으로 초기화되어 있다.
https://www.tensorflow.org/api_docs/python/tf/keras/layers/Conv2D
- Tensorflow API 의 Convolution layer 는 여기서 제시된 uniform initialization method 를 default 로 사용한다.
- Xavier Glorot 과 Yoshua Bengio 의 Normalized Initialization 같은 방법으로 해결되었다.
- 최근 기울기 소실 문제가 알려졌었다.
그러나... 새로운 문제가 등장한다.
Introduction 의 3 번째 단락
- "정말로 층을 쌓으면 쌓을수록 성능이 개선될까?"
- 기울기 소실 문제가 해결되어 일단 학습 자체는 이루어졌다.
- 그러나 Degradation 문제가 관찰되었다.
- 신경망의 깊이가 깊어질수록, 정확도가 "포화" 되는 현상이었다.
- "Training error" 가 증가했으므로, overfitting 때문은 아니었다.
- 신경망의 깊이가 깊어질수록, 정확도가 "포화" 되는 현상이었다.
- 기울기 소실 문제가 해결되어 일단 학습 자체는 이루어졌다.
그럼 뭐가 문제지?
Introduction 의 4 번째 단락
- 네 번째 단락에서는 문제를 탐색하기 위해 수행한 실험을 설명하고 있다.
- 이 단락은 그림을 곁들여 설명해야할 것 같다.
위의 그림에 나타난 인물이 "Sara" 임을 학습시킨 2개의 FCN 이 있다고 가정해보자.
그 중 하나는 다음과 같은 구조를 가지며 Sara 이미지를 학습했다.
이렇게 학습된 신경망을 그대로 복사해서, 뒤에 레이어들을 추가한다.
이상적으로는, 추가된 각각의 layer 들이 identity mapping 으로 기능하면 좋겠다.
즉 Identity Function 을 근사해내는 레이어로 최적화된다면 매우 이상적일 것이다.
(Identity Function 이란, input 을 그대로 출력해내는 함수이다.)
그렇다면 이 "Deeper" 신경망도 여전히 Sara 를 올바르게 추론해낼 수 있을 것이다.
만약 추가된 layer 들이 Identity Function 을 성공적으로 근사해냈다면,
"Deeper" 신경망은 "Shallower" 신경망보다 성능이 더 좋거나, 최소한 비슷한 성능을 보여주어야 한다.
그러나 실험 결과는 그렇지 않았다.
따라서, 이것은 심층 신경망의 최적화 난이도에 관한 문제이다. 매우 Fundamental 한 문제인 것이다.
그저 overfitting 으로 치부할 그런 문제가 아니라는 것이다.
(사실 신경망 레이어가 Identity Function 을 근사하도록 하는 것은 쉬운 일이 아니다.
아마도, 추가된 레이어들은 Zero Function 에 가까울 것이다.
왜냐하면 애초에 깊은 신경망에 흐르는 가중치들은 "0" 에 가까워지려는 성질이 있기 때문이다.)
그렇다면, 최적화 난이도를 어떻게 낮출 수 있을까?
여기서는 5번째 단락과 6번째 단락을 동시에 요약, 설명하겠다.
Introduction 의 5 번째 단락
- 최적화 난이도를 낮추기 위한 방법 제시
- Residual Mapping
Introduction 의 6 번째 단락
- Shorcut Connections 설명
이쯤에서 한번 짚고 넘어가야할 내용이 있다.
바로 "함수의 정의" 이다.
"함수란, 정의역의 원소마다 공역의 원소가 오직 하나씩 대응되는 관계이다"
즉 특정한 input 에 대해서 output 을 일관되게 출력해주는 모든 것이 함수이다.
위의 그림을 보자. Input X 에 대해서 Output H(x) 를 출력해주는 함수 H 가 있다.
이 함수의 출력물인 H(x) = x 라면, 함수 H 는 Identity Function 이다.
input x = output H(x) 이기 때문이다.
어떤 레이어가 Identity Function 을 근사해내려면, H(x) = x 로 만들어주는 함수 H 를 근사해내어야 한다.
문제는 위에서 언급한 것처럼 신경망 레이어가 Identiy Function 을 근사해내는 것은 쉬운 일이 아니다.
그런데, 만약에 H 가 아니라 H(x) - x 를 학습할 수 있다면?
H(x) - x = F(x) 라고 둘 때, F(x) 를 학습할 수 있다면?
"이상" H(x) 이 아니라 "이상과 현실의 괴리" H(x)-x , 즉 Residual 을 학습하게 되는 것이다.
위의 그림을 참고해서 Figure 2 를 조금 변형해보자.
저 파란색 상자 속 함수 H 는 F(x) + x 를 나타낼 것이다.
한번 파란색 상자를 제거해보자.
함수 F 는 "Convolution 연산 - ReLu 활성화함수 연산 - Convolution 연산" 으로 이루어져있다.
함수 H 는 "Convolution 연산 - ReLu 활성화함수 연산 - Convolution 연산 - Input x 를 F(x) 에 더해주는 연산" 으로 이루어져 있다.
이 때, "Input x 를 F(x) 에 더해주는 연산"은 학습해야할 파라미터가 존재하지 않는, "명령" 이다.
Input x 를 더해주라는 "명령" 일 뿐이다.
이렇게 되면 3 가지 효과를 거둘 수 있다.
1. 파라미터를 업데이트 할 때, 함수 H 가 아니라 함수 F 를 학습시키게 된다.
H = F(x) + x 에서 + x 에는 학습시킬 파라미터가 없기 때문이다.
함수 F = H - x 이다.
추가적으로 학습해야할 파라미터 없이, 이상과 현실의 괴리인 Residual 을 학습하게 되는 것이다.
2. 함수 H 가 Identiy Function 을 근사해내는 것이 쉬워진다.
함수 H = F(x) + x 이므로, F(x) 가 0 이 되기만 하면 H = 0 + x = x 가 되어 H(x) = x 가 된다.
즉 F 를 Zero Function 으로 근사해내면, H 는 Identity Function 이 된다.
Zero Function 을 근사해내는 것은 비교적 쉬운데, 필요한 모든 파라미터가 0 이 되면 되기 때문이다.
(FCN 이든 CNN 이든 그러하다. 결국, 곱해서 더해주는 원리이기 때문에.)
또한 심층 신경망을 흐르는 가중치들은 0 에 가까워지려는 성질이 있기 때문에 Zero Function 은 근사해내기 쉽다.
3. 추가적으로 학습해야할 파라미터가 없으므로,
Residual Connections 가 적용되지 않은 "Plain Networks" 와
Residual Connections 가 적용된 "Residual Networks" 간에
공평한 비교를 할 수 있다.
Introduction 의 7 번째 ~ 9 번째 단락
ResNet 을 구성해 실험한 결과를 요약하고 있다.
- ResNet 을 사용하면 깊이를 극단적으로 늘리더라도, 최적화하기 쉬웠다.
- Plain net 은 깊이를 늘렸더니 오히려 Training error 증가했었지.
- Plain net 은 깊이를 늘렸더니 오히려 Training error 증가했었지.
-
깊이를 늘릴수록, 정확도가 증가했다.
-
보고된 신경망 중 역대 최고 성능 기록했다.
-
-
ImageNet 이든 CIFAR-10 이든 실험 결과 비슷했다.
-
특정 데이터셋에 국한된 결과가 아니다.
-
-
152 층의 엄청난 깊이를 갖는 ResNet 은 역대 최고 깊이이지만,
VGG net 보다도 학습할 파라미터 수 적었다.-
Shortcut Connections 덕분이다.
-
-
ResNet 으로 다음 대회에서 우승했다.
-
ImageNet detection in ILSVRC 2015
-
ImageNet localization in ILSVRC 2015
-
COCO detection in COCO 2015
-
COCO segmentation in COCO 2015
-
이제부터는 Figures 와 Tables 를 위주로 살펴보자.
Figure 3
Figure 3 는 실험에 사용한 Network Architectures 를 VGG-19 와 함께 한눈에 시각화하고 있다.
- Plain Network
- Feature map size 가 절반으로 줄었다면,
filters 의 수는 2배가 되어서 레이어 마다의 “time complexity” 를 보존해야함. (Inspired by VGG philosophy)
The time complexity of an algorithm is the number of basic operations, such as multiplications and summations, that the algorithm performs.
- Feature map size 가 절반으로 줄었다면,
- Residual Network = Plain Network + Shortcuts
- Dimension Staying Shortcuts : Identity Shortcuts
- Dimension Increasing Shortcuts
- stride 2 로 convolution 을 진행할 때는 Height 와 Width 는 축소하고,
Channel 수는 늘림 - 그런데, F(x) + x 연산을 수행하려면
F(x) 와 x 는 같은 dimensions 를 가져야함.
→ F(x) 와 x 의 차원이 같도록 조정해주어야한다 !
- 방법 1 : Zero padding shortcuts
- 방법 2 : Projection shortcuts
- stride 2 로 convolution 을 진행할 때는 Height 와 Width 는 축소하고,
Table 1
Table 1 은 ImageNet Dataset 에 대한 실험에 사용된 ResNet 모델들의 architecturs 를 layer 깊이에 따라 요약하고 있다.
conv2_x 레이어 진입 시 stride 2 로 convolution 을 진행하고, conv3_x 레이어 진입 시 stride 2 로 convolution 을 진행하고,
conv4_x 레이어와 conv5_x 레이어 진입시에도 마찬가지이다.
이는 Figure 3 의 34-layer residual 아키텍쳐를 함께 살펴보면 알 수 있다.
그러나 Table 1 을 자세히 보면 의아한 부분이 있다.
conv2_x 든 conv3_x 든 block 내에서 이루어지는 convolution 연산에서는 output size 가 유지되고 있다.
Pytorch 소스코드를 살펴보니, 예상한대로 convolution 레이어마다 적절한 횟수의 padding 이 이루어지고 있었다.
Table 1 에 padding 횟수 정보를 추가해 수정해보았다.
Table 2
Table 2 는 ImageNet 2012 Classification Dataset 학습 후의 Validation error 를 요약하고 있다.
- ImageNet 2012 Classification Dataset 요약
- 1000 개의 클래스 존재
- 128만 개의 Training set
- 5만 개의 Validation set
- 실험 결과
- Plain net 에서는 층이 깊어지니 오히려 에러 증가
- ResNet 에서는 층이 깊어지니 에러 감소
Figure 4 는 ImageNet 2012 Classification Dataset 학습 시 error 변화 추이를 시각화하고 있다.
- 논문의 저자는 Plain net 을 깊게 했을 때 error 가 증가하는 현상이 기울기 소실 때문은 아니라고 얘기한다.
- 기울기 소실 문제를 해결해 낸 기법들을 적용했다.
- 기울기 소실 때문이었다면, 학습 자체가 안 됐어야 한다.
- 그런데 Plain-34 도 경쟁력 있는 accuracy 를 갖고 있다.
- 즉, 학습이 되긴 되어서 어느 정도 성능은 나온다.
- 기울기 소실 문제를 해결해 낸 기법들을 적용했다.
위의 Table 2 와 Figure 4 의 결과를 요약해보면 다음과 같다.
- Degradation problem 을 Residual Learning 으로 해결할 수 있다.
- ResNet 은 깊이를 증가시켰을 때, Training error 개선됐고 Validation error 도 개선되었다.
- ResNet 은 깊이를 증가시켰을 때, Training error 개선됐고 Validation error 도 개선되었다.
- Deep 신경망에서 Plain Learning 대비 Residual Learning 의 효과를 증명
- Plain-34 에 비해 ResNet-34 는 error 가 3.5% 감소했다.
- Plain-34 에 비해 ResNet-34 는 error 가 3.5% 감소했다.
- ResNet 의 최적화 속도가 Plain net 보다 훨씬 빠르다.
- 신경망 깊지 않으면, Plain net 도 성능 좋다. (27.94 vs 27.88)
- 그래도 ResNet 써라. 훨씬 빨리 최적화되니까
Table 3 ~ 5
Shorcut Connections 를 연결해줄 때, Dimension (채널 수) 이 증가한다면
2 가지 방법을 사용해서 Dimension 을 일치시켜줬었다, (Figure 3 설명 참고)
- Zero padding shortcuts : 모든 값이 0 으로 이루어진 채널 추가
- 학습할 파라미터 없음
- 학습할 파라미터 없음
- Projection shortcuts : 1x1 convolution for doubling filter numbers
- 학습할 파라미터 존재
Table 3 는 Dimension Increasing Shortcuts 뿐만 아니라 Dimension Staying Shortcuts 에도 위 두 가지 방법을
섞어서 학습 후 Validation error 를 요약해 놓았다.
Table 3 의 중간 부분을 살펴보자.
Plain net 과 ResNet-34 A / B / C 를 비교해놓았다.
- Option A
- Dimension Increasing Shortcuts : Zero padding shortcuts 을 사용
- Dimension Staying Shortcuts : Identity shortcuts 사용
- → 모든 shortcuts 에 학습할 파라미터 없음.
- Option B
- Dimension Increasing Shortcuts : projection shortcuts 사용
- Dimension Staying Shortcuts : Identity shortcuts 사용
- → Dimension Increasing 될 때 학습할 파라미터 늘어남
- Option C
- Dimension Increasing Shortcuts : projection shortcuts 사용
- Dimension Staying Shortcuts : projection shortcuts 사용
- → 모든 Shortcuts 에서 학습할 파라미터 늘어남
Table 3 중간부분 결론을 요약해보면 다음과 같다.
- 어떤 옵션 쓰든, plain-34 보다 성능 개선되었다.
- B 옵션이 A 보단 결과가 좋았는데,
A 에서 zero padded 된 채널들에서 residual learning 이 이루어지지 않았기 때문일 것. - A/B/C 간의 차이가 미미하다. → Degradation problem 해결하는데 projection shortcuts 필수는 아니다.
- 나머지 실험들에선 성능 좋고, 가성비 좋은 옵션 B 썼다.
Table 3 아래부분을 살펴보자.
34 layers 보다 많은 레이어를 갖는 ResNet 들도 실험했다.
그런데, 사용하던 Building block 을 그대로 사용하려면 학습할 파라미터가 너무 많아졌다.
따라서, ResNet-50, ResNet-101, ResNet-152 에는 새로운 Building block 을 사용했다.
Figure 5 의 오른쪽 그림을 보면, "bottleneck" building block 이 나타나 있다.
bottleneck block 에서는 첫 번째 1x1 convolution 에 의해 채널 수가 줄어든다.
이후 3x3 convolution 을 거친다.
다시 1x1 convolution 을 진행하면서, 채널 수가 회복된다.
정말 Bottleneck building block 이 효율적인지 궁금해서 학습 파라미터 수를 비교해보았다.
확실히 빨간 박스의 building block 보다 파란 박스의 bottleneck building block 의 파라미터 수가 적어 연산이 효율적일 것 같다.
Table 3 아래부분 + Table 4 + Table 5 의 결론을 한번에 요악할 수 있다.
- Table 3 아래부분 결론
- ResNet 은 깊이를 "극단적으로 깊게" 해도 학습이 잘 이루어졌다.
- ResNet 은 깊이를 깊게할수록 error 가 개선되었다.
- Table 4 결론
- ResNet-34 만 가지고도, 역대 최고 single 모델들 다 이겼다.
- ResNet-152 는, single 모델만으로 역대 최고 Ensemble 모델들 다 이겼다.
- Table 5 결론
- 서로 다른 깊이의 ResNet 6개 통합해 ResNet Ensemble 만들었다.
- Top-5 error 3.57% 기록하면서 2015 ILSVRC 우승했다. (성능을 26% 개선했다.)
Table 6
ImageNet Dataset 뿐만 아니라 CIFAR-10 Dataset 에 대해서도 실험을 진행했다.
CIFAR-10 Dataset 에 대해서 저자들은 "간단한 아키텍처"를 의도적으로 사용해 실험했는데,
"훌륭한 결과를 내는 것보다는, 극도로 깊은 심층망의 움직임을 분석하는 데 초점을 두기 위해서" 였다고 한다.
CIFAR-10 Dataset 학습에 사용한 "간단한 아키텍쳐" 를 요약해둔 Figure 가 논문에 삽입되어 있다.
이 그림만 봐서는 잘 와닿지 않아서, 다음과 같이 그려보았다.
실험 결과는 다음과 같았다.
Table 6 결론
- Best Classification method 인 FitNet 과 Highway 를 ResNet 으로 크게 이겼다.
- 더 좋은 성능을 가졌음에도, 학습해야하는 파라미터 수는 훨씬 적었다.
Q. 그런데, Table 6 에는 data augmentation 이 수행되었다고 나타나 있다.
FitNet 이랑 Highway 도 data augmentation 해서 학습이 되었던 걸까?
→ 논문 확인 결과, 맞다. 그런데, augmentation 기법은 모델마다 조금씩 달랐다.
Figure 6
Figure 6 왼쪽을 살펴보자.
Figure 6 왼쪽 그림, Figure 4 왼쪽 그림, 그리고 기존의 논문을 통해 다음과 같은 결론을 도출해낼 수 있다.
"깊은 신경망의 optimization difficulty 는 FUNDAMENTAL 한 문제이다."
(overfitting 따위의 문제가 아니다.)
- Figure 6 왼쪽
- 깊은 Plain nets 는 증가된 깊이로부터 "suffer" 받으며, 깊어질수록 training error 가 높아진다.
- 깊은 Plain nets 는 증가된 깊이로부터 "suffer" 받으며, 깊어질수록 training error 가 높아진다.
- Figure 4 왼쪽
- ImageNet Dataset 에 대해서도, 깊이가 깊어질수록 training error 높아지는 관찰했었다.
- ImageNet Dataset 에 대해서도, 깊이가 깊어질수록 training error 높아지는 관찰했었다.
- MNIST 데이터셋에 대해서도 비슷한 현상 관찰한 논문이 보고된 바 있다.
- R. K. Srivastava, K. Greff, and J. Schmidhuber. Highway networks. arXiv:1505.00387, 2015.
Figure 6 가운데 그림, Figure 4 오른쪽 그림을 통해서 다음과 같은 결론을 도출해낼 수 있다.
"ResNet 은 optimization difficulty 극복했다. 깊이가 증가했을 때 Accuracy 높아졌다."
- Figure 6 가운데
- ResNet 은 깊이 증가할수록, Training error 와 Testing error 감소했다.
- Figure 4 오른쪽
- ImageNet dataset 에 대해서도 비슷한 현상 관찰했었다.
이후에는, n = 200 으로 두어 1202 개의 layers 를 갖는 ResNet 모델을 평가해보았다.
ResNet-1202 의 Test error 는 7.93% 로 ResNet-110 의 Test error 보다 높았다.
다만 저자들은 이것이 overfitting 때문일 것이라고 주장하고 있다.
Test error 가 높긴 하지만, ResNet-1202 의 Training error 는 ResNet-110 의 Training error 와 비슷하기 때문이다.
저자들은, CIFAR-10 같은 작은 데이터셋을 학습시키기에는 ResNet-1202 가 "불필요하게" 큰 모델일 것이라고 추측하고 있다.
또한 Dropout 같은 Regularization 기법 적용해서 후속 연구를 진행하겠다고 언급하고 있다.
Figure 7
Figure 7 은 layer index 에 따른 각 layer 별 output 들의 표준편차의 그래프이다.
저자들은 ResNet 이 residual, 즉 "이상과 현실의 괴리" 를 학습하기 때문에,
Plain net 보다 더 작은 layer responses 가 발생할 것이라고 예상했었다.
Figure 7 은 그러한 예상을 지지하고 있다.
Table 7, 8
Table 7 과 8 에서는 Image Classification task 가 아닌, Object Detection task 에 대해서 ResNet 을 실험했을 때의 결과를 보여준다.
ResNet 으로 다음과 같은 대회에서 우승했음을 밝히고 ResNet 의 우수성을 강조하며 논문을 마무리 하고 있다.
ResNet 으로 우승한 대회
- ImageNet detection in ILSVRC 2015
- ImageNet localization in ILSVRC 2015
- COCO detection in COCO 2015
- COCO segmentation in COCO 2015