데이터 꿈나무

[Model Study] EfficientNet 모델 본문

Activity/Intern

[Model Study] EfficientNet 모델

ye_ju 2023. 9. 30. 11:15

[논문] 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를 만든다고 한다.


Comments