CS 공부/AI

[Object Detection] EfficientDet

imsmile2000 2023. 5. 6. 16:47

Model Scaling

  • Compound scaling = width + depth + resolution scaling
    • Width Scaling   ex. WRN
    • Depth Scaling ex. ResNet34
  • 더 높은 정확도와 효율성을 가지면서 ConvNet의 크기를 키우는 방법은 없을까?
    • 네트워크의 width, depth, resolution 모든 차원에서의 균형을 맞추는 것이 중요!

 

EfficientNet


등장 배경

  • 모델들의 파라미터 수가 점점 많아짐
  • 점점 빠르고 작은 모델에 대한 요구 증가
  • 효율성과 정확도의 trade-off를 통해 모델 사이즈를 줄이는 것이 일반적이지만, 큰 모델에서는 어떻게 모델을 압축시킬지가 불분명함
  • 따라서 EfficientNet은 아주 큰 SOTA ConvNet의 efficiency를 확보하는 것이 목표
    • 모델 스케일링을 통해 이 목표를 달성

 

Scale up

  • Width Scaling
    • 네트워크의 width를 스케일링하는 방법은 작은 모델에서 주로 사용됨
    • 더 넓은 네트워크는 미세한 특징을 잘 잡아내고, 학습도 쉬움
    • 하지만, 극단적으로 넓지만 얇은 모델은 high-level 특징들을 잘 잡지 못함

 

  • Depth Scaling
    • 네트워크의 깊이를 스케일링하는 방법은 많은 ConvNet에서 쓰임
    • 깊은 Convnet은 더 풍부하고 복잡한 특징들을 잡아낼수 있고, 새로운 task에서도 잘 일반화됨
    • 하지만, 깊은 네트워크는 gradient vanishing 문제가 있어 학습이 어려움

 

  • Resolution Scaling
    • 고화질의 input 이미지를 이용하면 ConvNet은 미세한 패턴을 잘 잡아낼 수 있음
    • 최근 Gpipe는 480x480 이미지를 사용하여 ImageNet에서 SOTA 달성

 

Accuracy & Efficiency

  • 네트워크의 width, depth, resolution을 키우면 정확도가 향상된다
    • 하지만 키우면 키울수록 정확도 향상 정도가 감소한다
  • 더 나은 정확도와 효율성을 위해서는 네트워크의 width, depth, resolution의 균형을 잘 맞춰줘야함
  • Compound Scaling 기법을 제안

 

EfficientNet

  • MnasNet에 영감을 받음
  • Accuracy와 FLOPs를 최적화하는 것이 목표
  • Nas 결과, EfficientNet-B0
  • ∅ =1로 고정하고  𝛼, 𝛽, r를 small grid search를 통해 찾음 -> EfficientNet-B1
  • ∅ =2로 고정하고  𝛼, 𝛽, r를 ~~~ -> EfficientNet-B2
  • 𝛼, 𝛽, r를 상수로 고정하고 ∅를 키우면서 EfficientNet-B1~B7

 

 

EfficientDet


등장 배경

  • 그동안 있었던 많은 시도들: 1 satge model, anchor free model ... 하지만 Accuracy가 낮음
  • 자원의 제약이 있는 상태에서 더 높은 정확도와 효율  성을 가진 detection 구조를 만드는 것이 가능할까?

 

특징

  1. Efficient multi-scale feature fusion
    • EfficientDet 이전에는 multi-scale feature fusion을 위해 FPN, PANet, NAS-FPN 등 Neck 사용
    • 대부분의 기존 연구는 resolution 기본 없이 feature map 단순 합
    • EfficientDet은 단순합 대신 여러 resolution의 feature map 가중합 (BiFPN 제안)
      • BiFPN은 모든 가중치의 합으로 가중치를 나눠줌
      • 가중치들은 ReLU를 통과한 값으로 항상 0 이상
      • 분모가 0이 되지 않도록 아주 작은 값 e를 더해줌
    • 모델의 Efficiency를 향상시키기 위해 cross-scale connections 방법 이용
  2. Model Scaling
    • 더 좋은 성능을 위해 더 큰 backbone 모델을 사용하는 것이 일반적
    • EfficientDet은 정확도와 efficiency를 모두 잡기 위해, 여러 constraint를 만족시키는 모델을 찾고자 함
    • EfficientNet과 같은 compound scaling 방식 제안
    • backbone: EfficientNet B0~B6
    • BiFPN network: 네트워크의 width와 depth를 compound 계수에 따라 증가시킴
    • Box/class prediction network: width는 고정, depth를 식에 따라 증가
    • Input image resolution: 해상도를 선형적으로 증가시킴