본문 바로가기

Machine Learning/논문정리

EfficientNet 논문읽기: Rethinking Model Scaling for Convolutional Neural Networks

 

 

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

 

-IDEA-

기존 Convolutional Neural Networks는 한정된 리소스 양으로 deep network를 구성하며 정확도 향상을 기대해왔다. 하지만, 너무 깊은 network의 구성은 학습과정에서 역전파가 0으로 수렴하는 등의 문제를 일으키며 깊은 구조에서의 network가 무조건 정확도 향상을 보여주지 않았다. 따라서 본 논문에서는 network의 깊이(depth), 넓이(width), 입력 이미지 해상도(resolution)을 일정한 상수비(constant ratio)로 조정하며 network의 규모를 적절히 scaling하여 정확도 향상 및 경량화를 이뤄내었다.

 

-목차-

Abstract

1.Introduction

2.Related Work

3.Compound Model Scaling

4.EfficientNet Architecture

5.Experiments

6.Discussion

7.Conclusion

 

MobileNet

EfficientNet을 읽기에 앞서, EfficientNet의 구조에 MBConv가 사용된 것을 보았다. 이는 MobileNet의 Mobile inverted bottleneck convoluion을 뜻하며, 본 논문을 읽기위해 아래의 내용을 정리하였다.

 

모바일넷은 모델의 경량화에 초점을 두며, 파라미터를 도입하여 속도(latency)와 정확도(accuracy)에 균형을 조정하였다.

이때, Depthwise Separable Convolution을 이용하여 파라미터(FLOPS)를 줄일 수 있었다.

 

Depthwise Separable Convolution

Depthwise Conv : 각 채널(ex: R, G, B)을 분리하여 각 채널마다 3x3 커널을 적용하여 각 채널마다 하나의 feature map이 생성된다. 즉 Depthwise conv를 지난 후 출력의 채널은 입력의 채널과 동일하다.

Pointwise Conv : W x H x C의 feature map을 1x1 커널을 통해 채널 방향으로 Convolution을 진행한다. 이를 통해 feature map의 채널 수를 조정할 수 있고, cross-channel correlation(채널간 상관관계)를 학습할 수 있다.

 

위 그림의 좌측은 일반적은 Conv Layer를 나타내고, 우측은 Depthwise Separable Conv Layer를 나타낸다. 

우선 Resnet에서 사용되었던 Residual Blcok을 생각해보자.

[ResNet]

위 그림을 보면 하나의 Conv Layer 내에서 1x1 Conv를 통해 feature map의 채널을 감소시킨 후 3x3 conv를 통해 spatial feature를 학습한 후 다시 1x1 conv를 통해 채널을 확장시킨다. 

 그러나, 모바일넷에서 소개하는 MBConv는 위 ResNet과는 반대로 연산을 진행한다.

[https://www.researchgate.net/figure/Depthwise-separable-convolutions_fig1_358585116]

입력된 feature map에 대해 Depthwise 3x3 Conv를 진행하고, Pointwise 1x1 Conv를 통해 채널을 줄인다.

즉, spatial feature을 학습할 수 있는 3x3 Conv는 더 많은 채널 수를 입력받아 더 풍부한 특징 학습이 가능할 것이다. 또한, 위와 같은 구조를 통해 연산량 및 메모리 사용량을 줄일 수 있다.

 

 

Abstract

기존 CNN은 고정된 리소스 할당량을 갖고있다. 또한, 학습 정확도를 높이기위해 네트워크를 더욱 깊고, 넓게 형성하고 있다. 따라서, 본 논문에서는 depth, width, resolution을 상수비 φ를 통해 balancing하여 성능 향상 시킨다.

 

1. Introduction

  •  ConvNet의 accuracy 향상을 위해 scaling up 하는 방법이 사용되고 있다.
  • 기존 ConvNet의 scaling 과정에서 depth, width, resolution 중 하나의 차원에 대해서만 scaling을 진행하였다.

※ width/depth/resolution을 상수비(constant ratio)를 통해 밸런싱할 수 있다.

 

(a) : 대표적인 ConvNet을 나타내며, 레이어가 깊어지며 spatial dimension이 줄어들고, channel dimension이 깊어진다.

-> 2^N배의 리소스를 사용하여 네트워크 구조를 키우려고한다면

  -> α^N(depth) - 네트워크의 depth를 N승으로 조정

      β^N(width) - 네트워크의 width를 N승으로 조정

      γ^N(IMG SIZE) - 이미지의 사이즈를 N승으로 조정하여 사용한다.

이때의 알파, 베타, 감마는 small grid search에 의해 택하는 상수로서, α = 1.2, β=1.1, γ=1.15가 최적의 값이다.

 

-> 위와 같은 Compound scaling을 통해 EfficientNet은 파라미터수 감수와 동시에 추론과정에서 연산속도가 증가하였다.

 

2. Related Work

ConvNet Accuracy : Network의 정확도가 높아지면 모델이 거대화되므로 학습하는데 많은 리소스가 필요함

ConvNet Efficiency : DeepConvNet은 대부분 너무 많은 FLOPS로 인해 학습 효율이 낮다.

Model Scaling : 높은 이미지 해상도 -> 많은 수의 FLOPS로 정확도가 향상된다.

                         네트워크 depth/width가 깊으면 -> 정확도가 높아진다.

※ 따라서, 위 세가지(resolution,depth,width)를 모두 적절히 조정하여 효율적이고 정확한 네트워크 구성을 목표로 한다.

 

3. Compound Model Scaling

3.1. Problem Formulation

i번째 Convolution Layer : Yi = Fi(Xi)

Fi : 연산자(single Conv) / Yi : 출력 텐서 / Xi : 입력 텐서 / 텐서 형태 : <Hi,Wi,Ci>

즉, i번째 Conv Layer를 모두 합친 전체 ConvNet은 위와 같이 N으로 표현할 수 있다.

 

- 일반적인 ConvNet에서 네트워크의 length(Li), width(Ci), resolution(Hi, Wi)를 변경하여 scaling을 진행한다.

- 일정한 비율(constant ratio)로 각 레이어가 scaled되어야 하며, 모델구조 Fi는 고정하여 사용한다.

※ 즉, 정확도는 높이며 ConvNet의 메모리 할당량, FLOPS(파라미터 수)를 줄이는 최적화 문제를 해결해야한다.

[최적화 문제로 바라본 scaling]

 위에서 d, w, r은 depth, width, resolution으로 계수(coefficient)이다.

 

3.2. Scaling Dimensions

1) Depth

- 직관적으로 깊은 ConvNet이 더 풍부하고 복잡한 특징 추출이 가능하고, 새로운 데이터에 대한 일반화가 용이하다.

※ 그러나 네트워크가 깊어지며 gradient vanishing 등의 문제로인해 학습이 어렵고, 학습시 사용되는 리소스가 너무 크다.

 

2) width

- 주로 작은 사이즈의 네트워크에서 Fully connected layer를 길게 만들어 fine-grained features를 추출한다.

※ 그러나 Depth와 달리 high level features를 추출하기엔 부적합하다.

 

3) resolution

- 이미지 해상도가 높아지면 more fine-grained feature를 포착할 수 있다.

 

Observation 1 - Figure 3

※ Depth, Width, Resolution dimension을 키우면 학습 정확도는 올라가지만, 너무 커지면 정확도 상승폭이 줄어든다.

 

3.3. Compound Scaling

- 각 scaling dimensions는 독립적이지 않고, 서로 상관관계를 갖고 있다고 가정하여 학습을 진행해본다.

-> 직관적으로 고해상도 이미지에서 네트워크의 width, depth를 키워 더 풍부한 특징을 학습하여야 정확도를 높일 수 있다.

 

-> 네트워크의 width를 키움과 동시에 적절히 depth, resolution을 키워야 정확도가 향상된다.

 

Observation 2 

※ 더 나은 정확도 및 효율을 위해선 네트워크의 width, depth, resolution을 적절히 balancing 해야한다.

이때 Compound coefficient φ를 도입하여 w, d, r을 적절히 조정함

 

- 일정한 φ 비율로 네트워크의 depth, width, resolution을 밸런싱 하고,

- small grid search를 통해 적절한 알파, 베타, 감마를 결정

- α · β^2· γ^2 ≈ 2로 설정하여 어떠한 φ에서도 FLOPS가 2^φ배 증가하도록 제한한다.

 

4. EfficientNet Architecture

앞서 소개된 최종 ConvNet의 구조에서 연산자 Fi는 고정하여 사용한다고 한다.

따라서, baseline network의 선정이 EfficientNet의 성능에 영향을 미친다.

-> 본 논문에서는 앞서 소개한 MBConv(Mobile-size baseline ConvNet)을 baseline network로 이용하였다.

 

- ACC : accuracy, FLOPS : FLOPS of model, T : target FLOPS, w = -0.07 : 하이퍼파라미터

-> 위의 EfficientNet-B0 network로 부터 아래의 과정을 거쳐 scaling을 진행한다.

 

Step 1

φ = 1로 고정, 2배의 리소스까지 가능하다고 가정하면

→ α = 1.2, β=1.1, γ=1.15가 최적의 값임

Step 2

위의 α, β,γ를 고정하고 φ를 조정하여 scale up 진행

→ EfficientNet-B1 ~ B7 얻음

※ 소규모 baseline network를 통해 α, β,γ를 찾고, 계수 φ를 조정하여 모델을 수정함

 

5. Experiments

5.1. Scaling Up MobileNets and ResNets

- ImageNet Dataset을 이용한 Compound scaling의 결과. 1-dimension scaling보다 더 높은 정확도를 얻을 수 있다.

 

5.2. ImageNet Results for EfficientNet

- 사용된 하이퍼파라미터 소개

RMSProp optimizer with decay 0.9 and momentum 0.9; batch norm momentum 0.99;

weight decay 1e-5; initial learning rate 0.256 that decays by 0.97 every 2.4 epochs.

We also use SiLU (Swish-1) activation, AutoAugment, and stochastic depth with survival probability 0.8.

※ Bigger model일수록 더 많은 정규화(regularization)이 필요하므로 EfficientNet-B7에서 Dropout을 0.5로 늘렸다.

 

-> 다른 네트워크에 비해 매우 적은 FLOPS로 가장 높은 정확도를 나타내는 EfficientNet을 확인할 수 있다.

 

6. Discussion

- Single-dimension scaling에 비해 약 2.5%의 성능향상을 얻을 수 있다.

왜 Compound scaling method가 정확도를 높여주는 것인가??

- baseline model과 single-dimension scaling, compound scaling을 비교한 Activation map이다.

-> 위 Activation Map을 통해 Compound scaling이 객체와 관련이 있는 부분에 Focus를 맞추는 것을 확인할 수 있다.

 

Review

 기존 Deep Layer를 구성한 CNN 논문을 찾아보며 Very deep layer의 한계가 있음을 알게 되었고, 본 논문에서 소개한 Compound scaling을 통해 ConvNet의 파라미터수를 경량화함과 동시에 정확도를 높일 수 있다는 점이 흥미로웠다.

 ConvNet 모델을 학습시키며 느낀 점이 생각보다 학습이 빠르지 않다는 점이고, 이 수많은 파라미터로 인해 실제 ConvNet을 기반으로한 서비스 제공 과정에서 Inference(추론)에 드는 연산 비용이 클 것이라고 생각한다.

 앞으로도 본 논문과 같이 실제 서비스에 접목하기 위한 경량화 Architecture를 찾아보고, 모델을 학습시켜보며 익숙해져야겠다.