EfficientNet : Rethinking Model Scaling for Convolutional Neural Networks (2020.09.V5)
Mingxing Tan, Quoc V.Le
https://arxiv.org/abs/1905.11946
오늘 리뷰할 논문은 CNN 신경망의 크기를 밸런스있게 조정함으로서 높은 성능과 연산 효율성 두마리 토끼를 모두 잡은 EfficientNet : Rethinking Model Scaling for Convolutional Neural Networks 입니다. 그럼 논문 리뷰 시작해보도록 하겠습니다! 😁
📌 Abstract
현실적으로 CNN의 개발 과정에서는 사용할 수 있는 자원이 한정되어 있고, 더 나은 모델 정확도를 얻고자 할 때는 추가 자원을 투입하여 모델을 스케일 업합니다. 본 논문에서는 스케일 업이라고 표현했지만, 단순하게 말하자면 어떠한 방식으로 모델의 크기를 키우는 것을 의미합니다.
모델을 스케일 업할 수 있는 방식에는 크게 3가지가 있습니다. Layer를 더 많이 쌓아서 모델의 깊이를 늘리거나, 채널 수를 늘려서 학습할 수 있는 특징을 풍부하게 하는 식으로 모델의 너비를 확장하거나, 더 많은 세부 정보와 디테일을 학습할 수 있게 입력받는 입력 이미지의 해상도를 높이는 방식을 채택할 수 있습니다.
본 논문의 저자들은 이 너비, 깊이, 해상도 3가지 요소를 균형있게 조정하는 것이 더 나은 성능으로 나아갈 수 있는 길임을 파악하였고, 3가지 요소의 모든 차원을 균일하게 스케일링하는 Compound 계수를 제안합니다. 추가로, NAS라는 방식을 사용하여 Base Network를 설계하고 위의 방식으로 스케일업함으로서 EfficientNet이라는 효과적인 모델 구조를 얻습니다.
EfficientNet은 다양한 CV 벤치마크에서 이전보다 좋은 성능을 달성하며, 심지어는 속도까지 더 빠른 결과를 보여줍니다.
본 논문의 개요는 대략적으로 이러하며, 자세한 내용들은 아래 본론 부분에서 조금 더 자세히 다뤄보도록 하겠습니다!
📌 Introduction
본 논문 이전에도 스케일업 방식이 아예 유효하지 않았던 것은 아닙니다. Skip Connection 구조로 대표적인 ResNet 같은 경우, 아래의 그림과 같이 layer를 깊게 쌓을수록 점차 성능이 향상되는 모습을 관찰할 수 있었고, 구글의 GPipe 방법론 같은 경우에도 기준 모델을 4배 커지게 해서 당시 ImageNet 기준 top-1 정확도를 달성했었습니다.


G-Pipe는 구글에서 개발한 방법론으로, 메모리 최적화를 통해 메모리를 절약하는 대신, 연산량을 조금 더 사용하여 훨씬 더 큰 모델을 훈련할 수 있게끔 만든 기법이라고 합니다!
메모리 최적화의 두 가지 핵심 달성 방식은 Reparameterialization과 Pipeline Model Parallelism으로, 제가 이해한 대로 간단하게만 설명을 추가해보겠습니다.
전자의 경우, 기존 딥러닝 학습 방식에서는 역전파를 수행할 때 순전파 단계에서의 활성화 값을 저장해서 활용하는데, 이 저장 단계에서 메모리를 많이 잡아먹기 때문에 G-Pipe에서는 활성화를 저장하지 않고 역전파시 필요한 활성화 값만 다시 계산해서 활용하는 방식입니다.
후자의 경우, 여러 메모리를 통해 학습을 할 때, 병렬화를 하였다고 해도 한 메모리는 다른 메모리의 연산이 끝날 때까지 기다려야한다는 단점이 있는데, 연산 단위를 더 잘게 조개서 메모리의 대기 시간을 조금 더 줄였다라는 개념으로 받아들이시면 좋지 않을까 싶네요!
하지만 위의 두 예시들을 포함하여 당시의 스케일 업 방식에는 한계가 있었습니다. 당시 주류가 되었던 스케일 업 방식은 주로 너비, 깊이, 해상도 중 하나만 조정하는 것이 일반적이었고, 두 세개를 임의로 조정할 수 있긴 하나 수동으로 해야하기 때문에 최적값을 얻지 못할 때도 있고 효율성이 매우 떨어진다는 점이었습니다.
본 논문에서는 이러한 스케일업 방식의 한계를 극복하기 위해 여러 실험을 진행하였는데, 이 과정에서 3가지 요소를 상수 비율로 단순하면서도 균일하게 스케일링하는 방식이 매우 유용하며 그 중요성을 더욱 인식하게 되는 계기가 되었다고 합니다.

제일 오른쪽에 있는 그림이 해상도, 깊이, 너비를 동시에 업스케일 한 것을 도식화한 그림인데, 직관적으로 입력 이미지 해상도가 더 크면, Receptive Field를 키우기 위해 더 많은 레이어를 쌓아야하고, 그 만큼 더 많은 특징을 담기 위해 채널 수도 늘어나야하므로 동시에 세 요소가 같이 늘어나는 것이 매우 합리적이라는 사실을 파악할 수 있습니다.(핵심!)
모델 업스케일의 효과는 기준 베이스 아키텍쳐의 영향을 많이 받는데, Neural Architecture Search(NAS)라는 일종의 최적 베이스 모델을 찾아주는 신경망을 통해 최적 베이스 모델을 찾고, 그것을 업스케일 하여 본 논문의 EfficientNet 구조를 본 논문의 저자들은 고안하였습니다.
📌 Related Work
[CNN Accuracy]
ImageNet에서 SOTA를 달성한 모델들의 등장 흐름을 말하고 있습니다.
AlexNet -> GoogleNet(6.8M, 74.8%) -> SENet(145M, 82.7%) -> GPipe(557M, 84.3%) 순으로 파라미터의 수가 늘면서, 자연스럽게 정확도도 높아졌던 모습을 볼 수 있습니다.
여기서 주요하게 추가로 정리하면 좋을 것 같은 2가지 지점을 다루어보자면 아래와 같습니다.
1) ImageNet을 위해 설계되었지만, ImageNet에서 성능이 좋은 모델이 다른 컴퓨터 비전 작업에서도 범용적으로 좋은 성능을 보였다는 점이 당시 기준 최근 연구에서 밝혀짐
2) 하드웨어 메모리가 당시 어느정도 한계에 도달했기 때문에 위처럼 단순히 파라미터 수를 늘리는 방향으로는 추가적인 성능 개선이 어려우며 물리적으로도 불가능함을 인식하였고, 더 나은 효율성이 성능 개선과 직결될 수 있다는 점을 인식함
[CNN Efficiency]
모델 효율성 확보의 측면에서는 본 논문에서 3가지의 방법론을 소개하고 있습니다.
1) 모델 압축 : 효율성을 위해 정확도에서 손해를 조금 보면서 이미 학습된 모델을 축소시키는 방식
2) 처음부터 모바일 환경에 맞는 경량화된 구조를 설계하는 방식 ex) MobileNet, SqueezeNets
3) NAS(Network Architecture Search)를 통해 주어진 상황에서 최적의 모델을 딥러닝 기반으로 찾는 방식
당시에는 3번 방법론이 인기를 끌었고, 성능 역시 3번이 처음부터 그냥 모바일 환경에 맞게 모델 구조를 수제작하는 것보다 상대적으로 더 좋았다고 합니다. 하지만 3번 방법론은 대형 모델에서의 어려움이 있었습니다. 시도해야할 조합이 매우 많을 뿐더러 하나 학습하는 데 드는 비용도 매우 컸기 때문에 현실 적용이 쉽지 않았기 때문입니다.
본 논문에서는 정확도 SOTA를 초월하는 초대형 ConvNet의 모델 효율성을 연구하는 것을 목표로 잡았고, 목표 달성을 위해서 모델 스케일링에 의존하였습니다.
[etc.]
추가적으로 너비, 깊이, 해상도 중 하나에서만 단일로 키우는 방식을 설명하긴 하는데, 위에서도 간략히 언급했고 본 논문이 나온 후 큰 의미부여가 안되는 지점이기 때문에 생략해도 될 것 같고 추가적으로 FLOPS라는 성능지표가 처음으로 이 부분에서 등장해 무엇인지만 간단히 알아보고 넘어가도록 하겠습니다.
FLOPS란?
-> FLOPS란 Floating Point Operations Per Second로 1초에 수행할 수 있는 부동소수점 연산 횟수에 해당하며, 모델이 수행해야 하는 연산량의 측정 단위로 사용됩니다. 주로 딥러닝 모델들의 연산 복잡도를 평가할때 이 FLOPS가 사용됩니다.
📌 Compound Model Scaling
[Problem Formulation]
일반적으로 Conv layer는 아래와 같이 일반화 될 수 있습니다. X가 입력 텐서, Y가 출력 텐서, F가 어떠한 연산에 해당합니다. 이때 텐서의 형상은 <H,W,C>로 우리가 알고 있는 해상도에 채널 정보가 결합된 형태입니다.

그렇다면 Conv layer들이 결합된 Conv Network의 경우 아래의 첫번째 그림과 같이 표현이 가능할 것 입니다. F1부터 K번째 Layer까지 반복적인 연산을 진행하는 형태이죠. 그런데, 일반적으로 Conv 네트워크에서 같은 해상도를 가지는 블록을 하나의 단계라고 표현하는데, 각 단계 간에는 동일한 아키텍쳐를 공유하기 때문에 아래 두번째 그림과 같이 Conv Network를 재정의 할 수 있습니다. i단계에서 레이어 Fi가 Li번 반복됨을 의미합니다.


일반적인 Conv Network는 F, 즉 최적의 레이어 아키텍쳐를 찾는 것에 집중하지만, 본 논문에서는 F를 고정한 상태에서 대신 네트워크의 길이 L, 너비 C, 입력 해상도 H,W를 Scaling하는 것에 집중합니다. 이를 모델 스케일링이라고 부릅니다.
하지만, F를 고정하더라도 L,C,H,W의 조합이 가질 수 있는 범위 공간이 매우 크기 때문에 탐색이 여전히 어렵다는 단점이 존재합니다. 이 공간의 범위를 줄이기 위해 본 논문에서는 모든 레이어가 일정 비율로 균일하게 스케일링 되어야한다고 제한합니다.
최종적으로 아래 그림과 같이 아이디어 전체를 수식화 할 수 있습니다. 당연히 타겟 메모리와 연산량이 제한된 상태에서 그 이하로만 실험을 진행해야하고, 그 안에서 맨 위의 식에서의 파라미터 계수들을 최적화 해야합니다. d,w,r은 깊이, 너비, 해상도를 스케일링 하기 위한 계수이고, 우변에서의 각 파라미터들은 사전 정의된 파라미터로 일종의 네트워크 초기값이라고 봐주시면 될 것 같습니다!

[Scaling Dimensions]
세 요소를 같이 스케일링 하는 것의 문제점은 최적의 스케일링 계수가 서로 의존하고 각기 다른 자원의 제약 상태 안에서 값이 변화한다는 점이었기 때문에, 기존에는 위에서 처럼 하나의 요소만 타겟팅해서 스케일링을 했었습니다.
하지만 이 방식 역시 각각의 한계점이 있었습니다.
먼저 네트워크의 깊이를 늘리면 어느 순간부터는 기울기 소실이 발생하여 훈련에 어려움이 생깁니다. Skip Connection과 배치 정규화를 사용하면 Gradient 소실 문제가 완화되긴 하나 단순히 완화이지 극복은 아닙니다. ResNet-101과 ResNet-1000의 성능이 비슷한 것만 봐도 레이어를 단순히 깊게 쌓는 것이 해결책은 아닌듯 보입니다.

두번째로, 네트워크의 너비만 늘려나갔습니다. 넓은 네트워크는 미세한 특징을 더 잘 파악할 수 있다는 장점이 있지만, 아래와 같이 너비가 넓어질수록 결국은 빠르게 성능 포화상태에 도달합니다.

마지막으로, 해상도를 키우면 역시 더 미세한 특징을 잘 파악할 수 있게 된다는 장점이 있습니다. 입력 이미지 자체가 더 미세한 특징을 반영할 수 있고, 같은 크기의 필터라도 높은 해상도의 이미지에서 더 작은 부분들을 보기 때문입니다. 하지만 이 역시 해상도가 높아져 어느 수준에 도달하게 되면 성능 개선이 더뎌진다는 점이 아래 그림과 같이 발생합니다. 아래 그림에서 r이 1일때가 224*224 사이즈이고, r이 2.5일 때가 560*560 사이즈라고 합니다.

[Compound Scaling]
본 논문의 저자들은 3가지 요소가 독립적이지 않고 서로 상호작용 함을 파악하였습니다. 높은 해상도 이미지를 사용하기 위해서는 깊이를 늘려야 한다던지, 해상도가 높을 때 더 많은 세부 특징을 파악하기 위해 너비도 같이 증가시켜야 한다던지처럼 말이죠. 이 직관으로부터 여러 스케일링 차원을 동시에 조정하고 서로 균형을 맞춰야한다는 필요성을 인식하였습니다.
따라서, 연구진들은 새로운 Compound Scaling 방식을 제안합니다. 이 방식에서는 Compound 계수 \( \phi \) 를 사용하여 아래 수식과 같이 Scaling을 진행합니다.

이제 \( \alpha, \beta, \gamma \)는 작은 그리드 서치로 결정할 수 있는 상수이며, \( \phi \) 라는 자원 양 조절 계수에 맞춰 \( \alpha, \beta, \gamma \) 은 각 깊이, 너비, 해상도에 자원을 얼마나 할당하여 얼마나 Scaling 할 것인지 그 각각의 증가 비율을 나타내는 값입니다.
하지만 여기서 이 부분이 중요한데, 직관적으로 깊이를 두 배로 늘릴때는 단순히 레이어 수만 늘리는 것이기 때문에 FLOPS 연산량도 그대로 두 배 증가하지만, 너비를 늘릴때는 계산에 입력 채널 수와 아웃풋 채널 수가 모두 관여하기 때문에 연산량이 네 배 증가하고, 마찬가지로 해상도를 늘릴때도 역시 가로, 세로가 모두 관여하기 때문에 네 배 증가합니다.
Conv Network의 연산량의 거의 대부분을 Conv연산이 차지하기 때문에, 사실상 FLOPS 연산량은 위의 파라미터로 하면 \( (\alpha \cdot \beta^2 \cdot \gamma^2) \phi \)만큼 비례해서 증가하고, 이를 위의 그림 기준 아래에서 두번째 식처럼 대략 2로 조정하면 새로운 \( \phi \) 에 대해 총 FLOPS가 대략 \( 2^{\phi} \)만큼 증가하도록 하였습니다. 사실상 \( \phi \) 를 1로 지정하면, 2 연산량이 2배가 되도록 조정하고, 2로 지정하면 4배가 되도록 조정하는 것입니다.
결론적으로, \( \alpha, \beta, \gamma \) 가 특정 상황에서 다양한 비율관계를 가질 수 있다는 것이고, 자원의 사용 범위를 \( \phi \) 로 조정해가면서 자원 제약 상태에서의 복합적인 최적 Scaling 계수를 찾아 이를 활용해 동시에 Scale up 한다는 개념으로 종합해주시면 좋을 것 같습니다!
📌 EfficientNet Model Architecture

위에서 계속 설명해온 모델 스케일링 과정의 수식에서 F, 즉 모델의 레이어 아키텍쳐는 변경하지 않기 때문에 초기에 좋은 아키텍쳐를 선정하는 것이 중요합니다.
따라서 본 논문의 연구자들은 실험시 물론 이전의 Conv Network들도 사용하지만, 이외에 추가로 스케일링의 효과를 더 잘 나타낼 수 있는 모바일 크기의 기본 네트워크인 EfficientNet-B0도 위와 그림과 같이 개발하였는데, 이 과정은 정확도와 연산량을 최적화하는 NAS를 통해 구현되었습니다.

NAS의 최적화 Objective는 아래의 수식과 같은데요, ACC는 모델 정확도이고 FLOPS는 연산량, T는 타겟 연산량 이며 w를 아주 작은 음수값으로 설정합니다. w가 음수이기 때문에, 전체 Objective가 정확도는 커지게, 연산량이 작아지게 작동해야 좋게 기본적으로 설계가 되고, 아주 작은 값으로 설정하여 연산량을 조금씩 줄여나가면서 성능을 유지하는 방식으로 학습이 진행됩니다. 이렇게 효율적인 탐색 과정을 거쳐서 얻은 모델이 바로 위의 EfficientNet-B0인 것입니다.

EfficientNet에서 주된 구성 요소는 MBConv와 Squeeze-and-Excitation(SE) 최적화 입니다.
MBConv는 EfficientNet이 MNas와 모델 구조가 유사하기도 하고 MBConv 구조에 대한 더 직관적인 그림이 있어 해당 논문의 그림을 설명을 위해 가져오게되었습니다.
MBConv는 그림의 오른쪽 부분처럼 필터 크기, 채널 확장 수 등 세부 설정만 다르고 구조 자체는 모두 동일한데요. MBConv의 핵심은 경량화를 위해 MobileNet에서 주로 사용되었던 DepthWise Convolution을 사용했다는 것입니다. DepthWise는 채널 전체를 대상으로 동시에 진행하던 기존 Conv 연산 대신, 각 채널별로 독립적인 Conv연산을 진행해줌으로서 연산량을 절약하는 방법론입니다.
하지만 이때 기존 Conv의 경우 연산 과정에서 채널 간 정보를 많이 반영하는데, 독립적으로 진행하는 DWConv의 경우 그러지 못하기 때문에 그 부분에서 오는 정보량 손실을 이전에 1*1 Conv를 붙여 채널 수를 확장함으로서 마치 '양치기' 느낌으로 더 많은 정보량을 보강해주는 것 같습니다.
이후 DWConv 이후에는 Global Average Pooling을 통해 공간 정보를 평균내어 각 채널별로 하나의 값만을 남기고 이를 FC Layer와 Sigmoid 활성화 함수에 차례대로 태워 각 채널의 중요도를 산출합니다. 이렇게 학습된 채널의 중요도 가중치를 원래 피쳐맵에 곱해주어 중요한 채널은 강조하고, 중요하지 않은 채널은 약화시킵니다. 이 과정을 SE라고 합니다.
최종적으로는 기존에 확장했던 채널을 다시 1*1 Conv로 축소하여 이미 풍부한 특징들을 학습한 상태에서 정보 압축을 진행하고, 추가로 Skip Connection과 배치 정규화를 사용합니다.
+) 아래의 MBConv3, Conv6 등 뒤의 숫자는 첫 1*1 Conv에서 채널을 몇 배 확장할지 그 배수에 관한 것입니다.

EfficientNet에서는 위와 같은 방식들을 사용하여 연산량을 효율적으로 줄이면서도 더 많은 정보를 학습하여 성능을 유지, 개선 할 수 있습니다.
📌 Experiments
[MobileNet & ResNet Scale Up]

위의 결과표를 보면, MobileNet과 ResNet을 각각 단일 차원에서 Scale up 한 것과, Compound Scaling 방식을 비교했을 때, 단일 차원 스케일링을 진행했을 때랑 FLOPS 연산량 차이가 상대적으로 크지 않은데 비해 정확도를 꽤나 상당 부분 개선한 모습을 관찰할 수 있습니다.
[EfficientNet ImageNet Result]


[EfficientNet의 학습 설정]
- RMSProp Optimizer 사용(Decay 0.9, Momentum 0.9, Weight Decay 1e-5)
- 배치정규화 모멘텀 : 0.99
- lr 초기값 : 0.256 이후 2.4에포크 마다 0.97씩 감소
- SiLU 활성화 함수 사용
- Auto 데이터 증강
- Dropout : 모델 크기가 커질수록 규제 강화를 위해 B0에서는 0.2, B7에서는 0.5까지 비율 증가
- 25K의 랜덤 이미지를 Valid Set으로 활용하여 Early Stopping 추가
EfficientNet의 위의 ImageNet 성능표를 보면, 기존 ConvNet들보다 훨씬 작은 모델 크기와 적은 연산량으로도 높은 성능을 기록하였습니다. 특히 B7 모델의 경우, 기존 GPipe보다 연산량은 8.4배 적지만 더 높은 성능을 보이고, B3 모델의 경우 기존 ResNeXt-101 모델보다 연산량은 18배 적지만 더 높은 정확도를 보입니다.
추가로 그래프까지 위에 첨부하였는데, 전반적인 EfficientNet의 빨간 곡선이 상대적으로 다른 모델들에 비해 낮은 연산량으로 높은 정확도를 달성하고 있는 것을 직관적으로 볼 수 있습니다.
[EfficientNet Transfer Learning Result]


ImageNet에서 Pretrain하고, 체크포인트를 불러와 위의 각 전이학습 데이터셋을 통해 파인튜닝하는 형식을 거쳤습니다. 위와 같은 방식으로 각 데이터셋에서 평가를 진행했을 때, EfficientNet은 최신 모델들과 비교했을 때에도, 8개 중 5개 셋에서 더 적은 파라미터로 더 높은 성능을 달성하는 모습을 보였습니다.
📌 Discussion

EfficientNet-B0를 BaseLine으로 하여, ImageNet에 대한 다양한 Scale up 방식을 비교하는데, 논문에서 활용하는 Compound Scale 방식이 단일 차원에서 Scale up 하는 것 보다 FLOPS와 Top-1 정확도에서 모두 상대적으로 좋은 것을 볼 수 있습니다.

ImageNet 예시를 통해 보면 Compound Scaling을 진행했을 때, 타 방식들보다 상대적으로 객체 세부 정보가 포함된 더 관련성 높은 영역에 집중하는 경향성을 보이는 것을 파악할 수 있습니다.
📌 Conclusion
본 논문에서는 간단하고 매우 효과적인 Compound Scaling 방식을 제안함으로서 정해진 자원 제약 하에서 모델의 효율성을 유지하고, 동시에 모델 확장까지 효과적으로 진행하여 성능 개선을 이루었다는데 큰 의의가 있는 논문입니다.
EfficientNet은 당시 ImageNet과 다섯 개의 전이 학습 데이터셋에서 성능도 올리면서 효율성까지 갖춘 정말 획기적인 논문이었습니다!
📌 느낀점(논문을 읽으면서..)
장르를 막론하고 여타 다른 논문들에서도 파라미터값들을 다루면서 그 부분에 최적화라는 워딩을 붙인 경우가 최근 정말 많았던 것으로 기억하는데, 최적화의 필요성을 처음으로 진중하게 느끼게해준 경험이 이번 논문인 것 같습니다.
기존에는 최적화라는 작업을 현재 있는것이 잘 돌아가게끔 약간 유지? 하는 과정으로 받아들이고 있었는데, 이번 논문을 읽으면서 최적화를 통해 얻은 이득을 추가적인 개선에 투자할 수 있기에 최적화가 중요하다 이 논지가 매우 인상깊었습니다.
📌 References
https://www.youtube.com/watch?v=bbb0bLR0Faw&t=975s
https://ffighting.net/deep-learning-paper-review/vision-model/efficientnet/#google_vignette
'Paper Review > CV' 카테고리의 다른 글
| [Paper Review] VAE : Auto-Encoding Variational Bayes (0) | 2025.05.12 |
|---|---|
| [Paper Review] Mask R-CNN (0) | 2025.02.18 |
| [Paper Review] RetinaNet : Focal Loss for Dense Object Detection (0) | 2025.02.05 |
| [Paper Review] YOLO : Unified, Real-Time Object Detection (0) | 2025.01.29 |
| [Paper Review] U-Net : Convolutional Networks for Biomedical Image Segmentation (0) | 2025.01.24 |