본문 바로가기
Paper review

[Paper review] EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(EfficientNet, 2019)

by Yonghip 2022. 8. 4.

기존에 DenseNet, MobileNet과 같이 모델의 성능을 올리는 동시에 연산량까지 감소시키는 논문에 관하여 리뷰해왔으며 이번에 리뷰할 EfficientNet은 기존의 연산을 최적화시킨 Convolution Network들을 하나로 모았다고도 볼 수 있는 논문이다.

 기존의 ConvNet은 채널 수, 깊이, 해상도 등을 Scaling하며 성능을 증가시켰으니 EfficientNet은 이 3가지를 균형있게 Scaling하며 Sota를 달성하였다.

 

Introduction

위에서 언급한대로 기존에는 모델 성능 향상을 위하여 보통 세가지 방식을 사용하였다.

  • Depth - ResNet(Skip-connection을 이용하여 더 깊은 층을 쌓은 구조)
  • Width - WideResNet(기존 ResNet의 층 수를 줄이고 채널 수를 높인 구조)
  • Resolution - GPipe(하드웨어 병렬와 기술을 통한 학습 속도 개선을 이용하여 더 큰 이미지를 학습)

보통 위에서 언급한 모델의 세가지 구성요소 중 하나만을 Scaling하여 성능을 끌어올림. 기존의 성능기반의 검증 방식으로 두가지 혹은 세가지 이상을 동시에 Scaling하기에는 시간이 오래 걸리며 이에 대한 설명이 불가능하다. 하지만 저자는 이 세가지 요소를 동시에 Scaling하는 Compound scaling method를 제안하였다.

 

(e)의 그림을 통해 기존의 Scaling 방식 3가지를 적절한 비율로 Scaling했다는 것을 확인할 수 있다.

 

하지만 이러한 Compound scaling이 정말로 기존의 Scaling 방식보다 좋을까?

세가지 파라미터간의 관계성을 고려해보면 당연하다고도 볼 수 있다. Resolution이 커지면 네트워크는 이를 이해하기 위하여 더 큰 수용장(Depth)과 더 많은 채널(Width)를 필요로 한다. 따라서 Compound Scaling이 기존처럼 한가지 파라미터를 튜닝하며 네트워크를 키우는 방식보다 효율적일 것이라 예상할 수 있다.

 

Prior work and difference

기존의 연구는 ConvNet을 더욱 크게 만들어 정확도를 올리는 식으로 발전해왔다.

 

  GoogleNet SENet GPipe
게재연도 2014 2017 2018
정확도 74.8% 82.7% 84.3%
파라미터  6.8M 145M 557M

ImageNet대회 SOTA model들의 top1 Accuracy와 파라미터

 

 모델의 사이즈가 커지며 모델의 효율성을 중요시하는 논문 역시 등장했으나 이러한 모델들은 효율적이지만 큰 모델에 적용하기는 어려웠다. 따라서 저자는 큰 모델을 효율적으로 학습시키기 위하여 모델 스케일링을 사용하였다. 

 모델 스케일링은 위에서 언급한것과 같이 보통 세가지 요소(Depth, Width, Resolution)를 증가시켜 성능을 높이는 방식이다.

 

Compound Model Scaling

저자는 기존의 하나 혹은 두가지 요소만 Scaling하는 방식이 아닌 Depth, Width, Resolution을 동시에 Scaling하는 새로운 스케일링 기법을 제안하였다.

 

위의 공식에서 

  • F = Convolution 연산자
  • L = 한 모듈내에서 Convolution 반복 횟수
  • <H, W, C> = 입력 텐서의 높이, 넓이, 채널 수
  • <d, w, r> = 모델을 스케일링하기 위한 계수들이며 각각 (모델의 깊이, 입력 채널 수, 입력 해상도)를 증가시킨다.

즉 제한된 자원 내에서 d, w, r을 최대한 증가시킨다는 의미이다.

 

위의 사진은 EfficientNetB0의 d, w, r을 Scaling한 결과이다. d, w, r을 Scaling하면 모델의 성능은 계속해서 좋아진다. 하지만 연산량은 정확도는 80%를 도달한 이 후 거의 증가하지 않는것을 확인할 수 있다. 즉 Scaling을 통해서 큰 모델을 학습시키는것은 비효율적이다.

 

따라서 저자는 세개의 파라미터를 한가지 계수를 통하여 동시에 스케일링하는 아래와 같은 공식을 제안했다.

모델의 연산량은 d * w^2 * r^2 이므로 저자는 φ를 연산량이 두배에 가깝게 증가하도록 조절하였다. 즉 모델의 연산량은 2^φ에 가깝다.

 

Architecture and Performance

 저자가 제안한 모델 스케일링은 모델의 연산 자체에는 아무런 영향을 주지 못하므로 베이스가 되는 좋은 네트워크를 찾는것 역시 중요했다. 모델의 초기 생성을 위하여 NasNet에서 제안한 neural architecture search 방식을 사용하여 연산량과 정확도를 최적화하였다.

또한 추가적으로 기존 SOTA모델의 다양한 학습기법을 적용하였다. Mobinet2에서 제안한 mobilenet inverted bottlececk과 SENet의 squeeze-and-excitation optimization을 사용하였다. 

 

Bottleneck구조
Inverted bottleneck 구조

 

Inverted bottleneck이란 CNN에서 주로 사용하는 1x1conv를 이용한 정보 압축을 통해 연산량을 감소시키턴 Bottleneck구조를 반대로 적용한 구조이다. 위의 그림과 같이 작은 채널에 정보를 충분히 압축되었다는 가정하에 정보량을 유지하며 Convolution방식이다.

 

이렇게 생성된 Baseline network인 EfficientNet-B0의 구조는 아래와 같다.

 

 

그리고 EfficientNet-B0에서 적절한 α * β^2 * γ^2가 두배의 자원량을 요구하는 범위에서 α, β, γ를 그리드 서치로 찾아낸다음 Scaling하며 EfficientNet-B1 ~ B7을 생성하였다. 

 

 

EfficientNet과 기존 Scaling모델들의 ImageNet에 대한 성능을 비교하며 EfficientNet의 효율성을 검증하였다.

 

또한 같은 baseline을 사용한 네트워크를 기존의 Scaling방식과 Compound Scaling의 성능을 비교하여 EfficientNet의 성능 뿐만 아니라 compound scaling method의 효율성을 검증하였다. 

논문에서는 추가적으로 ImageNet을 사용하여 훈련시킨 네트워크를 기반으로 전이학습한 결과 역시 뛰어남을 강조하였다.

 

 

Insights

이미지의 해상도를 Scaling하면 그에 따른 모델 크기 역시 증가해야한다는 간단한 insight로 기존의 모든 Scaling 모델을 압도하는 효율성을 보여 준 논문이라고 생각한다.

AutoML, Inverted Bottleneck, Autoaugmentation등 기존 SOTA 모델의 다양한 기법을 통해 모델의 성능을 증가시켰다.

특히 기존의 모델에도 같은 Scaling 방식을 적용하여 성능 증가가 가능하다는 점을 보아 활용가능성이 무궁무진하다고 생각한다.

 

 

EfficientNet논문링크: https://arxiv.org/abs/1905.11946

MoblieNetV2논문링크: https://arxiv.org/abs/1801.04381v4