코딩하는 해맑은 거북이

[컴퓨터비전] Object Detection - EfficientDet 본문

AI

[컴퓨터비전] Object Detection - EfficientDet

#CJE 2023. 5. 3.
본 게시물의 내용은 '부스트캠프 AI Tech - Object Det(송원호)' 강의를 듣고 작성하였다.
해당 글은 아래의 3가지를 다룬다.
📌 Efficient in Object Detection
📌 EfficientNet
📌 EfficientDet

📌 Efficient in Object Detection

🔷 등장배경

Efficient는 더 높은 정확도와 효율성을 가지면서 ConvNet의 크기를 키우는 방법(Scale up)은 없을까에서 등장하였고, 네트워크의 폭(width), 깊이(depth), 해상도(resolution) 모든 차원에서의 균형을 맞추는 것이 중요하다는 것을 보여주었다. 그리고 이러한 균형은 각각의 크기를 일정한 비율로 확장하는 것으로 달성할 수 있었다.

→ Width Scaling, Depth Scaling, Resolution Scaling

즉, 3가지 측면에서 효율적으로 조절해서 더 높은 정확도와 효율성을 가지도록 하는 것이 Efficient 이다.

 

📌 EfficientNet

🔷 등장배경

ConvNet은 점점 더 커짐에 따라 점점 더 정확해지고 있고, 파라미터 수가 점점 많아지고 있다.

하지만, 실제로 적용하기 위해서 빠르고 작은 모델에 대한 요구가 증가하고 있다.

효율성과 정확도의 trade-off 를 통해 모델 사이즈를 줄이는 것이 일반적이다.
하지만, 큰 모델에 대해서는 어떻게 모델을 압축시킬지가 불분명하다.

따라서 이 논문은 아주 큰 SOTA ConvNet의 efficiency를 확보하는 것을 목표로 하고, 이를 Model Scaling으로 달성하였다.

🔷 Scale Up

1) Width Scaling

  • 네트워크의 width를 스케일링하는 방법은 작은 모델에서 주로 사용됨 (ex. MobileNet, MnasNet )
  • 더 wide한 네트워크는 미세한 특징을 잘 잡아내는 경향이 있고, 학습도 쉬움
  • 하지만, 극단적으로 넓지만 얕은 모델은 high-level 특징들을 잘 잡지 못하는 경향이 있음

 

2) Depth Scaling

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

 

3) Resolution Scaling

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

 

🔷 Accuracy & Efficiency

1) Better Accuracy & Efficiency

- d = depth, w = width, r = resolution

- Scale factor : d, w, r

 

2) Compound Scaling Method

네트워크의 폭, 깊이, 혹은 해상도를 키우면 정확도가 향상되지만, 더 큰 모델에 대해서는 정확도 향상 정도가 감소한다.

더 나은 정확도와 효율성을 위해서는, ConvNet 스케일링 과정에서 네트워크의 폭, 깊이, 해상도의 균형을 잘 맞춰주는 것이 중요하다.

그래서 제안된 방법이 아래 기준을 만족하는 d, w, r를 Φ 기준으로 모두 바꾸는 Compound Scaling Method가 있다.

 

🔷 EfficientNet-B0

가장 초기 모델로, MnasNet에 영감을 받았고, Accuracy와 FLOPs를 고려해서 NAS로 최적의 모델 구조를 찾았다.

 

🔷 EfficientNet-B1 ~ B7

이후 모델 구조는 변경하지 않고, Φ를 1로 고정하여 α, β, γ를 small grid search를 통해 찾았다.

α=1.2, β=1.1, γ=1.15 under constraint of α * \(β^2\) * \(γ^2\) ≈ 2 라는 결과를 얻었다.

이를 통해 α, β, γ를 상수로 고정하고, Φ만 변경하여 scale up 했을 때의 모델 결과가 B1 ~ B7에 해당한다.

 

📌 EfficientDet

🔷 등장배경

Object Detection은 특히 속도가 중요하다. 즉, 모델이 실생활에 사용되기 위해서는 모델의 사이즈와 대기 시간에 제약이 있기 때문에, 모델의 사이즈와 연산량을 고려해 활용 여부가 결정된다. 이러한 제약으로 인해 Object Detection에서 Efficiency가 중요해지게 되었다.

 

1 Stage Detectors는 속도는 빠르지만, Accuracy가 낮았다. 따라서 자원의 제약이 있는 상태에서 더 높은 정확도와 효율성을 가진 detection 구조를 만드는 시도가 필요했고, 이를 해결한 것이 EfficientDet 모델이다.

 

EfficientDet은 Backbone, FPN, box/class prediction networks를 모두 고려해서 Model Scaling을 진행했다.

 

 

🔷 Efficient multi-scale feature fusion

EfficientDet 이전에는 multi-scale feature fusion을 위해 FPN, PANet, NAS-FPN 등 Neck을 사용했다. 하지만, 이는 resolution 구분 없이 feature map을 단순 합 하였다. 그런데 서로 다른 정보를 갖고 있는 feature map을 단순합 하는게
맞는지에 대한 문제점이 있었다.

 

해당 문제를 다루기 위해 EfficientDet은 각각의 input을 위한 학습 가능한 웨이트를 두는 Weighted Feature Fusion 
방법으로 BiFPN(bi-directional feature pyramid network)를 제안하였다.

또한, 모델의 Efficiency를 향상시키기 위해 다음과 같은 cross-scale connections 방법을 이용하였다.

FPN의 경우, Feature map의 resolution 차이를 Resize를 통해 조정한 후 합친다.

BiFPN의 경우, 모든 가중치의 합으로 가중치를 나눠준다. 이때 가중치들은 ReLU를 통과한 값으로 항상 0 이상이고 분모가 0이 되지 않도록 아주 작은 값 ε를 더해준다.

 

 

🔷 Model Scaling

더 좋은 성능을 위해서는 더 큰 backbone 모델을 사용해 detector의 크기를 키우는 것이 일반적이다.
EfficientDet은 accuracy와 efficiency를 모두 잡기 위해, 여러 constraint를 만족시키는 모델을 찾고자 하였다.
따라서 EfficientNet과 같은 compound scaling 방식을 제안하였다.

  • EfficientNet B0 ~ B6을 backbone으로 사용
  • BiFPN network
    • 네트워크의 width(= # channels)와 depth(= #layers)를 compound 계수에 따라 증가시킴

  • Box/class prediction network
    • Width는 고정, depth를 다음과 같은 식에 따라 증가

  • Input image resolution
    • Resolution을 다음과 같이 선형적으로 증가

이렇게 EfficientDet D0~D7이 만들어졌다.

 

Comments