I'm Lim

[논문 정리] PyramidNet 본문

Classification

[논문 정리] PyramidNet

imlim 2022. 12. 4. 19:59

Paper

  Han, Dongyoon, Jiwhan Kim, and Junmo Kim. "Deep pyramidal residual networks." Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.

Abstract

  일반적으로 Image Classification 모델은 spatial dimension을 Pooling을 통해 줄임과 동시에 정보량을 유지하기 위해 feature map의 channel 수를 급격히 증가시키는 방향성을 띈다. PyramidNet에서는 기존의 방식처럼 급격히 channel 수를 키우는 것이 아니라 점차적으로 증가시켰고, 이것이 모델의 일반화 능력을 향상시키는 효과적인 방법임을 증명하였다.

Introduction

  기존의 ResNet에서는 down sampling이 되는 residual block을 제거하였을 때, 성능이 급격하게 줄었다고 한다. 그러나, stochastic depth 기법을 이용하여 학습된 ResNet에서는 down sampling이 되는 residual block을 제거해도 성능이 감소하지 않았다고 한다.

 

  이러한 결과에 영감을 받아 down sampling이 되는 residual block을 제거해도 성능이 감소하지 않는 또다른 방법을 고안하게 되었다고 한다. 이를 위해 feature map의 채널 수를 모델 전반에 걸쳐 증가하도록 하였다. 그 결과, 위에서 말한 block을 제거하여도 성능 감소가 크지 않았다고 한다. 이 모델을 PyramidNet이라고 한다.

 

Network Architecture

1. Feature Map Dimension Configuration

  기존의 모델들의 Channel 수 증가는 다음과 같이 진행된다. 

 

 

쉽게 설명하자면 $n(k)$는 residual block을 group으로 묶은 것인데, group의 기준은 down sampling이 되는 residual block이라고 생각하면 된다. 그렇다면, 위 수식은 "down sampling이 되는 block을 지날 때마다 채널의 수가 두배씩 커진다"라고 해석할 수 있다.

 

 

  Introduction에서도 말했다시피, PyramidNet은 채널의 수를 점차적으로 키워가는 모델이고, 수식은 다음과 같다.

 

 

여기서 $D_{k-1}$은 이전 group의 채널 수를 뜻하고, $\alpha$는 하이퍼 파라미터에 해당한다. $N = \Sigma_{n=2}^4 N_n$은 residual unit의 개수를 뜻하고, 상수다. 따라서, 위 식은 모델이 group을 지날 때마다 $\dfrac {\alpha}{N}$만큼 채널의 수를 키운다는 것을 의미한다. 

 

 

  위 방식은 채널의 수가 선형적으로 증가한다. 하지만, 아래와 같이 채널의 수를 결정하면 채널의 수가 기하급수적으로 커진다.

 

 

 

  위 두가지 방식의 채널 수 증가는 아래와 같은 그림으로 나타낼 수 있다.

 

2. Building block

  모델에 사용 될 Block을 결정하기 위해서 여러가지 방식을 사용해봤고, 아래 그림에서 (d)가 가장 좋았으므로 이것을 PyramidNet의 block으로 사용하였다. 또한, Identity mapping을 위해서 zero-padding을 사용했다.

 

Discussion

1. Effect of PyramidNet

  Introduction에서도 말했다시피, 기존의 ResNet은 down sampling이 되는 residual block을 제거 시, 성능이 크게 감소한다. 이것을 해결하는 또 다른 방법을 찾는 것이 PyramidNet의 동기였고, PyramidNet은 문제를 해결할 뿐만 아니라 성능도 개선시켰다.

 

  추가적으로, ResNet의 개선 모델 중 하나인 Pre-activation ResNet과의 비교를 하였다.

 

1 ) 아래 그림과 같이 PyramidNet의 test 성능이 pre-activation ResNet을 앞섰다. 이것은 PyramidNet의 일반화 능력이 더 우수함을 나타낸다.

 

 

2 ) 각 유닛들을 지워가면서 성능을 평가했다. down sampling이 되는 유닛을 지웠을 때 pre-activation ResNet의 성능이 다른 유닛을 제거 했을 때의 성능에 비해 상대적으로 크게 떨어졌다. 하지만, PyramidNet은 그러지 않았다.

 

3 ) 또한, 아무것도 제거 안했을 때의 성능과 각 유닛을 제거했을 때의 성능 차의 평균이 pre-activation ResNet이 더욱 높았다. 이는 PyramidNet의 앙상블 효과가 더욱 강하게 나타남을 말해준다.

 

 

2. Zero-padded Shortcut Connection

  PyramidNet은 block을 지날때마다 채널의 개수가 증가하므로, 단순히 identity mapping으로는 연산이 불가능하다. 그렇기에 zero-padded shortcut이나 projection shortcut을 사용해야 하는데, ResNet에서 이미 말했듯이 projection shortcut은 레이어가 깊을 때 최적화에 어려움을 야기한다. 따라서, zero-padded shortcut을 사용하였다.

 

3. A New Building Block

  본 내용은 pre-activation ResNet에서 이미 다뤘던 내용이다. 차이점은 첫 번째 ReLU를 제거했을 때, 성능이 더욱 개선된다는 것이다. 

 


Details of Learning

1. Training Settings ( CIFAR )

  - Optimizer : SGD with Nesterov momentum, dampening : 0, momentum : 0.9

 

  - Learning Rate : CIFAR-10의 경우는 0.1, CIFAR-100의 경우는 0.5로 초기화 / 각각 150, 225 에폭에서 Learning Rate에 0.1을 곱하였다.

 

  - Weight Initialization : msra 기법 사용

 

  - Weight decay : 0.0001

 

  - batch size : 128

 

  - Data Augmentation : Network In Network의 data augmentation기법을 사용

 

2. Training Settings ( CIFAR )

  - Optimizer : SGD with Nesterov momentum, dampening : 0, momentum : 0.9

 

  - Learning Rate : 0.05로 초기화 / 60, 90, 105 에폭에서 10으로 나눠줬다.

 

  - Weight Initialization : msra 기법 사용

 

  - Weight decay : 0.0001

 

  - batch size : 128

 

  - Data Augmentation : GoogLeNet 논문의 data augmentation을 사용

 

3. Performance Evaluation   

Left : CIFAR-10 / Right : CIFAR-100

  위 그림은 Additive PyramidNet과 Multiplicative PyramidNet을 비교한 것이다. 보이다시피, 레이어가 깊어지면 Additive PyraimidNet의 성능이 더욱 큰 격차로 개선된다. 또한, 두 방식 모두 레이어가 깊어질수록 성능이 개선 됨을 보였다.

 

  

위 그림은 CIFAR 데이터에 대한 기존 모델들과의 성능을 비교한 것이다. 보이다시피, PyramidNet이 SOTA를 달성하였다.

 

 

위 그림은 ImageNet 데이터에 대한 기존 모델들과의 성능을 비교한 것이다. 보이다시피, PyramidNet이 SOTA를 달성하였다.

Discussion

  PyramidNet은 기존의 모델들과 달리 채널 수를 점차적으로 늘려감으로써 성능을 개선시켰다.

 

'Classification' 카테고리의 다른 글

[논문 정리] SENet  (0) 2022.12.12
[논문 정리] ShuffleNet v1  (0) 2022.12.10
[논문 정리] PolyNet  (0) 2022.12.04
[논문 정리] ResNext  (0) 2022.11.28
[논문 정리] Xception  (0) 2022.11.27
Comments