본문 바로가기
DL/basic

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

by hits_gold 2022. 1. 23.
반응형

이 논문을 읽기 전에 알면 좋겠다고 생각한 것(내가 몰랐던 것)

     1) NAS : Neural architecture search, 예를 들어 CNN모델의 경우 task와 데이터셋에 따라 최적의 모델 구조가 달라지는데, 이를 자동으로  task에 가장 최적인 네트워크 구조를 편리하고 빠르게 탐색하는 방법론을 연구하는 분야

 

     2) FLOPS : floating point operations per second ->초당 부동소수점연산(횟수) (모델의 효율성을 측정하는 용도인 듯)

 

 

 

Abstract

 지금의 CNN모델들은 자원(대표적으로 GPU성능인듯)이 허락하는 내에서 연산량을 키워왔다. 이 논문에서 심플하지만 효율적인 복합계수(compound coefficient)를 사용해 모델의 깊이/너비/해상도를 스케일링하는 새로운 방법을 제시한다.

 

Introduction

 

  지금까지 많은 CNN모델의 스케일링 시도가 있었고, 대표적으로 depth와 width에 대한 스케일링 방법이 있고, 이보다 적으나 최근 많이 쓰이는 추세인 해상도에 대한 스케일링이 있다. 

 

 

  '지금까지 정확도와 효율성을 높인 원칙적인 CNN모델의 스케일링 방법이 있었나?'라는 질문을 던지며 이 논문에서 깊이/너비/해상도(d, w, r)을 밸런스있게 스케일링하는 것이 효과적이라는 것을 입증한다.

 

 

기본적인 모델의 표현

d, w, r계수를 추가한 표현

 

d -> 모델의 깊이(F함수의 개수)를 조절할 계수

w -> 채널의 크기를 조절할 계수

r -> 해상도(data 2차원 단면 즉 이미지 단면의 크기)를 조절할 계수

 

기존의 d, w, r 스케일링 연구들

  -> 파라미터가 커질수록 정확도가 증가했지만 많이 커졌을 때 정확도가 떨어지거나 상승폭이 완만해짐

  -> 그리고 상관관계가 있을 수 있다는 관점이 고려되지 않았음

  -> 따라서 observation1으로 "d, w, r의 차원을 스케일링하는 것은 정확도를 높혔지만, 큰 모델에서는 감소함"

 

d, w, r의 상관관계 입증

 

w가 고정되어 있는 상태에서 나머지 계수들의 스케일링

 observation2

   -> '더 높은 정확도와 효율성을 위해서 d, w, r의 밸런스있는 스케일링이 중요하다'

 

 

Compound Scaling Method -> d, w, r의 복합적인 스케일링 방법 제시

 모델의 FLOPS는 d, w^2, r^2에 비례한다.

 왜냐? 각 계수가 두배로 증가할 때

  -> 깊이가 두 배로 증가하면 직관적으로 FLOPS가 두배로 증가한다

  -> 채널의 개수는 이전 층의 출력과 현재 층의 입력 두 부분에서 연산되어 FLOPS가 제곱된다

  -> 해상도는 이미지 이차원 단면 즉 가로X세로이므로 FLOPS가 제곱된다

 

따라서 d, w, r이 다 같이 변화할 때 FLOPS는

 

에 비례하게 된다. (파이를 안에 넣으면 d*w^2*r^2이 됨)

따라서 이 논문에서는 위 식의 괄호 안 식을 2로 제한하여 FLOPS가 2의 파이 제곱에 비례하게 만든다.

 

 

EfficientNet Architecture

 

  이 논문에서는 Flops와 accuracy를 다음과 같은 식으로 변환해 동시에 최적화 목표에 포함시킨다

 

여기서 m은 모델, T는 목표 Flops, w는 ACC와 FLOPS의 trade-off를 조절하는 하이퍼파라미터이다

 

EfficientNet - B0

 위 모델은 메인 블럭을 MBConv (Sandler et al., 2018; Tan et al., 2019)에서, 최적화옵션을 squeeze-and-excitation optimization (Hu et al., 2018)을 참고해 추가한 baseline이다.

 

compound scaling method 순서

  step1) 파이를 1로 고정하고(그럼 FLOPS는 두 배가 된다),  최적 α, β, γ를 grid search로 찾아낸다

          -> α=1.2, β=1.1, γ=1.15가 나옴

  step2) 찾은 α, β, γ를 고정시키고, 이제 파이를 변화시키며 EfficientNet-B1~7를 얻어낸다

 

 

 

Experiments

EfficientNet Performance Results on ImageNet

 각 단계별 EfficientNet와 accuracy가 비슷한 다른 모델들을 그룹화해놨는데, Params와 FLOPS의 ratio를 보면 EfficientNet의 효율성을 알 수 있다.

 

기존 CNN모델들을 single-dimension scaling한 것과 coumpound scaliling했을 때를 비교해봤을 때 coumpound scailing이 정확도가 더 향상되었다.

 

 

ImageNet으로 학습 후 transfer learning을 다른 데이터셋에 적용 결과 8개 중 5개 부분에서 정확도 향상이 있었고, 모든 부분에서 Param은 더 적었다.

 

EfficientNet-B0를 baseline으로 여러 scaling을 했을 때 Class Activation Map인데, compound scaling이 관련있는 region의 디테일을 더 잘 잡아내는 모습이다.

 

 

 

 

 

느낀 점

  모델의 scaling관점에서 정확도와 효율성을 더 올릴 수 있다는 것을 알 수 있었고, 이 논문 이후에 Model Scaling에 관한 다른 연구가 있었는지 궁금해졌다!

 

  + 기술적인 부분 외에 느낀 점 : 다른 분야의 어떤 문제에서도 마찬가지로 한정된 자원에서 효율성을 높이는 기술이 중요한 것 같다

 

반응형

'DL > basic' 카테고리의 다른 글

SPPNet  (3) 2024.01.04
GoogLeNet  (2) 2024.01.04
ResNet  (2) 2024.01.04
[논문리뷰] BERT: Pre-training of Deep Bidirectional Transformers forLanguage Understanding  (1) 2022.02.16
[논문리뷰] Attention is all you need  (0) 2022.02.15