Paper Review/CNN

[논문리뷰] Deep Residual Learning for Image Recognition (ResNet)

syveany 2024. 11. 15. 23:25

ResNet 논문리뷰

이번 논문리뷰는 ResNet 논문이다 [1].

(K. He, X. Zhang, S. Ren, and J. Sun, "Deep Residual Learning for Image Recognition," Proc. IEEE Conf. on Computer Vision and Pattern Recognition (CVPR), Las Vegas, NV, USA, 2016, pp. 770-778.)
 
논문 제목은 Deep Residual Learning for Image Recognition이다. 
 
 

~ 목차 ~

0. Abstract
1. Introduction
2. 관련 연구
3. Deep Residual Learning
  3.1 Residual Learning
  3.2 Identity Mapping by Shortcuts
  3.3 구조
  3.4 구현
4. 실험 결과
  4.1 ImageNet 분류
  4.2 CIFAR-10과 그 분석
  4.3 PASCAL and MS COCO 객체 탐지

 
 

0. Abstract

 
  - Residual Learning를 사용해서 모델을 더 깊게 쌓았다.

   (ImageNet 데이터로는 152층, CIFAR-10 데이터로는 1000층)

 

  - Residual Learning의 장점 

    - 최적화하기가 쉽다.

    - 성능이 향상된다.

    - 복잡도가 줄어든다.

 
  - 모델 층을 더 쌓는 것만으로 성능을 높였다.

    그럼 층을 어떻게 늘렸을까? → Introduction에서 이어서 설명한다.
 

1. Introduction

 
  - ConvNet을 구축할 때 층을 많이 쌓는 것이 성능 향상에 굉장히 중요하다고 알려져있다.
 

  - 하지만 층을 많이 쌓기만 하면 성능이 무조건 향상될까? → 아니다!

    - Fig. 1에서 볼 수 있듯이, 20층 모델보다 56층 모델에서 train test error가 더 높다.
      이런 현상이 발생하는 이유는, 깊은 모델이 수렴하기 시작하면 Degradation Problem이 생기기 때문이다.

                                                                                                             ↳모델이 깊어질수록 정확도가 포화되고 급격하게 감소하는 문제
 

  - 논문에서는 이 문제를 해결하기 위해 Deep Residual Learning을 사용한다.

     Deep Residual Learning목표함수를 직접 학습하는 대신, 입출력 사이의 잔차(residual)를 학습하도록 한다!
     $H(x)$를 직접 최적화 하는 것보다 잔차 $F(x)(= H(x) - x)$를 최적화하는 게 훨씬 더 간단하기 때문이다.
     Fig. 2처럼 x가 shortcut connection을 통해서 잔차 F(x)에 더해진다.
 

2. 관련 연구

 
  - Residual 개념
   : VLAD, Fisher Vector (VLAD의 확률적 버전), Multigrid method, Hierarchical basis preconditioning
 
  - Shortcut Connection 개념
   : MLP의 linear layer, Auxiliary classifier에 직접 연결된 intermediate layer,
     Centering layer responses · gradients · propagated errors, Inception layer, Highway network
 

3. Deep Residual Learning

  3.1 Residual Learning

 
    - Introduction에서 말했듯이 목표함수를 $H(x)$라고 하고 입력을 $x$라고 할 때,
       $H(x)$를 직접 학습하는 것보다 잔차 $H(x)-x$를 학습하는 것이 더 쉽다.
      (e.g. 항등맵핑에서 nonlinear layer를 여러 개 사용하면 입력데이터가 과하게 복잡해지기 때문에
      degradation problem이 생길 수 있는데, residual learning을 사용하면 이 문제를 해결할 수 있다.
       가중치들을 모두 0으로 수렴시키기만 하면 되기 때문이다.)
 

    - 요지는, 잔차를 학습하는 것새로운 함수를 통으로 학습하는 것보다 훨씬 쉽다는 것이다.

 

  3.2 Identity Mapping by Shortcuts

 
    - Fig. 2 residual learning의 최종 식$y = \sigma (w_{2} \sigma (w_{1} x)+x)$로 나타낼 수 있다.
 
    - Plain과 residual를 서로 비교했을 때, residual 성능이 더 높다.
     (∵Shortcut connection이 파라미터 수나 복잡도를 늘리지 않기 때문)
 
    - $x$하고 $F(x)$의 차원이 다르면 $x$에 $W_{s}$를 곱해서 맞춰주면 된다.
 
    - 층의 개수는 상관 없다. 단지 층 1개인 경우에는 그냥 선형 레이어와 같기 때문에 의미가 없어질 뿐이다.
 
    - Fc layer뿐만 아니라 conv layer에도 사용 가능하다.
 

  3.3 구조

  ① Plain
      - VGG19를 바탕으로 2가지 규칙을 따랐다. (∵계산복잡도 유지)
        (i) 피쳐맵 사이즈가 같으면 필터 개수를 동일하게 했다.
        (ii) 피쳐맵 사이즈가 1/2배가 되면, 필터 개수를 2배로 늘렸다.

      Q1: ResNet-34 plain이 VGG-19보다 필터 개수가 적다고 하는데, ResNet 필터가 더 많지 않나?
         - Fig. 3에 있는 필터 개수를 다 더해보면 ResNet-34 plain이 7,616개고 VGG-19가 5,504개 인걸..
          흠.. Lower complexity는 이해가 가니 일단 넘어가겠다.

 
    ② Residual
      - Plain에 shortcut connection들을 더했다.
      - 차원이 같을 때 실선으로 표시했고, 차원이 증가할 때 점선으로 표시했다.
        - 차원이 증가할 때는 zero padding을 추가하거나 $W_{s}$를 곱하면 된다. 
 

  3.4 구현

 
    - 하이퍼 파라미터 설정은 AlexNet하고 VGGNet과 같다. (본문 참조)
      (He초기화 사용했고, $60x{10}^{4}$ iteration만큼 학습시켰다는 것 정도 보면 될듯)
 
    - Test도 VGG에서 사용한 방법과 같다.
     (10-crop(꼭짓점 4개, 중앙1개, 반전) 사용하고 fully convolutional 레이어 사용해서 average했음)
 

4. 실험 결과

 

  4.1 ImageNet Classification

 
    - 평가에는 ImageNet 2012 classification 데이터셋을 사용했다. (train 128만, val 5만, test 10만)

 

    4.1.1 Plain Networks

   
     - 18층 모델과 34층 모델을 비교한 결과, 34층 모델의 val error가 더 높았다.
       34층의 train error도 더 높은 것을 보고 이는 degradation problem 때문이라고 판단했다.

                                                                                   ∵Deep plain nets들의 수렴속도가 지수적으로 감소하기 때문에
                                                                                        train error도 급격하게 감소한다고 추측했다.
                                                                                        (이 이유는 논문에서도 일단 넘어가가고 있음)

 

    4.1.2 Residual Networks

     - 주요 관찰결과 3가지가 있다. 

 
      ① Shortcut connection을 추가한 18층과 34층 모델을 비교한 결과, 34층 모델의 val error가 더 낮았다.
        이는 앞선 plain network에서 발생한 degradation problem이 잘 해결되었다고 볼 수 있다.
 
      ② 똑같이 모델이 34층일 때, plain보다 ResNet에서 오류가 3.5% 낮았다.
 
      ③ 똑같이 모델이 18층일 때, plain보다 ResNet에서 수렴속도가 더 빠르다.  

Q2: Plain보다 ResNet에서 수렴속도가 더 빠른게 맞나?
    - Fig. 4를 아무리 봐도 둘 다 30iteration쯤에서 수렴하는 것 같은데.. 뭐지 (일단 넘어감)

 

    4.1.3 Identity vs. Projection Shortcuts

 
    - Table 3의 ResNet-34를 보면 A, B, C 사이의 성능 차이가 그렇게 크지 않다.
     → Projection shortcut($W_{s}$)가 degradation problem을 해결하는 데에 필수적이진 않다는 것을 알 수 있다.
 

    4.1.4 Deeper Bottleneck Architectures

 
    - Bottleneck구조차원을 줄였다가 다시 늘리는 구조로, 실용적이기 때문에 사용된다.
      여기서 Identity shortcut($x$)은 모델의 복잡성을 줄이는 데에 중요하다.
 
    - Fig. 5 왼쪽과 Fig. 5 오른쪽 모델을 계산해보면 시간복잡도가 비슷하게 나온다. (이미지 참조)
      근데 여기서 identity shortcut을 projection shortcut로 바뀌면 시간복잡도와 모델의 크기가 2배가 된다. 

Q3: 여기서 구체적으로 복잡도가 왜 2배가 되는지 잘 모르겠다.
   - 기존의 계산량 69,632HW에 65,536HW(=256x256x1x1)이 더해져서 약 2배가 된다고는 하는데 흠..

 
    - ResNet-34의 2-layer를 3-layer로 바꿔서 ResNet-50을 만들고,
      ResNet-50에 3-layer을 더 추가해서 ResNet-101ResNet-152를 만든다.

                                                                                                    ↳이렇게 만들어도 VGG19보다 FLOPs가 작음

 
    - ResNet-50, 101,152는 모두 ResNet-34보다 성능이 좋다. → Degradation problem이 해결되었다는 뜻
 

    4.1.5 Comparisons with SOTA Methods

 

     - ResNet-152는 top-5 4.49%로 싱글 모델 1위를 하고 6개 모델 앙상블은 top-5 3.57%로 앙상블 1위를 했다. 

       베이스라인 ResNet-34도 좋은 성능을 낸다.
 

 

  4.2 CIFAR-10과 그 분석

 

 


    - Plain과 Residual의 구조는 둘 다 오른쪽과 같다.

     (Residual에 identity shortcut를 사용했기 때문에

      Plain과 Residual의 모델 깊이, 너비, 파라미터 수가 같아서

      둘은 비교가 가능하다.)

 

 

 

 

    - Fig. 6의 왼쪽 그래프를 보면 Plain에서는 깊이가 깊어질수록 train error가 커진다. 최적화가 제대로 되지 못하기 때문이다.


    - Fig. 6의 중간 그래프를 보면 ResNet에서는 깊이가 싶어질수록 train error가 작아진다. 최적화 문제가 해결되었음을 알 수 있다.

 

    - Fig. 6의 오른쪽 그래프를 110층의 ResNet도 잘 수렴하고 있다. 심지어 파라미터 수도 엄청 적다.

 

 

 

    - Layer Responseconv layer의 출력이 BN을 통과한 직후의 값을 말한다. (ReLU 통과하기 전) 

 

    - Layer Response의 값의 std를 통해 각 층의 출력값들의 분포를 볼 수 있다.

       Fig. 7을 보면, Plain보다 ResNet의 std값이 작음을 알 수 있다 → ResNet의 잔차가 0에 가깝다는 뜻!

 

    - ResNet-56보다 ResNet-110에서 각각의 레이어의 layer response값이 작음을 알 수 있다.

      → 레이어가 많을 때는 여러 레이어를 통해서 신호가 조금씩 수렴된다는 뜻!

 

 

  4.3 PASCAL and MS COCO 객체 탐지

 

    - 객체 탐지에 Faster R-CNN이 있는 ResNet-101을 사용해서 VGG-16대비 성능을 6.0% 상승시(COCO 메트릭 기준)시켰다.
 
 
 
(Appendix는 생략)
 
 
 

참고문헌

[1] K. He, X. Zhang, S. Ren, and J. Sun, "Deep Residual Learning for Image Recognition," Proc. IEEE Conf. on Computer Vision and Pattern Recognition (CVPR), Las Vegas, NV, USA, 2016, pp. 770-778.