【EfficientDet入门系列】文章更新计划:
Part-1 EfficientDet简介
Part-2 项目实战(训练Pascal VOC 2012)
Part-3 项目实战(训练口罩检测)
Part-4 论文精读
Part-5 源码解读
本文旨在介绍EfficientDet的背景和算法性能(55.1 mAP!),其他文章敬请期待哦~
关注VX公众号“CV实战”,回复“efficientdet”,直接下载本文涉及的所有论文资料
目录
1. EfficientDet的前世今生
大名鼎鼎的EfficientDet发表于CVPR 2020,论文作者是Mingxing Tan等人(Google Research)。标题 EfficientDet: Scalable and Efficient Object Detection
EfficientDet的前世
按照EfficientDet算法背景主要有:
- EfficientNet
- PANet
- RetinaNet
(1)EfficientNet
Mingxing Tan(即EfficientDet的作者)等人在ICML2019提出了EfficientNet,当时碾压各类算法,霸榜ImageNet。后经作者不断优化,在现在看来其实力仍居前列。
图1 Image Classification on ImageNet的排行榜(前三名)
(数据来源:https://www.paperswithcode.com/sota/image-classification-on-imagenet)
排行榜的前三名有两名使用了EfficientNet框架,其中使用NoisyStudent 训练的EfficientNet目前位于第3名,第二名是Facebook团队在原EfficientNet框架上提出的方法,这两者性能非常接近。另外,在很多Kaggle竞赛中,EfficientNet常作为主干网络。
(2)PANet
PANet(CVPR2018)作者来自香港中文、北大、商汤与腾讯优图。论文标题:
Path Aggregation Network for Instance Segmentation
图2 PANet结构图
PANet主要任务是实例分割,在原FPN(top-down)的基础上引入了bottom-up(图中红框标出),提升了不同网络层级中目标的位置信息和语义特征的聚合能力。PANet是论文中实例分割网络的统称,对于包含top-down和bottom-up两条路径的FPN结构,有的资料中称为PAFPN。EfficientDet中的BiFPN来源于对PANet(PAFPN)的改进。
(3)RetinaNet
RetinaNet由Facebook AI Research(FAIR)团队(包括Kaiming He、Piotr等大神)于2018年提出。事实上,该篇论文最初的目的是研究单阶段目标检测器中存在的类别不均衡问题,提出了著名的Focal Loss。为了验证Focal Loss的有效性,作者设计了单阶段的目标检测网络RetinaNet,其被EfficientDet作为检测框架。所以,若想更好的理解EfficientDet源码,可深入学习RetinaNet算法(主要是Focal Loss和Anchor生成方法,后续文章中会分享)。另外,人脸检测RetinaFace也使用了RetinaNet框架。
EfficientDet的今生
EfficientDet 文章无论是论文还是源码更新较为频繁,可见作者在积极维护,在COCO上的AP等指标也在不断的刷新。
图3 EfficientDet arXiv论文更新记录
图4 EfficientDet GitHub commits记录
(数据来源:https://github.com/google/automl/graphs/commit-activity)
图5 EfficientDet COCO test-dev2017测试结果
这里大家要注意,上表中的AP数据是单尺度(single scale)下的测试结果。原始的EfficientDet包括8种不同复杂度的模型D0~D7,后来作者又更新了D7x版本,进一步刷新了AP指标 55.1。我们来看下EfficientDet在COCO test-dev上的排名。
图6 Object Detection on COCO test-dev的排行榜(前三名)
(数据来源:https://www.paperswithcode.com/sota/object-detection-on-coco)
2. EfficientDet网络组成
本文主要对EfficientDet进行简要介绍,后续文章将继续解读论文和源码。
主要贡献:
(1)提出Bi-directional feature pyramid network (BiFPN)
(2)提出根据分辨率、深度、宽度对主干网络(backbone)、特征网络(feature network)、矩形框/类别预测网络进行缩放的方法,得到了一系列的目标检测网络D0~D7x
解决的挑战:
(1)高效的多尺度特征融合难题:为此论文设计了BiFPN
(2)模型缩放:论文采用了EfficientNet(本身支持多种系列)以及特征网络超参数缩放方法
网络结构:
如上文介绍,EfficientDet的目标检测框架是RetinaNet,结构对比如下:
| 网络名称 | 主干网络(backbone) | 特征网络(Feature Network) |
|---|---|---|
| RetinaNet | ResNet | FPN |
| EfficientDet | EfficientNet | BiFPN |
图7 EfficientDet网络结构图
(数据来源:https://arxiv.org/abs/1911.09070)
EfficientDet主要包括EfficientNet(主干网络)、BiFPN(特征网络),类别(class)和矩形框(box)预测网络。其中anchor的生成使用了RetinaNet的方法;特征网络部分是多个BiFPN层组成,其层数与内部卷积滤波器通道数根据D0~D7x调整,缩放规则如下
(数据来源:https://arxiv.org/abs/1911.09070)
展示一下EfficientDet-D0的目标检测效果:
(数据来源:https://github.com/google/automl/tree/master/efficientdet)
题外话
虽然最近大火的YOLOv4/YOLOv5已经超越了EfficientDet D0~D3,但YOLOv4/YOLOv5的调参痕迹严重,且使用了很多技巧,若想在工程中使用且对mAP指标要求不太高的情况下推荐使用YOLOv4/YOLOv5。
EfficientDet没有多少花哨的技巧,模型的超参数无严重的调参,是一种比较朴素的目标检测算法。若想从事目标检测研究或对mAP指标要求较高的情况下,建议使用EfficientDet。
以上仅是个人看法,如有不妥,欢迎指教~
EfficientDet
论文地址:https://arxiv.org/abs/1911.09070
官方源码:https://github.com/google/automl/tree/master/efficientdet
关注公众号“CV实战”,回复“efficientdet”,直接下载本文涉及的所有论文资料
最后,本公众号后续会逐步分享EfficientDet系列文章,欢迎大家持续关注