안녕하세요! 오늘은 랩미팅 중 교수님께서 추천해주신 모델인 EfficientDet 을 리뷰해볼려고 합니다. Google Brain팀에서 publish한 논문이며, Code도 사용할 수 있도록 GitHub에 올려있습니다.
Introduction
EfficientDet은 이름만큼이나 현재 DataseObject Detection on COCO minival dataset에서 Extra Traning data 없이 성능 측정한 모델 중 1위를 차지할 정도로 적은 연산량(FLOPS)과 정확도를 모두 잡은 Efficient한 Network인데요. 위 single-model single-scale로 진행한 성능 비교 실험에서도 1위 mAP를 달성하며 SOTA 를 갱신했다고 합니다.
Challenges
Challenge1. Efficient multi-scale feature fusion
"different input features are at different resolutions"
대표적인 One stage detector은 Feature Pyramid Network(FPN)을 사용하고 있지만, 기존 모델들은 cross-scale feature fusion network structure을 개발해왔습니다. 본 논문에서는 input feature들 각 해상도가 다르기 때문에 output feature에 기여하는 정도를 다르게 가져가야 함을 지적하며, weighted bi-directional FPN(BiFPN) 구조를 제안하였습니다.
Challenge 2: model scaling
기존 방법들은 accuracy를 위해 거대한 backbone networks이나 큰 input image size에 의존했지만 본 논문에서는 Compound Scaling을 제안하여 높은 성능을 달성했습니다.
Compound Scaling 기법: 모델의 크기와 연산량를 결정하는 요소(input resolution, depth, width)을 동시에 고려하여 증가시키는 방법
Contribution
✔️ Weighted bidirectional feature network (BiFPN) 제안
✔️ Object Detection에 Compound Scaling 적용
✔️ BiFPN과 Compound Scaling을 접목하여 EfficientDet 제안
BiFPN
1. Cross-Scale Connections
✔️Feature network design
FPN(Feature Pyramid Network)를 이용한 방법들입니다. (b) PANet에서는 top-down과 bottom-up path를 한 번씩만 사용한 반면, 본 논문에서는 이러한 구조를 여러 번 반복하여 사용을 하였습니다.
(a) FPN
- 전통적인 FPN 구조
(b) PANet
- bottom-up pathway를 FPN에 추가
(c) MAS-FPN
- AutoML의 Neural Architecture Search를 FPN 구조에 적용
- 불규칙적 구조
(d) Fully-connected FPN (본 논문에서 제안한 방식)
- FPN가 FC된 형태
(e) Simplified PANet (본 논문에서 제안한 방식)
- Input edge가 1개인 node들은 기여도가 적을 것 → 제거
(f) BiFPN (본 논문에서 제안한 방식)
- 보라색 선처럼 같은 scale에서 edge를 추가하여 더 많은 feature들이 fusion되도록 구성을 한 방식
✔️Ablation Study
(Table3)
- 같은 backbone(EfficientNet-B3)에서 BiFPN의 성능이 가장 높음
- 가장 높은 mAP, 가장 적은 Parameter수와 그에 따른 가장 적은 연산량(FLOPS)
(Table4)
- 여러 Feature Network 방식에 따른 성능 변화를 분석한 결과
- BiFPN을 사용하였을 때 가장 좋은 성능
2. Weighted Feature Fusion
✔️Conventional Feature Fusion vs Weighted Feature Fusion
- 전통적 Feature Fusion: FPN에서 서로 다른 resolution의 input feature들을 합칠 때, 일반적으로는 같은 해상도가 되도록 resize를 시킨 뒤 합치는 방식
- 제안하는 Feature Fusion: input feature에 가중치를 주고, 학습을 통해 가중치를 배울 수 있는 방식 → Weighted Feature Fusion
✔️Weighted Feature Fusion
Learnable weight은 scalar (per-feature), vector (per-channel), multi-dimensional tensor (per-pixel)가 있는데 정확도와 연산량 측면에서 효율적이기 때문에 Scalar를 사용했다고 합니다.
👎 기존 방식
- Unbounded fusion: unbounded 되어있기 때문에 학습에 불안정성을 유발
- SoftMax-based fusion: GPU 하드웨어에서 slowdown을 유발
👍 제안 방식: Fast normalized fusion
- weight들은 ReLU를 거치기 때문에 non-zero임이 보장
- 분모가 0이 되는 것을 막기 위해 0.0001 크기의 ε 추가
- Weight 값이 0~1사이로 normalize가 되는 것은 SoftMax와 유사
✔️Ablation Study
(Figure 5)
- Weight 값이 0~1사이로 normalize가 되는 것은 SoftMax와 fast normalized feature fusion은 유사
- input 1과 input 2의 weight를 training step에 따라 plot한 결과
- 학습을 거치면서 weight가 빠르게 변화
- 각 feature들이 각자 다르게 output feature에 기여
(Table 5)
- SoftMax fusion과 Fast Fusion을 비교한 결과
- Fast Fusion을 사용하면 약간의 mAP 하락은 있지만 28%-30%의 속도 향상(Speedup)
EfficientDet
✔️EfficientDet Architecture
본 논문은 BiFPN을 기반으로 EfficientDet 이라는 One-Stage Detector 구조를 제안했습니다.
- Backbone: ImageNet-pretrained EfficientNet
- Feature Network: BiFPN, level 3-7 feature에 적용
✔️Compound Scaling
input의 resolution과 backbone network의 크기를 늘렸으며, BiFPN과 Box/class network 도 동시에 키워줬습니다. 각 network마다 어떻게 키워줬는지는 수식 (1)~(3)에서 확인할 수 있습니다.
- Backbone: ImageNet-pretrained EfficientNet-B0 ~ B6
Experiments
Single-model single-scale 실험 결과 COCO 데이터셋에서 가장 높은 mAP 달성했으며, 특히 다른 모델들에 비해 연산 효율이 매우 높은 것을 알 수 있습니다. (a) 모델의 크기(parameter 수)와 (b), (c) Inference Latency를 측정한 그래프에서도 모델 크기도 작고, Latency도 낮음을 알 수 있습니다.
Conclusion
결론적으로 본 논문에서는 weighted bidirectional feature network와 customized compound scaling method를 제안했습니다. 또한, EfficientDet이라는 detector family를 만들었고, 매우 적은 parameter개수와 연산량만으로 accuracy 측면에서 SOTA를 달성하였습니다.
댓글