데이터 꿈나무
[Model Study] EfficientNet 모델 본문
[논문] EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
📌 EfficientNet 모델이란?
- 모델 크기를 효율적으로 조절하면서 높은 성능을 유지하는 목표로 개발된 심층 신경망 아키텍쳐
- EfficientNet은 아래의 “Scaling Dimensions”의 세가지 방법에 대한 최적의 조합을 찾는 AutoML을 통해 찾은 모델이다. 그러므로 3가지를 효율적으로 조절할 수 있는 compound scaling 방법을 제안한다. 따라서, 제한된 resourse 범위에서 최적의 조합을 고려한다.
→ 기존보다 훨씬 적은 파라미터 수로 더욱 좋은 성능을 내서 SOTA를 달성할 수 있었다.
※ Scaling Dimensions이란? (더보기 클릭)
- Depth
네트워크의 깊이가 증가할 수록 모델의 capacity(수용력)가 커지고 더 복잡한 feature를 잡아낼 수 있지만, vanishing gradient(기울기 소실)의 문제로 학습 시키기가 더 어려워진다. 이를 해결하기 위해 Batch Norm, Residual Connection 등의 여러 기법들이 등장하였다.
- Width
각 레이어의 width를 키우면 정확도가 높아지지만 계산량이 제곱에 비례하여 증가한다.
- Resolution
입력 이미지의 해상도를 키우면 더 세부적인 feature를 학습할 수 있어 정확도가 높아지지만 마찬가지로 계산량이 제곱에 비례해 증가한다.
→ input image size를 키우면 해상도가 높아진다.

📌 선정 이유 및 장점
- 네트워크의 Depth, Width, Resolution 간의 조율(Balance)을 통해,효과적이면서 좋은 성능을 얻는다.
→ 네트워크의 Depth, Width, Resolution로 구성된 복합 계수 제안
- Resnet과 MobileNet에도 적용 가능하다.
→ EfficientNet의 아이디어는 확장 가능성이 높음
- Transfer Learning에서도 더 작은 Parameter로 SOTA를 달성했다.
→ 모델 아키텍쳐의효율적인 설계로 인해 작은 모델 크기에도 매우 높은 성능을 제공한다.
- 모델 크기 조정 가능
→ 모델 크기에 따라 여러가지 버전을 제공하며, 특정 작업에 맞게 모델 크기 조절 가능
📌 특징
- 네트워크 스케일링
네트워크의 깊이, 폭 및 해상도를 조절하는 계수를 사용하여 모델 크기를 조절한다.
→ 모델 효율성과 성능을 균형 있게 유지할 수 있다.
- Swish Activation
Swish Activation 활성화 함수를 사용하여 더 나은 성능을 달성한다.
→ Swish 는 매우 깊은 신경망에서 ReLU 보다 높은 정확도를 달성
- MBConv 블록
MobileNetV2의 Inverted Residuals과 비슷한 MBConv 블록을 사용하여 네트워크를 구성한다.
📌 Compound Scaling
- 같은 FLOPS를 보여주고 있다.
- FLOPs(FLoating point OPerations)는 부동소수점 연산을 의미
- 위의 그래프를 확인해보면, depth를 키우는 것보다 resolution을 키우는 것이 정확도가 더 좋고, 빨간색을 보면 2가지 값 모두 키운 것이 가장 좋은 것을 알 수 있다.
- input image가 커지면 이에 따라 receptive field도 늘려줘야 하고 더 커진 fine grained pattern을 학습하기 위해 더 많은 channel이 필요하다.
- 그래서 compound scaling이 나온다.
- compound coefficient φ를 사용해 위 수식처럼 scaling한다. 이 때 알파, 베타, 감마는 small grid search에 의해 결정되는 상수(고정)이다.
- Compound coefficient는 사용자의 GPU 성능에 따라 조절할 수 있는 파라미터라고 한다.
- Depth를 2배하면 FLOPS가 2배 증가하지만, width나 resolution은 2배 증가하면 4배로 증가해 total FLOPS를 α · β^2 · γ^2 ≈ 2로 설정한다.
- 이 덕분에 어떤 compound coefficient를 설정해도 total FLOPS가 2^ φ만큼만 증가한다고 한다.
📌 EfficientNet Architecture
- Model Scaling은 layer Operator가 고정되어 있어 Baseline Network가 중요하다고 한다.
- 앞서 언급했던 것처럼 기존 CNN에서도 적용해볼 것이지만, 효과를 더 극대화하기 위해 새로운 network를 설계했고 이를 EfficientNet이라 칭한다.
- NAS로 정확도 및 FLOPS를 모두 챙기도록 최적화 했고, 가장 기본이 되는 네트워크를 EfficientNet-B0로 부른다.
- 이후 B0로부터 시작하는데 compound coefficient를 1로 고정해 최적의 알파, 베타, 감마를 구하고 이를 고정해 서로 다른 compound coefficient로 scaling을 진행한다. 이렇게 B1 ~ B7를 만든다고 한다.

'Activity > Intern' 카테고리의 다른 글
[Python_ts1] os.path.split과 os.path.spiltext 알기 (0) | 2023.10.01 |
---|---|
[Model Study] SNAPSHOT ENSEMBLE(SSE) (3) | 2023.10.01 |
[Model Study] MobileNet (0) | 2023.09.30 |
[Model Study] VIT(Visual Transformer) 모델 (0) | 2023.09.29 |
[Certi 세미나] 알고리즘 기초-선형 자료 구조 (0) | 2023.09.29 |