[CV] Deep Residual Learning for Image Recognition (2015)

손소·2023년 6월 7일
0

논문읽기

목록 보기
5/5

논문 링크

Abstract

심층 신경망은 훈련시키기 더 어렵다. 저자들은 이전보다 훨씬 더 깊은 네트워크를 쉽게 훈련할 수 있도록 Residual 학습 프레임워크를 제시한다. 참조되지 않은 학습 대신 레이어의 input을 참조하여 잔차 함수를 학습하는 것으로 레이어를 재구성한다.

이 논문을 통해 저자들은 residual network가 최적화하기 쉽고, 상당히 증가된 깊이에서 정확도를 얻을 수 있음을 보여주는 포괄적인 경험적 증거를 제공한다.

ImageNet 데이터셋으로 VGGNet보다 9배 더 깊은 152개의 레이어를 사용했지만 여전히 낮은 복잡도를 가진다. residual 네트워크의 앙상블로 ImageNet 테스트 셋에서 3.57%의 error rate를 달성했고, ILSVRC 2015 classification 태스크에서 1위를 달성했다.

추가로 ILSVRC & COCO 2015 competition의 ImageNet detection, localization, COCO detection, segmentation 4개 분야에서도 1위를 달성하였다.

1. Introduction

AlexNet과 같은 깊은 컨볼루션 신경망은 image classification에 일련의 혁신을 가져왔다. 깊은 네트워크는 low/mid/high level의 feature와 classifier를 자연스럽게 통합하였고, feature의 레벨은 쌓아진 레이어 수(깊이)에 따라 풍부해질 수 있다.

(당시) 최근 연구에 따르면 네트워크의 깊이가 매우 중요하며, ImageNet에서 성능이 좋았던 구조도 16층에서 30층 깊이의 “매우 깊은” 네트워크였다. 또한 다른 visual recognition 태스크에서도 매우 깊은 모델의 이점을 크게 얻었다.

깊이의 중요성에 따라, 다음과 같은 질문이 생긴다.

“레이어를 깊이 쌓을수록 더 쉽게 학습할까?”

이 질문에 답하는 데는 두 가지 장애물이 있다.
1. Convergence Problem

학습 초기부터 수렴을 방해하는 악명 높은 vanishing/exploding gradient problem

이 문제는 수십 개의 레이어가 있는 네트워크가 역전파로 SGD에 대한 수렴을 시작할 수 있도록 한 normalized initialization과 intermediate normalization layers로 다룰 수 있다.

  1. Degradation Problem
    깊은 네트워크가 수렴이 가능해지고 나니, 네트워크 깊이가 증가할수록 정확도가 포화되고, 그 이후로 빠르게 하락하는 degradation problem이 발생했다.이 문제는 overfitting에 의해 발생되는 것이 아니며, 적절하게 깊은 모델에 더 많은 레이어를 추가하면 training error가 높아지며, 이는 저자들이 실험을 통해 확인하였다. 아래 Fig. 1을 보면 확인할 수 있다.

얕은 아키텍처와 더 많은 레이어를 추가하는 더 깊은 아키텍처를 고려해보자. 더 깊은 모델을 구축하는 솔루션이 존재한다 — 추가된 레이어들은 identity mapping이고, 다른 레이어들은 얕은 모델을 복사한 것이다. 이렇게 했을 때 더 깊은 모델이 더 얕은 모델보다 더 높은 training error를 생성하지 않아야 하는데, 실험을 통해 확인했을 때는 그렇지 않았다.

본 논문에서는 deep residual learning framework를 소개함으로써 degradation problem을 다룬다.

원하는 기본 mapping을 H(x)\mathcal{H}(\mathbf{x})라고 한다면, 비선형 레이어가 다른 mapping인 F(x):=H(x)x\mathcal{F}(\mathbf{x}) := \mathcal{H}(\mathbf{x}) - \mathbf{x}에 맞도록 한다. 그러면 기존 mapping은 F(x)+x\mathcal{F}(\mathbf{x}) + \mathbf{x}로 다시 캐스팅 된다.

저자들은 참조되지 않은 기존 mapping을 최적화하는 것보다 residual mapping을 최적화하는 것이 더 쉽다고 가설을 세운다.

F(x)+x\mathcal{F}(\mathbf{x}) + \mathbf{x}는 “shortcut connection”이 있는 feedforward 신경망에 의해 실현될 수 있다. shortcut connection은 하나 이상의 레이어를 건너뛴다.

논문의 경우, shortcut connection은 간단하게 identity mapping이고, 그 output은 stacked layer의 output에 추가된다.

identity shortcut은 파라미터나 계산 복잡도를 증가시키지 않는다.

전체 네트워크는 여전히 SGD 역전파로 end-to-end로 훈련될 수 있으며, 쉽게 구현할 수 있다.

degradation problem을 보이고, 제안한 방법을 평가하기 위해 ImageNet으로 주로 실험하였고, 실험을 통해 다음 두 가지를 보인다.

  1. 매우 깊은 residual network는 최적화하기 쉽지만, 단순하게 쌓은 plain 네트워크는 더 높은 training error를 보인다.
  2. 깊은 residual network는 크게 증가한 깊이에서 정확도 향상이 있고, 다른 이전 네트워크들보다 성능이 좋다.

CIFAR-10 데이터셋에 실험했을 때도 유사한 현상이 나타나는 것을 보아, 본 논문의 방법이 특정 데이터셋에만 효과가 나타나는 것이 아님을 보였다.

ImageNet classification dataset에서, 매우 깊은 residual 네트워크를 통해 훌륭한 결과를 얻었다. VGGNet보다 9배 더 깊은 152개의 레이어를 사용했지만 여전히 낮은 복잡도를 가진다. residual 네트워크의 앙상블로 ImageNet 테스트 셋에서 3.57%의 top-5 error rate를 달성했고, ILSVRC 2015 classification 태스크에서 1위를 달성했다. 추가로 ILSVRC & COCO 2015 competition의 ImageNet detection, localization, COCO detection, segmentation 4개 분야에서도 1위를 달성하였다.

이는 residual learning의 원리가 일반적이며, 다른 비전, 비전이 아닌 문제에서도 적용 가능할 것으로 기대한다.

2. Related Work

Residual Representations

  • vector quantization에 대해서, residual vector를 인코딩하는 것이 기존 vector를 인코딩하는 것보다 효과적이다.
  • 좋은 reformulation이나 preconditioning은 최적화를 간소화할 수 있다.

Shortcut Connections

  • “highway networks”는 gating function이 있는 shortcut connection을 다룬다. 여기서의 gate는 data-dependent하고 파라미터가 있다. (반면 본 논문의 방법론은 parameter-free하다.)
  • gated shortcut이 “닫히면”(=0에 가까워지면) highway networks의 레이어는 non-residual function이 된다. (반면 본 논문의 방법론은 항상 residual하며, shortcut이 닫힐 일이 없다.)
  • 또한 highway networks는 극도로 증가한 깊이로 정확도 향상을 입증하지 못했다.

3. Deep Residual Learning

3.1 Residual Learning

H(x)\mathcal{H}(\mathbf{x})를 몇 개의 stacked layer에 맞춰야 하는 기본 mapping으로 간주하고, x를 이러한 레이어 중 첫 번째 레이어에 대한 입력이라고 하자. 그래서 stacked layer가 H(x)\mathcal{H}(\mathbf{x})로 근사할 것이라고 예측하는 대신 이러한 레이어들이 잔차 함수 F(x):=H(x)x\mathcal{F}(\mathbf{x}) := \mathcal{H}(\mathbf{x}) - \mathbf{x}로 근사하도록 한다. 따라서 기존 함수는 F(x)+x\mathcal{F}(\mathbf{x}) + \mathbf{x}가 되며, 이 방식이 학습에 더 용이하다.

이러한 reformulation은 degradation problem에 대해 직관에 반하는 현상에 의해 동기부여 되었다. 만약 추가한 레이어가 identity mapping으로 구성될 수 있다면, 더 깊은 모델은 더 얕은 모델보다 training error가 크지 않아야 한다. degradation problem은 여러 비선형 레이어를 통해 identity mapping을 근사하는 데 어려움을 겪을 수 있음을 시사한다.

residual learning reformulation을 사용하면 identity mapping이 optimal하다면, 여러 비선형 레이어의 가중치를 0으로 설정하여 identity mapping에 근접할 수 있다.

실제 사례에서 identity mapping이 optimal할 가능성은 낮지만, 이 reformulation은 문제를 전제 조건으로 삼는 데 도움이 될 수 있다. optimal한 함수가 zero mapping보다 identity mapping에 더 가깝다면, 함수를 새로 학습하는 것보다 identity mapping을 참조하여 perturbation을 찾는 것이 더 쉬울 것이다.

저자들은 실험을 통해 학습된 잔차 함수가 일반적으로 작은 response를 갖는다는 것을 보여주며, 이는 identity mapping이 합리적인 전제 조건을 제공한다는 것을 시사한다.

3.2 Identity Mapping by Shortcuts

저자들은 모든 몇 개의 stacked layer마다 residual learning을 적용했다. building block은 위의 Fig. 2와 같으며, 이를 수식으로 나타내면 다음과 같다.

(1)        y=F(x,{Wi})+x(1)\;\;\;\;\mathbf{y} = \mathcal{F}(\mathbf{x}, \{W_i\})+ \mathbf{x}

x와 y는 각각 레이어의 input, output이다. 함수 F(x,{Wi})\mathcal{F}(\mathbf{x}, \{W_i\})는 학습될 residual mapping을 나타낸다.예를 들어 Fig. 2는 두 개의 레이어를 갖고 있고, F=W2σ(W1x)\mathcal{F} = W_2\sigma(W_1 \mathbf{x})이고, σ\sigma는 ReLU를 나타낸다. (bias는 단순화를 위해 생략됨)

F+x\mathcal{F}+ \mathbf{x}는 shortcut connection과 element-wise operation으로 수행된다. 더한 후에는 ReLU와 같은 second nonlinearity가 적용된다.

공식(1)의 shortcut connection은 파라미터나 계산 복잡성을 증가시키지 않는다. 이 점은 plain과 residual 네트워크를 비교할 때 굉장히 중요한데, 두 네트워크를 같은 수의 파라미터, 깊이, 넓이, 그리고 계산비용으로 공정하게 비교할 수 있기 때문이다.

공식(1) 에서는 x\mathbf{x}F\mathcal{F}의 차원이 무조건 같아야 한다. 그렇지 않은 경우(e.g. input과 output 채널을 바꾸는 경우), 차원이 일치하도록 shortcut connection으로 linear projection WsW_s을 수행할 수 있다.

(2)        y=F(x,{Wi})+Wsx(2)\;\;\;\;\mathbf{y} = \mathcal{F}(\mathbf{x}, \{W_i\})+ W_s\mathbf{x}

공식(1)에서도 WsW_s를 쓸 수 있지만, degradation problem을 다루기 위해 identity mapping이면 충분하다는 것과 더 경제적이라는 것을 실험으로 보여주기 위해 WsW_s는 차원을 맞춰줄 때만 사용한다.

잔차 함수 F\mathcal{F}의 형태는 flexible하다. 이 논문에서의 실험은 두세개의 레이어를 가진 함수 F\mathcal{F}를 사용하는데, 더 많은 레이어도 가능하다. 하지만 F\mathcal{F}가 오직 한 개의 레이어만 갖는다면, 공식(1)은 사용하는 데 이점이 없는 linear layer y=W1x+x\mathsf{y=W_1x+x}와 비슷해진다.

또한 위의 표기법은 단순화를 위해 fully connected layer에 대한 것이지만, convolution layer에도 적용할 수 있다. 함수 F(x,{Wi})\mathcal{F}(\mathbf{x}, \{W_i\})는 다수의 convolution layer를 나타낼 수 있다. element-wise addition은 채널별로 두 개의 feature map에서 수행된다.

3.3 Network Architectures

Plain Network

plain baseline은 VGG에서 주로 영감을 받았다. convolutional layer는 대부분 3x3 필터를 갖고, 두 가지의 간단한 design rule을 따른다:

  1. 동일한 output feature map 사이즈에 대해서 레이어는 동일한 수의 필터를 갖는다.
  2. 만약 feature map 사이즈가 반으로 줄면, 필터의 수는 두 배로 늘어난다. (레이어 당 시간 복잡도를 유지하기 위함)

stride 2를 가진 convolutional layer로 downsampling을 진행하며, 네트워크의 끝단에는 global average pooling과 1000개의 클래스로 분류하기 위한 softmax를 가진 fully connected layer가 온다.

주목할 점은 이 모델이 VGG보다 더 적은 수의 필터와 낮은 복잡도를 가진다는 것이다. 34-layer baseline은 3.6B FLOPS를 갖는데, 이는 VGG-19의 18%밖에 되지 않는다.(VGG-19는 19.6B FLOPS)

Residual Network

plain network에 shortcut connection을 삽입하여 residual 버전으로 전환하였다.

identity shortcut은 input과 output이 같은 차원일 때 직접 사용할 수 있다.

차원 수가 증가하면 두 가지 옵션을 고려한다.

  1. 증가하는 차원을 위한 zero padding과 함께 여전히 identity mapping을 수행한다. 이는 추가적인 파라미터를 요하지 않는다.
  2. 차원을 맞춰주기 위해 projection shortcut이 사용된다. (1x1 conv 사용)

두 옵션 모두 shortcut이 두 가지 size의 feature map을 가로지르는 경우, stride 2로 수행된다.

3.4 Implementation

ImageNet에 대한 implementation은 AlexNet과 VGG에서 수행한 방법을 따른다.

이미지의 크기는 스케일 증강을 위해 샘플링된 짧은 쪽으로 리사이즈 된다. 224x224 크기의 크롭이 이미지나 좌우 반전된 이미지에서 랜덤하게 샘플링되며, 픽셀당 평균(per-pixel mean)을 뺀다.

❓ 픽셀당 평균을 빼는 이유
per-pixel mean은 training dataset의 이미지 전체의 픽셀 값에 대한 평균이다.
centering을 해주는 효과가 있으며, 노이즈를 줄여준다.

AlexNet에서 사용한 standard color augmentation을 사용했다. (RGB 픽셀 값들에 PCA를 적용)

각 convolution과 activation 사이에 batch normalization을 적용했다.

가중치 초기화는 He initialization을 사용하였고, optimizer는 SGD, 배치 사이즈는 256을 사용했다. 그리고 learning rate는 0.1부터 시작해서 loss가 떨어지지 않는 경우 10씩 나누어 주었고, 모델은 60×10460 \times 10^4회까지 반복해서 훈련되었다. weight decay는 0.0001, momentum은 0.9를 사용하였으며 dropout은 사용하지 않았다.

Testing에서는 10-crop testing을 진행하였다. 최상의 결과를 위해 VGG에서처럼 fully convolutional form을 적용했고, 다수의 scale(짧은 쪽이 {224, 256, 384, 480, 640}이 되도록 resize된 이미지)에 대한 score를 평균냈다.

4. Experiments

4.1 ImageNet Classification

  • 1000개의 클래스를 가진 ImageNet 2012 Classification dataset으로 평가 진행
  • 1.28M개의 train set, 50k개의 valid set, 100k개의 test set
  • top-1, top-5 error 모두 측정



Plain Networks

  • 18-layer, 34-layer의 plain net 평가
  • Table 2.를 보면 34-layer plain net이 18-layer plain net보다 top-1 error가 높게 나온 것을 확인할 수 있다.
  • 이유를 알아내기 위해 Fig. 4처럼 시각화했고, degradation problem을 발견할 수 있었다.
  • 이러한 최적화의 어려움이 vanishing gradients에 의해 발생하는 것이 아니다. plain network가 forward propagate signal이 nonzero variance를 갖도록 하는 BN을 사용하여 훈련되기 때문이다. 또한 backward propagated gradients도 BN을 쓰면 이상이 없다. → forward, backward 시그널 모두 사라지지 않는다.

Residual Networks

  • 18-layer, 34-layer의 ResNet 평가
  • 3가지 관찰 포인트:
    1. 34-layer ResNet이 18-layer ResNet보다 top-1 error가 낮게 나온 것을 확인할 수 있다.
      • 34-layer ResNet의 training error가 낮게 나왔고, validation data에 일반화 할 수 있음을 확인
      • degradation problem을 잘 다룬 것을 확인할 수 있음
    2. plain net과 비교해서 34-layer ResNet이 top-1 error를 3.5% 낮춘 것을 확인할 수 있음
      • 이는 매우 깊은 시스템에서 residual learning의 유효성을 입증
    3. 18-layer plain/residual net을 비교했을 때, residual net이 더 빠르게 수렴
      • 빠른 수렴을 가능하게 함으로써 최적화가 쉽게끔 만든다.

Identity vs. Projection Shortcuts

  • parameter-free, identity shortcuts가 training에 도움이 된다는 것을 보임.

  • Table 3을 보면 3가지 옵션으로 비교를 진행: (A) 차원 증가에 대해 zero-padding shortcut 사용, 모든 shortcut은 parameter-free (B) 차원 증가에 대해 projection shortcut 사용, 다른 shortcut은 identity (C) 모든 shortcut이 projection
  • C > A > B; 하지만 차이가 매우 적으므로, projection shortcut이 degradation problem을 다루는 데 필수는 아니라는 것을 확인할 수 있음
  • 따라서 메모리/시간 복잡도와 모델 사이즈를 줄이기 위해 C는 사용하지 않기로 결정

Deeper Bottleneck Architectures

  • 제한된 training time 안에 더 깊은 네트워크를 훈련시키기 위해 bottleneck 디자인으로 블록을 변경
  • 각 residual function F\mathcal{F}에 대해, 2개 대신 3개의 레이어를 쌓는데, 1x1, 3x3, 1x1 convolution 레이어를 쌓는다. 1x1 레이어는 차원을 줄이고 다시 늘리기 위한 레이어이다.
  • Fig 5.의 두 디자인은 비슷한 time complexity를 갖게 된다.

50-layer ResNet

  • 34-layer ResNet의 2-layer block을 3-layer bottleneck block으로 변경하여 50-layer ResNet을 만들었다.
  • 차원 증가에 대해 option B를 사용하였다.

101-layer and 152-layer ResNets

  • 더 많은 3-layer block을 사용하여 구성
  • 깊이가 눈에 띄게 증가해도, 152-layer ResNet(11.3B FLOPS)이 VGG-16/19 nets(15.3/19.6B FLOPS)보다 더 낮은 복잡도를 가진다.
  • 50/101/152-layer ResNet이 34-layer보다 더 정확도가 높음에도 degradation problem은 관측되지 않았다.

Comparisons with State-of-the-art Methods

  • 전체적으로 기존 SOTA 모델보다 성능이 좋아진 것을 확인할 수 있다.
  • 다른 깊이의 6개 모델을 앙상블 하였고, 테스트셋에 대해 3.57%의 top-5 error를 받았으며, ILSVRC 2015에서 1등을 하였다.

이후 CIFAR-10, MS COCO(다른 vision task)에 대해서도 실험을 진행했고, 모두 상당히 좋은 결과를 낸 것을 확인할 수 있다. 시간 관계상 읽기만 하고 정리는 생략하도록 한다.

0개의 댓글