[논문리뷰] EfficientNet - penny4860/study-note GitHub Wiki

1. 정리

요약

  • Compound Scaling 방법을 제안
    • baseline 모델을 scaling 하는 방법으로, 3가지 dimension을 모두 고려
      • depth
      • width
      • resolution
    • single dimension scaling 방식에 비해 효율적
  • EfficientNet을 제안
    • NAS로 baseline model을 찾고
      • mnasnet과 비슷한 구조 : MBConv / SE
    • compound scaling 방식으로 모델의 크기를 늘림.
    • ImageNet 성능
      • Accuracy / FLOPS / parameter / cpu inference time 에서 좋은 성능
      • training time / gpu inference time 에 대한 실험결과는 없음.
    • Transfer Learning 성능

질문

2. 내용

1. Introduction

  • Compound Scaling

    • ConvNet의 크기(scale)를 키우는 방법은 3가지가 있다.
      • resolution / depth / width(filter 숫자)
    • 기존의 연구들은 Network의 크기를 키우기위해 1가지 방식만을 고려.
    • 본 논문에서는 3가지 요소각각의 fixed scaling coefficient를 정하고, 이들을 동시에 scale up.
    • 직관적 설명
      • resolution이 커지면
      • 더 큰 receptive field가 필요하다. --> depth를 키워야 함.
      • 더 많은 pattern을 capture해야함 --> width를 키워야 함.
  • EfficientNet

    • NAS로 baseline network를 찾고
    • compound scaling으로 모델의 complexity를 높임.
    • ImageNet에서 SOTA
    • 다른 classification task에서도 SOTA의 성능을 보임

2. Related Work

  • ConvNet Accuracy

    • ImageNet Task를 타겟으로 Convnet 모델을 개발
    • 다른 classification task에서도 높은 성능을 보임
    • 다른 CV task (object detection)에서도 높은 성능을 보임.
  • ConvNet Efficiency

    • squeezenet 계열
    • mobilenet 계열
    • shufflenet 계열
    • NAS로 찾은 모델
      • mnasnet
      • proxylessnas
  • model scaling

    • ConvNet의 스케일을 어떻게 높일것인가?

3. Compound Scaling

3.1. Problem Formulation

  • CNN 디자인
    • layer 구조를 찾는다.
    • baseline 모델을 찾는다.
    • baseline 모델을 scaling

3.2. Scaling Dimensions

  • 1st Observation
    • 3가지(depth, width, resolution) 중에서 1개라도 늘리면 성능이 좋아짐
    • 너무 늘릴경우 성능향상이 saturation / diminish 된다.

3.3. Compound Scaling

  • 2nd Observation

    • 네트워크를 scaling 할떄는 3가지 dimenstion을 골고루 늘려야함.
  • compound scaling method

    • theta : compound scaling coefficient
      • 모델의 크기를 결정
    • alpha, beta, gamma :
      • 결정된 resource를 어떻게 배분할지를 결정

4. EfficientNet Architecture

  • 개발과정

    1. NAS로 Baseline Model인 EfficientNetB0을 찾음.
      • accuracy / flops을 최적화
      • latency는 반영하지 않았음.
    2. Compound Scaling 으로 B1 ~ B7까지 scaling
      • B0의 최적 (alpha, beta, gamma) 조합을 grid search로 찾아 이를 fix
      • theta를 높여서 B1 ~ B7에 반영
  • 모델 구조

    • mnasnet과 비슷한 구조
    • 주요 빌딩 블록
      • MBConv : Mobile Inverted Bottleneck
        • mobilenet v2, mnasnet
      • Squeeze-and-Excitation
        • SENet

5. Experiments

5.1. Scaling Up MobileNets and ResNet

  • 같은 자원을 사용할때 compound scaling이 single dimension scaling 보다 성능이 좋았음.

5.2. Imagenet

  • Training Setting

    • rmsprop optimizer
      • 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.
    • swish activation
    • fixed autoaugment policy
    • stochastic depth
    • 모델 크기에 따라 dropout ratio 조절
      • B0 : 0.2
      • B7 : 0.5
  • accuracy / flops / parameters / cpu infrence time 에서 성능이 좋았음

5.3. Transfer Learning