rueki

EfficientNet : Rethinking Model Scaling for Convolutional Neural Networks 본문

paper review

EfficientNet : Rethinking Model Scaling for Convolutional Neural Networks

륵기 2021. 3. 11. 15:39
728x90
반응형

 Abstract

model scaling과 네트워크의 depth, width, resolution의 균형으로 모델 성능을 개선하겠다는 것이 목적이다. 

Compound coefficient를 통해서 depth, width, resolution의 모든 차원들을 scaling 하는 새로운 method를 제안한다.

EfficientNet-B7로 imageNet top-1 accuracy로 84.3 프로를 달성했다고 하며, 월등한 성능을 보인다고 한다.

 

1. Introduction

Scailing up을 통한 성능개선은 계속 이어져왔다. ResNet의 경우 18 layer에서 200 layer까지 확장을 했었다.

이전의 모델들과 비교를 한 결과를 봤을 때, EfficientNet의 파라메터 수가 다른 모델보다 적지만, Accuracy는 높은 것을 볼 수가 있다.

보통 3차원 depth, width, image size 중 하나만 sclae up 한 것이 보편적인 method 였는데, 차원을 임의로 확장하거나, 임의로 scale을 up하는 경우에 수동으로 튜닝을 해야하며, 정확도와 효율성에서 좋은 성능을 보이지 못한다고 한다.

본문의 메인 주제로는 ConvNet을 scaling up 하는 것이며 어떻게 효율적이고 높은 정확도의 네트워크로 scailing하는 방법을 찾느냐이다. 사용하는 method로는 고정된 scaling coefficient를 가지고 네트워크 width, depth, resolution을 확장하는 것이다.

 

이미지가 커질 수록, 네트워크는 더 세밀한 pattern을 잡아내기 위해 더 많은 layer와 channel을 필요로 하게 되는데, 

위의 이미지처럼 각 scaling마다 다른 coefficient를 사용해서 복합적인 스케일링을 하게되면 효율적이라고 한다.

이전의 연구에서는 네트워크 depth와 width가 성능에 큰 연관이 있다고 했으나, 본문에서는 네트워크의 width, depth, resolution 즉 3차원 사이의 관계를 정량화한 첫번째 개념이다.

 

 

2. Related Work

 

- ConvNet Accuracy

2012년 알렉스넷 등장 이후, ConvNet은 점점 커지면서 정확해졌다.  2018년 Gpipe는 557M 개의 파라메터를 가지고 ImageNet top-1 validation accuracy로 84.3프로를 이루어냈다. 그러나 이것이 imageNet을 위한 모델이였다면, 최근에 계속 transfer learning에도 적용할 수 있는 모델이 계속 등장하고 있다. 높은 정확도가 중요는 하지만, 하드웨어 메모리 부족으로 인해, 정확도 향상에 있어 효율적인 부분이 필요했다.

 

 

- ConvNet Efficiency

ConvNet이 over parameterized 될 때가 있어, 효율성을 위해 정확도를 감안하고 모델 크기를 줄이기도 하였다. Mobile phone 역시 효과적인 mobile-size의 ConvNet을 적용시켜야 했다. 그리하여 여러 과정을 거쳐서 Network의 width, depth, convolution kernel type, size 등을 조정함을 통해 직접 일일히 구성한 mobile ConvNet보다 뛰어난 효율성을 달성할 수 있었다. 그러나 모델이 큰 경우에는 cost가 많이 들기에 여기에까지 적용하는 방법은 아직은 명확하지 않다.

Introduction에서 언급했듯이, model efficiency를 높이기 위해서는 model scailing이 필요하다고 보여진다.

 

- Model Scaling

Model Scaling 방법에는 다양한 방법이 존재하는데, ResNet 경우에는 네트워크 층에 따른 Scale up, down을 할 수 있었으며, MobileNet과 WideResNet의 경우 Network width를 조정했다. 이미 이전에 network의 width, height는 중요하다고 했기에, 효과적으로 scale을 다룰 방법이 존재해야 했다. 그래서 본문에서는 ConvNet의 3차원 요소에 대한 확장을 중점으로 본다.

 

 

3. Compound Model Scaling

 

3.1. Problem Formulation

$Y_{i} = F_{i}(X_{i})$ 를 ConvNet function으로 정의했을 때, X와 Y는 input과 output이 될 것이다. 그리고 각 shape는 $H_{i}, W_{i},C_{i}$ (Spatial dimension, channel dimension)의 형태를 가질 것이다. 

 

$F_{i}^L{i}$ 는 $F_{i}$는 $L_{i}$ 번 i번째 stage에서 반복된 layer 를 나타낸다.

보통의 convNet의 경우에는 최고의 layer 구조 F를 찾는 것이 목적인데, 모델 Scaling은  네트워크 길이와 너비 $L_{i}, C_{i}$ 그리고 해상도 $H_{i}, W_{i}$ 를 확장하려고 한다. 대신 이미 구성된 네트워크에 대해서는 수정하지 않는다.

본문에서의 제안은 모든 레이어가 일정한 비율로 균일하게 scaling 되게끔 제한을 하는건데, 자원이 제한될 때 모델 정확도를 최대화하는 것이 목적인만큼 이는 최적화 문제로 가게 된다.

$d, w, r$ 은 network width, depth, resolution의 scaling coefficients이다.

 

 

3.2. Scaling Dimensions

최적의 $d, w, r$ 는 서로 의존하는 값이고, 서로 다른 제약 조건에서 값이 변경되는데, 이는 주된 문제이다. 이전에는 이를 해결하기 위해 이 값들 중에서 하나를 확장하곤 했다.

 

- Depth(d)

대부분 ConvNet에서 scaling 할 때 depth를 많이 다룬다. 깊어질수록 Convnet은 더 많고 복합적인 feature들을 capture 할 수 있으나, 그러나 깊어질수록 Vanishing Gradient문제가 있어서 훈련하기 어렵다. 배치정규화와 skip connection 등을 통해서 개선은 되었으나, very deep network에서 정확도가 줄어드는 문제가 있다. 

 

- Width(w)

작은 사이즈의 모델에서 주로 사용되며, wider network에서는 fine-grainde feature를 잡아내며, 훈련하기 더 쉬워진다.

그러나 극도로 넓어진 shallow networks에는 high level feature를 잡아내기 어렵다. 위에서 맨 왼쪽의 정확도 표를 보면, 넓어질수록 급격하게 정확도가 saturate 되는 현상을 볼 수가 있다.

 

- Resolution(r)

이미지가 고해상도일수록, fine-grained pattern들을 많이 잡아내는데, 이미지 해상도가 높을 수록 정확도도 높아지는 것을 볼 수가 있다. 높은 해상도가 정확도를 높여주는 요인이라 하지만, 매우 높은 해상도에서는 정확도 얻기가 어렵다고 한다.

 

observation 1

결론적으로 네트워크의 모든 차원을 확장하면 정확도는 향상되지만, 큰 모델의 경우에는 정확도가 감소된다고 한다.

 

 

3.3. Compound Scaling

고해상도 이미지를 위해서, 네트워크 depth를 늘려야한다. 이에 맞게 network width 역시 늘려야한다. 여기서 나온 새로운 idea로 단일 확장 스케일링보다는, 서로 다른 scaling dimension들을 균형 맞추는 것이다.

 

위에서처럼 서로 다른 depth와 resolution 계수를 가질 때, width scaling을 비교하는데, 파란선에서 처럼 아무 변화를 안주었을때, 정확도가 빠르게 saturate 되는 것을 볼 수가 있다. 같은 FLOPS cost를 가지고 있을 때 계수가 변화할수록 정확도가 개선되는 것을 볼 수가 있다.

 

observation 2

더 나은 정확도와 효율성을 얻기 위해서는, 네트워크의 모든 차원의 균형을 맞추는 것이 중요하다.

 

 

본문에서는 새로운 복합적 스케일링 method를 제안하는데, 수식은 아래와 같으며 compound coefficient φ를 사용한다.

φ는 얼마나 더 많은 리소스를 사용할 수 있는지 제어할 수 있는 사용자 지정계수이며, model scaling을 위해, 알파, 베타, 감마 값은 각각 네트워크의 폭, 깊이, 해상도에 extra resource를 할당하는 방법을 지정한다. 

 

 

 

4. EfficientNet Architecture

model scaling이 기존 network의 layer operators를 바꾸지 않기 때문에, 좋은 basline network를 가지는 것이 중요하다고 한다. Scaling method의 효율성을 더 잘 나타내기 위해서, EfficientNet이라는 mobile-size의 baseline 모델을 제시한다. 구조는 multi-objective neural architecture를 이용해서 accuracy와 FLOPS를 모두 optimizing 한다.

 

*FLOPS

플롭스(FLOPS, FLoating point Operations Per Second)는 컴퓨터의 성능을 수치로 나타낼 때 주로 사용되는 단위이다. 초당 부동소수점 연산이라는 의미로 컴퓨터가 1초동안 수행할 수 있는 부동소수점 연산의 횟수를 기준으로 삼는다.

- 위키백과

 

 

optimization goal

T : target FLOPS, w = - 0.07 (a hyperparameter for controlling the trade-off between accuracy and FLOPS)

 

FLOPS을 최적화 하는 이유

: 특정 하드웨어 장치를 대상으로 하는 것이 아니기 때문

 

 

EfficientNet-B0 network

EfficientNet 을 구성하는 메인 구조는 Moile inverted bottleneck Convolution, MBConv이다.

Compound scaling method는 아래의 두 단계와 같다.

 

step 1

φ 값을 처음에 1로 고정하고, grid search를 통해서 알파, 베타 ,감마 값을 얻어낸다. EfficientNet-B0에서 최적의 값은 

알파 : 1.2, 베타 : 1.1, 감마 : 1.15이다.

 

step 2

B1에서 B7까지 다양한 φ값을 사용함을 통해서 baseline network를 scale up 한다.

 

위의 두 step을 통해서 small baseline network에서 한번의 search만 하고, 각각의 다른 모델에 same scaling coefficient를 적용하는 것이 문제를 해결하기 위한 방법이라고 한다.

 

 

5. Experiment

기존의 Convnet과 EfficientNet간의 scaling method를 비교한다.

 

5.1. Scaling Up MobileNets and ResNet

단일 dimension에 대해서 scaling 한 것과 efficientNet에서 compound scaling한 것을 비교하면 efficientNet이 성능이 더 잘나오는 것을 볼 수가 있다.

 

5.2. ImageNet Results for EfficientNet

RMSProp optimizer, decay 0.9, momentum 0.9, batch norm monetum 0.99, weight decay 1e-5, learning rate 0.256

SiLu activation 사용, dropout ratio는 B0에서 0.2 사용해서부터 B7에서는 0.5까지 사용한다.

 

EfficientNet은 일반적으로 다른 ConvNet보다 훨씬 적은 매개변수와 FLOPS를 사용한다. 이를 통해서 구조적인 면이나 scaling하는 면에 있어서, 훈련하는 면에 있어서 더 좋은 결과를 얻을 수 있다.

EfficientNet의 장점이라 하면 결국에, 모델 구조가 작은 것과 계산 cost가 저렴하다는 것이다.

 

 

5.3. Transfer Learning Results for EfficientNet

Transfer learning을 테스트하기 위해서 다양한 데이터 셋에서 모델들을 실험 및 비교를 했을 때, EfficientNet이 파라메터 수는 현저히 적은 반면에 정확도는 비슷하거나 더 좋은 결과를 보여주고 있다.

 

 

6. Discussion

EfficientNet-B0 baseline network에서 compound scale을 했을 때 성능이 제일 잘 나온 것을 볼 수가 있다.

아래의 Figure7을 보면 compound scaling method가 왜 더 잘 나오는지에 대한 activation map 결과를 알 수 있다.

 

7. Conclusion

 

728x90
반응형
Comments