(ICML 2019) EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks (요약)

EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks


Image classification 분야에서 매우 월등한 성능으로 큰 이목을 집중시킨 논문으로,

학습 및 실제 프로젝트 반영을 위해 주어진 데이터에 대한 학습에 오랜 시간 또는 자원이 요구되는 경우,  ConvNet의 성능향상을 위해 활용 가능한 논문이라 할 수 있을 것이다.


 

ABSTRACT

CNN은 한정된 자원 내에서 개발되어왔으며, 자원이 한도 내에서 더 높은 정확도를 위해서 그 크기를 키워가는 방향으로 발전되어왔다.

이 논문에서는, model scaling에 대해 더 명확히 밝혀내기 위해 연구하게 되며,  network의 depth, width, 그리고 resolution사이의 관계에 대한 균형을 맞춰야 더 나은 성능을 보인다는것을 체계적으로 밝혀낸다. 


저자 제안 

  • 'Compound coefficient' 
    • depth, width, resolution의 dimension들을 간단하면서도 높은 효율을 보이는 새로운 sacaling방법으로, MobileNet과 ResNet에 이 방법을 적용시켜봄으로써 효율성을 테스트한다.

  • EfficientNet 
    • 'Neural Architecture Search(NAS, 강화학습 기반으로 최적의 network를 찾는 방법)'를 사용하여 baseline network를 설계하였으며 이 baeline network를 scale up 한 가족 모델인 하였다. 
    • EfficientNet-B7 :  ImageNet dataset에 대해 84.4%(top-1 acc)/ 97.1%(top-5 acc)를 얻었을 정도로 매우 좋은 성능을 보이는데, 이는 최신 ConvNet보다 8.4배 작으며, 6.1배 빠른 성능이다.

INTRODUCTION

ConvNet의 성능향상에 자주 사용되는 방법으로

  • Scaling up 방법 : 
    • layer수를 늘림  
      • ResNet (He, 2016)의 , ResNet-18에서 ResNet-200으로 layer수를 늘림으로 인한 성능향상과 같이 이뤄짐 
        • 최근에는 GPipe(Huang, 2018)가 baseline model을 4배 scaling up하여 ImageNet에 대해 84.3%(top-1 acc)을 얻었으나, ConvNet의 효율적인 scaling up을 하는 과정에 대해서는 여전히 잘 알려진바가 없다. 
    • ConvNet의 depth를 깊게, 혹은 width를 넓게 만드는 방법 : 가장 널리 알려진 scaling up방법
    • 이미지의 resolution에 따라 모델의 사이즈를 변경시키는 방법 : 널리 알려지지는 않았지만 점점 유명해지고있는 방법
    • 이 중 두 가지 이상을 조정하는 방법도 고려될 수 있음
즉, depth, width, 그리고 image size 세가지중 하나의 dimension만을 조정하는 방식이 주로 사용되어온 것이다. 

저자 의도

  • compound scaling method
    • "ConvNet이 더욱 좋은 성능을 발휘하게 만드는 이론에 입각한 scale up 방법이 존재하는가?
    • network의 width, depth, resolution들 사이의 균형을 맞추는것은 성능향상에 있어서 매우 중요 하며, 이들간의 균형은 간단한 상수비로 구해질 수 있음
    • 이전의 conventional practice 들에서 사용되던 임의 조정방식들과는 다르게, 저자는 network width, depth, resolution등을 균등하게 scaling한다.




예를 들어, 2^N배 큰 모델을 디자인하고 싶다면, baseline network의 depth를 a^N, width를 b^N, image size를 c^N 배 하여 작은 grid search를 통해 위의 조건을 만족하는 a, b, c를 찾게된다. 아래의 Fig 는 compound scaling을 나타낸다.

직관적으로, compound scaling은 좋은 결과를 보일것이라고 예상할 수 있는데, input image가 커진다면 network가 더 넓은 영역을 수용할 수 있는 receptive field를 확보해야하며, 더욱 많은 channel을 통해 정제된 pattern을 추출해야하기 때문이다.

저자는 또한 이 논문에서 최초로 network의 width, depth, resolution 사이의 관계에 대해 정량적으로 분석하였다. 

Model scaling에 의한 성능향상은 baseline network에 매우 의존적이기 때문에, baseline network를 설정하는데에 있어서 neural architecture search(NAS)를 사용한다.


COMPOUND MODEL SCALING


model scaling이란, 

  • 최선의 architecture를 찾는것에 집중하는 여타 ConvNet 디자인 방법과는 다르게, 기존의 baseline network에 대해 length, width, resolution등을 확장시키는것을 말한다. 

design space를 좁히기 위해, 

  • 저자는 모든 레이어들이 균등하게 scaling 되도록 하였으며, 
  • 한정된 resource 내에서 최고의 accuracy를 갖도록 하는 optimization 문제를 다룬다. 

이를 식으로 나타내면 다음과 같다. F, L, H, W, C는 baseline network가 정해지면서 정해지며, w, d, r이 network 를 scaling하는데 사용되는 coefficient들이다.




가장 중요한 문제는, 

  • 최적의 d, w, r coefficient들은 서로 연관되어 있다는 것과 서로 다른 resource 제약조건에 놓여있다는 것인데, 

따라서 널리 사용되어온 ConvNet들은 다음의 dimension중 하나만 선택하여 scaling 해왔다.

  • 1. Depth (d) (layer를 깊게 가져가는것, ex. ResNet-100 -> ResNet-1000)
  • 2. Width (w) (# of channels를 많게 가져가는것)
  • 3. Resolution (r) (input image의 사이즈를 MxM -> r*Mxr*M의, 더 큰사이즈로 입력받는것)

위의 coefficient중 한가지를 키워 학습시키면 성능은 좋아지지만, 

그 향상에는 분명한 한계가 존재한다.


Compound scaling 이란?

고해상도의 이미지의 경우, network의 depth를 높여 큰 receptive field를 확보하는 것이 중요하다. 

이에 따라, 고해상도의 이미지로부터 더욱 정제된 feature를 얻기 위해 network의 width 또한 높여주어야 하는데, 

이와같은 이유 때문에 저자는 d, w, r coefficient중 하나의 coefficient만을 조정하는것이 아닌, scaling 균형을 맞추는 조정이 필요함을 주장한다.

아래의 실험 결과(Fig.3)는 depth와 resolution을 고정 하였을때, width의 변화에 따른 성능변화를 관찰할 수 있는 결과이다. 또한, network는 더욱 깊은 depth와 높은 resolution의 조건을 갖을때 더 높은 성능 향상이 있음을 관찰할 수 있다.



따라서, ConvNet scaling을 위해서는 d, w, r coefficient 의 균형을 맞추는것이 매우 중요 하다는것을 알 수 있다. 

이전에도 scaling에서의 균형을 맞추려는 다양한 시도들이 있어왔지만, 사소한 작업들이 많이 필요해왔기 때문에 실적용하는데 어려움이 있어왔다.

저자는 compound coefficient를 사용하여 network의 width, depth, resolution 을 균등하게 조정하는 compound scaling method 를 제안한다.



위의 식에서 파이는 얼마나 많은 resource를 사용할지에 대해 사용자가 정할 coefficient이며, 알파, 베타, 감마가 small grid search방법으로 찾게 될 변수들이다.

특히, Convolution operation의 FLOPS는 d, w^2, r^2 각각에 대해 비례하여 증감하는 성질을 갖고 있다. 

ConvNet의 FLOPS는 convolution operation이 지배적이므로,  ConvNet의 FLOPS는 (알파 * 베타^2 * 감마^2)^파이에 비례하여 증감한다는것을 알 수 있다. 

알파 * 베타^2 * 감마^2값를 2로 제한시켰으므로, 총 FLOPS는 대략 2^파이에 비례하여 증감한다.




EXPERIMENTS

아래 표는, 비슷한 Top-1, Top-5 accuracy를 보이는 기존의 ConvNet들을 묶어 EfficientNet과 비교한 것이다. 

모든 영역에서 일관되게 EfficientNet이 훨씬 적은 parameter수와 FLOPS를 보여주는것을 알 수 있다. (parameter수는 최대 8.4배 적고, FLOPS는 최대 16배 적은 결과이다.)


아래 결과는 Class Acitvation Map(CAM)을 network의 depth, width, resolution만 조정하여 설계하였을때와 compound scaling을 활용하여 depth, width, resolution 조정하는데에 균형
을 맞췄을때 CAM이 어떻게 관찰되는지에 대한 결과이다. 

compound scaling의 경우가 확실히 영상내에서 의미있는 부분에대해 feature map의 활성화가 잘 이루어지는것을 확인할 수 있다. 


아래 표는 위 그림에서 활용된 실험 network d, w, r 조건 별 FLOPS와 Top-1 Accuracy를 나타내는 표이다.

Compound scaling을 적용한 경우가 비슷한 FLOPS 임에도 더 좋은 성능을 보여줌을 알 수 있다