EfficientNet

efficientnet은 CNN에서 모델 scaling을 확장하는 방법에 대한 논문입니다.

Class Activation Map

efficientnet은 모델 사이즈가 작아 Inference 속도가 빠른데도 높은 정확도를 가집니다.

기존에 Model Scaling 방법에는 3가지가 있습니다. (모델을 늘려서 성능을 끌어올리는 방법)

  • Width Scaling: 모델의 넓이를 늘리는 방법, Channel의 개수를 늘리는 방법
  • Depth Scaling: Layer의 개수를 늘리는 방법, 깊게 쌓는 방법
  • Resolution Scaling: Input resolution (Input 이미지의 해상도)를 높여서 넣는 방법

efficientnet은 위 세가지 방법을 각각 다 조절해가면서 실험한 모델입니다.

(a) 가 기준이 되는 Model 입니다.

(b) 는 width scaling Model

(c) 는 depth scaling Model

(d) 는 resolution scaling Model 입니다.

주목할 것은 efficientnet 논문에서 제시한 (e) compound scaling 입니다.

 

 

또한 세가지 scaling 기법 중에 어떤것을 조절해야 정확도가 오르는지에 대한 실험도 수행하였습니다.

이 사진을 보시면 Width(w), Depth(d), Resolution(r)의 수치중 두가지 값은 고정하고 한가지 값만 조절하여 변화량을 나타낸것입니다.

Width의 FLOPs (연산량)을 보면 3.8배 증가부터는 Accuracy가 미비하게 증가

Depth는 6.0배 증가부터 Accuracy가 미비하게 증가

Resolution은 2.5배만 증가해도 Accuracy 증가가 미비합니다.

이제 Width를 고정하고 Depth와 Resolution의 파라미터를 변경해보면

위와 같은 결과를 얻을 수 있다고 논문에 나옵니다.

위 그림을 보면 Depth보다 Resolution을 1.0 → 1.3으로 변경해주면 성능이 확 향상된다는걸 알 수 있습니다.

그리고 3가지 scaling factor를 동시에 고려하는 것이 좋다는 것을 간단하게 입증을 하였으므로

이번에는 3가지 factor의 최적의 비율을 찾아서 실제 모델에 적용을 하여 다른 모델들과 성능을 비교하는 과정을 설명드리겠습니다.

우선 본 논문에서 base model은 MnasNet과 거의 동일한 search space 하에서 AutoML을 통해 모델을 탐색하였고,

이 과정을 통해 찾은 작은 모델을 EfficientNet-B0라고 부르고 있습니다.

이제 이 모델을 기점으로 3가지 factor을 동시에 고려하는 Compound Scaling을 적용하여 실험을 수행합니다.

여기에서 width와 resolution에 제곱을 해준 이유는 depth는 2배 키워주면 FLOPs도 2배가 증가하지만

width와 resolution은 가로, 세로가 각각 증가하기 때문에 제곱을 해줍니다.

본 논문에서는 알파값은 1.2, 베타값은 1.1, 감마값은 1.15를 사용하였으며, 방금 구한 3개의 factor는 고정한뒤

파이를 키워주며 모델의 사이즈를 키워주고 있습니다.

처음단계에서 파이값은 1로 고정입니다.

1.2 x 1.1 x 1.15 = 1.518

 

기존 모델들과의 비교 표입니다.

표를 보면 성능은 비슷하면서 Parameter와 FLOPs가 굉장히 많이 절약할 수 있는 것을 알 수 있습니다.

 

efficientnet의 전체적인 구조입니다.


MBConv

 - SE_Block: SE block의 목적은 AvgPooling으로  1x1xc 컨볼루션을 통해 생성된 특성을 채널당 중요도를 고려해서 재보정하는 것입니다.

 

 - Inverted Residual: Inverted Residual에는 Residuals Block 내에서 Depthwise Separable (Depthwise Conv + Pointwise Conv)를 사용합니다.

 

 


Code

 

 

다음은 Mobilenet을...

 

아래는 태블릿 산 기념으로 작성한 정리글

EfficientNet 정리_220503_230735.pdf
7.71MB

 

 

 

 

출처:

 

 

'Deep Learning > Pytorch' 카테고리의 다른 글

30_AlexNet  (0) 2022.03.01
27_Pytorch_Custom_Dataset  (0) 2021.12.02
26_Pytorch_Inception-v2, v3 (미완)  (0) 2021.10.25
24_Pytorch_MobileNet - 연산량 number of operations  (0) 2021.10.12
22_Pytorch_RNN_Practice  (0) 2021.10.07

+ Recent posts