原标题:推出 EfficientDet:助力可伸缩且高效的对象检测
文 / Google Research 软件工程师 Mingxing Tan 和研究员 Adams Yu
作为计算机视觉领域的核心应用之一,对象检测在如 机器人和 无人驾驶汽车等需要高准确率但计算资源有限的场景中变得日益重要。遗憾的是,当前的许多 高准确率检测器受制于这些约束。更重要的是,现实中的对象检测应用在各种平台上运行,这往往需要不同的资源。这样很自然就引出一个问题:如何设计精准、高效,同时又能适应各种资源限制的对象检测器?
在《 EfficientDet:助力实现可伸缩且高效的对象检测》 (EfficientDet: Scalable and Efficient Object Detection) (已被 CVPR 2020 接收)一文中,我们介绍了一系列可伸缩且高效的全新对象检测器。 EfficientDet以我们之前的可伸缩神经网络 ( EfficientNet) 成果为基础,结合了新型双向特征网络 (BiFPN) 和新的伸缩规则,从而实现了 SOTA 准确率,同时相较于之前最前沿的检测器,其体积缩小为原来的 1/9,计算量也大幅减少。下图展示了模型的整体网络架构:

EfficientDet 架构:以 EfficientNet 作为骨干网络,并采用新推出的 BiFPN 特征网络
模型架构优化
为了寻求提高计算效率的解决方案,我们对之前的检测模型开展系统化研究,而 EfficientDet 的灵感正源于我们在此期间的不懈努力。一般说来,对象检测器拥有三个主要组件: 骨干网 ,用于提取指定图像中的特征; 特征网络 ,用于将骨干网中多个级别的特征用作输入,然后输出一个融合特征列表,这些特征代表了图像的显著特点;最后是 类/盒网络 ,用于通过融合特征预测每个对象的类和位置。通过检查这些组件的设计选项,我们找到几个关键的优化方案来提升性能和效率:
先前的检测器 主要依靠 ResNet、ResNeXt 或 AmoebaNet 充当骨干网,与 EfficientNet 相比,要么性能逊色,要么效率较低。EfficientNet 骨干网的首次实施便实现了效率的大幅提升。例如,从使用 ResNet-50 骨干网的 RetinaNet 基线开始,我们的消融研究显示,仅使用 EfficientNet-B3 替换 ResNet-50 就能将准确率提高 3%,同时将计算量减少 20%。
另一种优化方案是提高特征网络的效率。先前的大部分检测器只是采用自顶向下 的特征金字塔网络 (FPN),而我们发现自顶向下的 FPN 天生会受到单向信息流的限制。替代 FPN 的方案(如 PANet)增加了自底向上的信息流,但代价是增加了计算量。最近,在进行神经架构搜索 (NAS) 研究时,我们发现了更为复杂的 NAS-FPN 架构。不过,虽然这种网络结构十分有效,但由于其不具规则性且针对特定任务进行了高度优化,因此很难适应其他任务。
为解决这些问题,我们提出了新的双向特征网络 BiFPN,它整合了 FPN/PANet/NAS-FPN 中的多级别特征融合思路,支持信息自顶向下和自底向上双向流动,同时采用规则的高效连接。

BiFPN 与先前特征网络的对比:BiFPN 支持特征(从低分辨率 P3 级别到高分辨率 P7 级别)自顶向下和自底向上双向重复流动
为进一步提升效率,我们提出了全新且快速的标准化融合技术。传统方法通常一视同仁地处理输入到 FPN 的所有特征,即便是不同分辨率级别。但我们注意到,分辨率级别不同的输入特征对输出特征带来的影响往往也不同。因此,我们对每个输入特征附加了权重,并允许网络学习每个特征的重要性。我们还将所有的常规卷积替换为成本较低的 深度可分离卷积。经由这一系列的优化,我们 进一步将BiFPN 的准确率提高 4%,并将计算成本缩减 50%。
我们将新的骨干网和 BiFPN 相结合,先制定出小型 EfficientDet-D0 基线,然后应用复合伸缩来获取 EfficientDet-D1 至 EfficientDet-D7。从 D0 到 D7,模型需要的计算成本逐步增高,同时也实现了更高的正确率,因此资源限制从 30 亿 FLOP 到 3000 亿 FLOP 不等。
模型性能
我们使用对象检测 领域广泛使用的基准数据集:COCO 数据集对 EfficientDet 进行了评估。EfficientDet-D7 达到了 52.2 的平均精度均值 (mAP),超出了以往最前沿的模型 1.5 个点,同时参数量减少了 400%,计算量减少了 940%。

在相同设置下,针对 COCO Test-Dev 数据集,EfficientDet 实现了 52.2 mAP 的最高水准,与以往最前沿的模型相比超出 1.5 个点;在相同的准确率限制下,与以往的检测器相比,EfficientDet 模型的体积缩小 400% 至 900%,所需计算量也减少 1300% 至 4200%
* 由于运算量高达了 3045B FLOP 所以没有在上图中画出。
我们对比了 EfficientDet 与先前模型间的参数大小和 CPU/GPU 延迟时间。在类似的准确率限制下,与其他检测器相比,EfficientDet 模型在 GPU 上的运行速度提高 2 至 4 倍,在 CPU 上的运行速度提高 5 至 11 倍。
虽然 EfficientDet 模型的设计主要目的是进行对象检测,但我们也针对其他任务(如语义分割)检测了其性能。为了执行分割任务,我们要对 EfficientDet-D4 稍作修改,将检测头和损失函数替换为分割头和损失,同时保留相同的伸缩骨干 网和 BiFPN。我们利用分割基准中广泛使用的数据集 Pascal VOC 2012,将此模型与以往最前沿的分割模型进行了对比。

在相同的设置下,无需 COCO 预先训练,EfficientDet 便在 Pascal VOC 2012 上达到了比 DeepLabV3+ 更好的效果,且计算量减少 980%
开源
鉴于 EfficientDet 出色的性能,我们期望它能够为未来的对象检测相关研究打下新的基础,并期待高准确率对象检测模型在诸多实际应用中切实发挥作用。因此,我们已将所有代码开源,并对此 GitHub 链接中的模型检查点进行了预训练。
致谢
感谢论文的共同作者 Ruoming Pang 和 Quoc V. Le。感谢 Daiyi Peng、Golnaz Ghiasi 和 Tianjian Meng 在基础架构方面提供的帮助,也感谢他们积极参与讨论。同时也要感谢 Adam Kraft、Barret Zoph、Ekin D. Cubuk、Hongkun Yu、Jeff Dean、Pengchong Jin、Samy Bengio、Tsung-Yi Lin、Xianzhi Du、Xiaodan Song 以及 Google Brain 团队。
如果您想详细了解 本文讨论 的相关内容,请参阅以下文档。这些文档深入探讨了这篇文章中提及的许多主题:
- 机器人 https://ai.googleblog.com/2020/03/visual-transfer-learning-for-robotic.html
- 无人驾驶汽车等 https://blog.waymo.com/2020/03/announcing-waymos-open-dataset-challenges.html
- 高准确率检测器 https://arxiv.org/abs/1906.11172
- EfficientDet:助力实现可伸缩且高效的对象检测 https://arxiv.org/abs/1911.09070
- EfficientDet https://github.com/google/automl/tree/master/efficientdet
- EfficientNet https://ai.googleblog.com/2019/05/efficientnet-improving-accuracy-and.html
- 深度可分离卷积 https://www.tensorflow.org/api_docs/python/tf/keras/layers/DepthwiseConv2D
- 先前的工作 https://ai.googleblog.com/2019/05/efficientnet-improving-accuracy-and.html
- 以往最前沿的模型 https://arxiv.org/abs/1906.11172
- GitHub 链接 https://github.com/google/automl/tree/master/efficientdet
责任编辑: