크크루쿠쿠

[논문 리뷰] EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks 본문

DeepLearning/논문 리뷰

[논문 리뷰] EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks

JH_KIM 2021. 8. 10. 01:48

논문 주소: https://arxiv.org/abs/1905.11946

 

EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks

Convolutional Neural Networks (ConvNets) are commonly developed at a fixed resource budget, and then scaled up for better accuracy if more resources are available. In this paper, we systematically study model scaling and identify that carefully balancing n

arxiv.org

 

Abstract

CNN 은 fixed resource budget 에서 개발한 뒤에 더 많은 resource를 사용할 경우 accuracy를 높일 수 있게 scaled up 된다.

이 논문에서는 구조적으로 더 좋은 성능을 내기위해 model scailing 하는것을 다루게 된다.

dimension of depth/ width/ resolution 을 scale 하는 새로운 방법을 제시 -> compound coefficient.

이러한 방법을 MobileNets와 ResNet에 적용시켜 효율적임을 보여준다.

더 나아가 NAS(Neural Architecture Search) 를 사용해 baseline network를 설계하였고 이를 scale up 하여 EfficientNets를 만들었다.

family model중 EfficientNet-B7 의 경우

ImageNet 에서 state-of-the-art 84.3% top-1 accuracy 를 보여줬고

기존 ConvNet에 비해 8.4x smaller and 6.1x faster 한 결과를 보여줬다.

Introduction

ConvNets를 scaling up 하는 방식은 accuracy를 높이는데 흔히들 쓰인다.

ex) ResNet-18 -> ResNet-200 (layer를 깊게 쌓아서), GPiple ( time 4x)

현재 많은 방법중에서 ConvNets 에서 scaling up 하는 많은 방법이 있지만 제대로 알려진 바는 없다.

대부분 방법은 depth나 width를 증가시키는 방법이고 최근 증가하는 방법으로는 image resolution을 사용하는 방법이다.

그러나 이 논문에서는 scaling up 하는 방법을 다시 생각해보게 된다. 특히 ConvNets의 acc를 높이는 특정한 방법이 있는지에 대한 질문이 핵심점이며, 놀랍게도 network width/depth/resolution의 balance가 성능에 매우 큰 영향을 미친다는 점이다.

그리고 그 balance는 contant ratio로 simply하게 구할 수 있다.

그러므로 논문에서는 기존의 임의로 scale을 조절하는 방식이 아닌 uniformly하게 조절해준다

만약 우리가 2^N 개의 큰 computational resources를 원한다면 

depth: a^N, width: b^N, image size: r^N 라 가정하고 a,b,r 를 small grid search를 통해 찾게된다.

Model Scaling -> (a)는 baseline model (b),(c),(d) 를 compound 한 것이 (e)

이러한 model scaling 성능은 baseline network에 크게 의존적이므로 NAS를 통해 baseline network를 설계한다 

Compound Model Scaling

 

1. Problem Formulation

Yi = Fi(Xi) 이고 Y-> ouput tensor X-> input tensor F -> operator

tensor shape는 <H,W,C>로 나타낸다

그렇게 ConvNet N을 식으로 표현하면

이와같이 나온다.

scaling 하는 식을 위의 식을 이용해 표현하자면

다음과 같다.

이 때 H,W,C,F,L 는 baseline에서 정의된 것이고

w,d,r은 width/ depth/ resolution 의 scaling 상수이다.

2. Scaling demensions

d 는 depth를 더 깊게 쌓는상수로 layer 수를 늘린다. -> 항상 깊게 쌓는다고 성능이 좋아지는것 X

예를들어 ResNet 같은 경우 ResNet-101 과 ResNet-1000이 비슷한 성능을 냄 ->vanishing gradient 문제

w는 small size 모델에서 width를 늘려주는것으로 channel 를 늘려주는것이다.

r은 이미지 사이즈를 늘리는 것

 

-> 한가지를 늘리는것은 성능 향상이 존재하지만 한계치가 명확함 

w d r을 변화시켰을때의 그래프로 증가할수록 성능 향상이 미미함

 

3. Compound Model Scaling

높은 resolution images 일 경우 depth를 높여서 larger receptive field가 필요하다. 또한  fine-grained한 pattern을 뽑기 위해서는 width를 늘릴 필요가 있다. 

d와 r을 고정한 후 width의 변화에 따른 성능변화

-> network는 더욱 깊은 depth와 높은 resolution의 조건을 갖을 때 더 높은 성능향상이 있음을 관찰할 수 있다.

 

그러므로 scaling을 위해서 d,w,r 변수들의 균형을 맞추는게 매우 critical함.

이전에도 balance를 맞추려는 시도가 있었지만 작업이 많이 필요하여 적용하기 힘들었음

-> compound coefficient를 사용해서 조정하는 compound scaling method를 제안

φ 는 얼마나 많은 resource가 사용가능한지에 대한 coefficient  이며 a,b,r 이 small grid search 방법으로 찾게될 변수들이다.

FLOPS의 경우 d, w^2, r^2 에 비례한다.

위의 공식에서 a*b^2*r*2 의 값을 2 이하로 제한시켰으므로 총 FLOPS는 2^φ 에 비례한다.

 

EfficientNet Architecture

 

baseline network의 layer operator는 변화시키지 않으므로 좋은 baseline network가 필요하다

NAS기법으로 구현한 mobile size baseline인 EfficientNet을 사용한다.

EfficientNet-B0 baseline

STEP 1: φ =1 로 고정후 small grid search로 a,b,r 값 찾음 -> B0 의 경우 a=1.2 b=1.1 r=1.5임

STEP 2: a,b,r을 고정 후 다른 파이값을 사용하여 스케일업함

-> 이 과정을 반복해서 B0 to B7 모델을 구현

 

Experiments

 

B0 to B7 까지 비슷한 성능을 내는 모델끼리 묶어서 비교한 표

Scaling Up MobileNets and ResNet

 

 

ImageNet Results for EfficientNet

ImageNet으로 학습된 모델을 전이학습시켜서 보여줌

 

위 그림은 이미지를 scaling한 모델들이 어떻게 fiture를 뽑아내는지 Class Activation Map으로 표현한 사진

-> compound 할수록 더 feature를 잘 뽑아냄

 

Conclusion

한정된 resources 에서 최대한의 효율로 scaling 하는 방법을 보았다.

또한 NAS의 경우 컴퓨팅 자원이 너무 많이 들어가 활요하기 힘든것으로 알고 있었는데, 이 논문을 통해서 전체를 NAS 하는것이 아닌 baseline network만 설계 함으로써 NAS 기술을 효과적으로 쓰는 방법에 대한 좋은 예시가 될 것 같다. 

Comments