EfficientDet: Scalable and Efficient Object Detection

一、摘要

本文系统地研究用于目标检测的神经网络体系结构设计选择,并提出一些关键的优化方法以提高效率。首先,我们提出了一种加权的双向金字塔网络 (BiFPN),可以轻松快速地进行多种尺度特征融合;第二,我们针对所有的backbone,特征网络和框/分类预测网络提出了一种可以同时统一缩放分辨率、深度和宽度的复合缩放方法。基于这些优化方法和更好的backbone,我们开发了一个新的目标检测器系列—EfficientDet,在广泛的资源条件限制下,始终能够获得比现有技术更好的效率。特别是单模型和单尺度下,EfficientDet-D7达到了SOTA—55.1AP,在COCO数据集上77M参数量和410BFLOPS。比之前的模型参数量少4~9倍,FLOPS少13-42倍。

二、介绍

最近几年在目标检测领域取得了巨大的进步,同时SOTA目标检测器也变得越来越昂贵。例如最新的 AmoebaNet-based NAS-FPN检测器需要167M的参数和3045BFLOPS(超过RetinaNet30倍左右)才实现了SOTA的准确率。庞大的模型尺寸和昂贵的计算成本阻碍了它们在许多实际应用中的部署,例如机器人技术和无人驾驶汽车,在这些应用中,模型尺寸和延迟受到很大限制。考虑到这些现实世界中的资源限制,目标检测的模型效率变得越来越重要。
之前已经有许多工作旨在开发更有效的检测器架构,例如一些一阶段(SSD,RetinaNet,yolo系列)和anchor-free(Cornernet,FCOS,CenterNet)以及压缩现有模型。虽然这些方法想要实现更高的效率,它们通常会牺牲准确率。大部分之前的工作只着重于特定或少量资源需求,但是从移动设备到数据中心的各种实际应用程序通常需要不同的资源约束。
一个很自然的问题,是否有可能在各种资源限制条件下构建具有更高准确性和更高效率的可扩展检测结构(例如从3B-300B FLOPS)。这篇文章旨在通过系统地学习各种各样的检测器架构的设计选择。基于一阶段检测器的模板,我们为backbone,特征融合和分类/box网络检验了各种设计选择,并且确定了两个主要挑战:
挑战1:搞笑的多尺度特征融合—自从FPN出现以后,FPN被广泛用到了特征融合当中。最近,PANet,NAS-FPN和一些其他研究为跨尺度特征融合提出了很多网络。虽然在融合不同的输入特征时,大部分以前的工作都没有很大的差别,只是简单的把它们加起来。然而,虽然这些不同的输入特征有着不同的分辨率,我们观察到它们对融合的输出特征有着不同的影响。为了解决这个问题,我们提出了一种简单而且高效的加权双向金字塔网络(BiFPN),引入可学习的权重以学习不同输入特征的重要程度,同时反复应用自上而下和自下而上的多尺度特征融合。
挑战2:模型缩放—虽然之前的工作主要依赖于大的backbone网络或者更大的输入图片尺寸来获得更好的准确率,我们发现在兼顾准确性和效率的同时,扩大特征网络和box/class预测网络也很关键。我们为目标检测器提出了一种复合缩放方法,同时扩大了backbone,特征网络和box/class预测网络的分辨率/深度/宽度。
最后我们发现,最近出现的EfficientNets比以前常用的backbone网络有着更高的效率。结合 EfficientNet backbones和我们提出的BiFPN以及复合缩放方法,我们提出了一个新的目标检测器系列—EfficientDet。与以前的物体检测器相比,它以更少的参数和FLOP持续获得更高的精度。图1和图4展示了在COCO数据集上的性能对比。在相似的准确度限制下,EfficientDet用了比YOLOv3少28倍的FLOPS,比RetinaNet少30倍的FLOPS,比最近的NAS-FPN少19倍的FLOPS。在单个模型和单个特使时间范围内,我们的EfficientDet-D7实现了SOTA mAP,52M参数量和326BFLOPS,比之前最好的模型小4倍,FLOPS少9.3倍,准确率仍然高0.3mAP。我们的EfficientDet模型比之前的检测器在GPU上快3.2倍,在CPU上快8.1倍,如图4和表2所示。
我们的贡献如下:
1.我们提出了BiFPN模型,一个可以更加轻松和快速完成多尺度特征融合的双线性特征网络。
2.我们提出了一个新的符合缩放方法,可以同时扩大backbone,特征网络,box/class 预测网络和分辨率。
3.基于BiFPN和复合缩放,我们开发了EfficientDet,即在广泛的资源条件限制下准确率和效率都显著提升的一个新的检测器系列。

三、BiFPN

在这一节中,我们首先提出多尺度特征融合问题,然后介绍我们BiFPN的两个主要的两个主要想法:高效的双向跨尺度链接和加权特征融合。

3.1 提出问题

多尺度特征融合是为了合并在不同分辨率的特征,这里给定一系列的多尺度特征Pin=(Pinl1,Pinl2,…),这里Pinli表示特征在level li,我们的目标是找到可以有效汇总不同特征并输出一系列新特征的变换f:Pout=f(Pin)。作为一个具体的例子,图2(a)展示了常规的自上而下的FPN,它有level3-7的输入特征Pin=(Pin3,…,Pin7),这里Pini表示一个特征level有着1/2i输入图像大小的分辨率。例如:如果图像输入大小是640x640,则Pin3表示特征level3(640/23=80)分辨率是80x80。同理leve7的分辨率是5x5。常规的FPN以自上而下方式融合特征。

3.2 跨尺度链接

常规的自上而下的FPN固有地受到单向信息流的限制。为了解决这个问题,PANet增加了一个额外的自下而上的路径来聚合网络,如图2(b)所示。最近NAS-FPN利用神经架构搜索来寻找更好的跨尺度特征网络拓扑,但是搜索和找到网络的过程需要数千个GPU/时并且很不规则,很难解释并且修改,如图2(b)所示。
通过研究Table4中的这3个网络的性能和效率,我们发现PANet比FPN和NAS-FPN可以取得更好的准确率,但是需要耗费更多的参数和计算量。为了改进模型的效率,这篇文章为跨尺度链接提供了几种优化方法。首先,我们移除这些只有一个输入边的节点,我们的直觉很简单,一个节点如果只有一个输入边而没有特征融合,它将会对想要融合不同特征的特征网络贡献很小。这样就得到了一个简化的PANet,如图2(e) 所示,第二,如果它们在相同的level上,我们将会从原始的输入节点到输出节点添加一条额外的边。为了在不增加成本的情况下融合更多的特征,如图2(f)所示。第三,不像PANet一样只有一个自上而下和自下而上的通路,我们将每个双向(自上而下和自下而上)路径视为一个特征网络层,并重复同一层多次以实现更多高级特征融合。在4.2节中我们将讨论如何针对不同的资源限制使用复合缩放方法来决定层的数量,有了这些优化措施,我们把这个新的网络叫做,双向特征金字塔网络(BiFPN)。如图2(f)和3所示。

3.3 加权特征融合

当融合多个不同分辨率的多个输入特征时,一个常见的方法是首先把它们resize到同一分辨率下然后再加起来。金字塔注意力网络引入全局自注意力上采样以恢复像素位置。
之前的特征融合方法将所有的输入特征同等对待。然而,我们观察到因为不同的输入特征其分辨率不同,它们通常对输出特征的贡献度不相等。为了解决这个问题,我们提出在特征融合时为每个输入增加一个额外的权重,并且让网络来学习每个输入特征的重要性,基于这个想法,我们考虑了3种加权融合方法:
Unbounded fusion

其中wi是一个可学习的权重,可以时一个标量(每个特征图),一个向量(每个channel),或者是一个多维度的张量(每个像素)。我们发现一个scale可以以最小的计算成本达到与其他方法相当的精度。虽然这个权重标量是无边界的,可能会导致训练不稳定。因此,我们采用权重归一化来限制每个权重的值范围。

Softmax-based fusion

其中通过在每个wi之后添加一个relu来确保wi>=0,并且e=0.0001是一个很小的值用来避免数值不稳定。相似的,每个归一化的值也会落到[0,1]区间内,虽然这里没有softmax的操作,但是它更高效。我们的消融研究显示这个快速的融合方法和给予softmax的融合有着相似的学习行为和准确度,但是在GPU上要快30%(Table6)。
我们最终的BiFPN整合了双向跨尺度链接和快速归一化融合,作为一个具体的例子,我们在BiFPN的level6描述了这两种融合,如figure 2(d)所示。
其中P6td表示level6自上而下路径上的中间特征,P6out表示level6在自下而上的路径上的特征输出,所有的其他特征都使用相同的方法构建。值得注意的是,为了更进一步地优化效率,我们用深度可分离卷积来进行特征融合,并且在每一个卷积后增加BN和激活函数。

四、EffcientDet

在这一节中我们会讨论EfficentDet的网络结构和一种新的复合缩放方法

4.1.EffcientDet网络结构

图3展示了整个EffcientDet的网络结构,其很大程度上遵循了一级探测器的范例,我们使用ImageNet数据集的预训练网络 EfficientNets作为backbone。我们提出的BiFPN作为特征网络,它从backbone的level3-7获取特征(P3,P4,P5,P6,P7)并且重复使用自上而下和自下而上的双向特征融合。这些融合后的特征被送入了分类和box回归网络来生成目标类别和预测的bondingbox。分类和box回归网络权重在所有level的特征之间共享。

4.2 复合缩放

为了优化准确率和效率,我们想要构建一个可以满足各种资源限制的模型。这里的关键挑战是如何扩大基准EfficientDet模型。
先前的工作大多通过采用更大的骨干网来扩大基线检测器(例如 ResNeXt和AmoebaNet),使用更大的输入图像或堆叠更多的FPN层。这些模型通常不高效而且仅仅关注一个或者有限的缩放尺寸。最近的工作通过联合扩大网络宽度,深度和输入分辨率的所有维度,在图像分类上显示了卓越的性能。受这些工作的启发,我们为目标检测提供了一个信息复合缩放方法。 只是用一个复合系数 φ来同时扩大backbone,BiFPN,class/box网络和分辨率的所有维度。因此我们使用了一个基于启发式的缩放方法,但仍然遵循共同扩大各个维度的主要思想。
backbone network:我们重用了EfficientNet-B0到B6相同的宽度/深度缩放系数,因此我们可以轻松地重用其ImageNet预训练的检查点.
BiFPN network:我们线性增加 BiFPN的深度Dbifpn(#layers),因为深度需要向下取整。对于BiFPN的快读Wbifpn(#channel)和Efficientnet相同。特别的,我们对值{1.2、1.25、1.3、1.35、1.4、1.45}的列表执行网格搜索,然后选择最佳值1.35作为BiFPN宽度缩放因子。最后,BiFPN的宽度和深度由以下方程式缩放:

Box/class prediction network:我们将其宽度固定为与BiFPN相同(例如:Wpred=Wbifpn),但是使用如下公式线性增加其深度(#layer)。

Input image resolution:因为特征level3-7都在BiFPN中被使用,输入的分辨率必须能被27=128整除,所以我们使用如下公式线性增加分辨率。

遵循具有不同φ的方程1,2,3,我们开发了 EfficientDet-D0 (φ = 0) to D7 (φ = 7),如Table1所示,这里 D7和D7x有着相同的 BiFPN和head。但是D7使用了更高的分辨率而D7x使用了更大的backbone网络以及多一个特征level(从P3—P8)。值得注意的是,我们的复合缩放是基于启发式的可能不是最优的,但是我们将展示这个简单的缩放方法比起其他的单维度的缩放方法可以更加显著地改进模型的效率,如图6所示。

五、实验

5.1 EfficientDet for Object Detection

在COCO数据集上对EffcientDet模型进行评估,每个模型都使用带有动量0.9的SGD优化器训练切权重衰减的值为4e-5,学习率先从0线性增加到0.16,然后使用余弦衰减规则进行退火。Synchronized batch norm被添加到了每个卷积层后且decay为0.99,epsilon为1e-3。使用SiLU(swish-1)激活函数,且指数平均移动衰减因子为0.9998。我们也使用常用的focal-loss损失函数,其中 α = 0.25,γ = 1.5,宽高比为{1/2,1,2}。在训练期间,我们使用水平翻转和 scale jittering [0.1, 2.0],这是指在裁剪前随机将图像缩放到0.1倍到2倍原始图像大小的尺寸。我们使用soft-NMS来评估模型。

六、消融实验

6.1 Disentangling Backbone and BiFPN

因为EfficentDet使用了一个强大的backbone和一个新的BiFPN,我们想知道它们各自对模型效率和准确率的提升做了多少贡献。Table4使用了RetinalNet的设置比较了backbone和BiFPN的影响。首先从使用ResNet50的backbone和自上而下的FPN开始,我们首先将backbone换成了EfficientNet-B3,在参数和FLOPS略少的情况下准确率提升了3AP。通过将FPN替换成BiFPN,在参数量大大减少的同时准确率提升了4AP。这些结果表明EfficientNet backbone和BiFPN对我们最终的模型都很重要。

6.2 BiFPN Cross-Scale Connections

Table5展示了图2中的不同的跨尺度链接的特征网络的精确度和模型复杂度。值得注意的是,原始的FPN和PANet只有一个自上而下或者自下而上的流,但是为了公平的比较,我们把它们复制了多次并且使用深度可分离卷积替换掉原来的卷积(和BiFPN一样)。我们用了相同的backbone和class/box预测网络,并且所有的实验上使用相同的设置去训练。我们可以看到,传统的自上而下的FPN固有地受到单向信息流的限制,因此准确性最低。虽然重复的FPN+PANet实现了比NAS-FPN稍微好一点的准确率,它也需要跟多的参数和FLOPs。我们的BiFPN和重复的FPN+PANet实现了相似的准确率,但是用了更少的参数和FLOPs。使用了加权特征融合后,我们的BiFPN使用更少的参数和FLOPs实现了更高的准确率。

6.3 Softmax vs Fast Normalized Fusion

如3.3章节讨论,我们提出了快速归一化特征融合方法去除了昂贵的softmax的同时保留了归一化权重的优势。Table 6使用3个不同模型大小的检测器比较了softmax和快速归一化融合方法。如结果所示,我们的快速归一化融合方法和基于softmax的融合方法达到了相似的精确度,但是在GPU上要快1.26-1.31倍。为了更深入的理解基于softmax和快速归一化融合的行为,图5展示了从EfficientDet-D3中的BiFPN层中随机选择的三个特征融合节点的学习权重。值得注意的是,基于softmax融合的归一化权重和快速归一化权重对于所有的输入,加起来都是1。有趣的是,归一化的权重在训练期间变化的很快,表示不同的特征对于特征融合的贡献是不一样的。尽管变化迅速,我们的快速标准化融合方法对于三个节点始终显示出与基于softmax的融合非常相似的学习行为。

6.4 Compound Scaling

如4.2章节中讨论,我们采用一种复合缩放方法来共同放大backbone,BiFPN和class/box预测网络的深度/宽度/分辨率的所有维度。图6将我们的复合缩放与其他可扩展分辨率/深度/宽度的单个维度的替代方法进行了比较。即使是从相同的baseline检测器开始,我们的复合缩放方法比其他方法有着更高的效率,通过更好的平衡不同架构的维度展示的共同缩放的优势。

7. Conclusion

在这篇文章中,我们为高效的目标检测系统地学习了网络架构设计的选择,并且为了提高效率和准确率提出了BiFPN和一种可定制的复合缩放方法。基于这些优化方法,我们创造了一个新的系列的检测器EfficientDet。在广泛的资源限制条件下,始终能够获得比现有技术更好的准确性和效率。特别是,与以前的对象检测和语义细分模型相比,我们扩展后的EfficientDet可以以更少的参数和FLOP达到最高的准确性。

EfficientDet介绍相关推荐

  1. EfficientDet解读

    简介 这篇发表于 CVPR2020 的检测论文不同于大火的 anchor-free,还是基于 one-stage 的范式做的设计,是 ICML2019 的 EfficientNet 的拓展,将分类模型 ...

  2. 目标检测-EfficientDet算法介绍

    文章与视频资源多平台更新 微信公众号|知乎|B站|头条:AI研习图书馆 深度学习.大数据.IT编程知识与资源分享,欢迎关注,共同进步~ 1. 引言 文章:EfficientDet: Scalable ...

  3. PyTorch 版 EfficientDet 比官方 TF 实现快 25 倍?这个 GitHub 项目数天狂揽千星

    来源:机器之心 本文约3646字,建议阅读8分钟. 本文介绍在 Github 项目中,开发者 zylo117 开源了 PyTorch 版本的 EfficientDet,速度比原版高 20 余倍.如今, ...

  4. PyTorch版EfficientDet比官方TF实现快25倍?这个GitHub项目数天狂揽千星

    点上方蓝字视学算法获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia 计算机视觉联盟  报道  | 公众号 CVLianMeng 转载于 :机器之心 EfficientDe ...

  5. ​一文读懂EfficientDet

    一文读懂EfficientDet. 今年年初Google Brain团队在 CVPR 2020 上发布了 EfficientDet目标检测模型, EfficientDet是一系列可扩展的高效的目标检测 ...

  6. 谷歌开源EfficientDet:实现新SOTA,又快又准的目标检测器

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 来源:机器之心@微信公众号 什么检测器能够兼顾准确率和模型效率?如何才能实现? 去 ...

  7. 【深度学习】数形结合的图像处理(文末介绍了一种新型网络)

    [深度学习]数形结合的图像处理(文末介绍了一种新型网络) 文章目录 [深度学习]数形结合的图像处理(文末介绍了一种新型网络) 前言: OpenCV介绍 1 读取图像 2 修改图像尺寸 3 矩阵操作处理 ...

  8. 这三篇论文开源了!何恺明等人的PointRend,Hinton组的SimCLR和谷歌大脑的EfficientDet...

    前言 近期开源的项目真不少,一方面CVPR 2020录用结果放出,所以大量的CVPR 2020论文以及相应的代码也逐渐放出.本文将重点介绍近期比较值得关注的3个开源项目(PointRend.Effic ...

  9. pytorch test单张图片_PyTorch版EfficientDet比官方TF实现快25倍?这个GitHub项目数天狂揽千星...

    EfficientDet 难复现,复现即趟坑.在此 Github 项目中,开发者 zylo117 开源了 PyTorch 版本的 EfficientDet,速度比原版高 20 余倍.如今,该项目已经登 ...

  10. 令人拍案叫绝的EfficientNet和EfficientDet

    点击我爱计算机视觉标星,更快获取CVML新技术 本文经作者MoonSmile授权转载,原文地址: https://zhuanlan.zhihu.com/p/96773680 本文介绍谷歌发表于 ICM ...

最新文章

  1. KMP-next数组
  2. 最优化——线性规划中最大规划和最小规划之间的转换
  3. powershell XML操作
  4. unshift() 方法将一个或多个元素添加到数组的开头,并返回新数组的长度
  5. uniDBGrid导入数据库(转红鱼儿)
  6. php 添加水印, 格式转换, 变换大小 Watermark, png2jpg, resize
  7. 树形结构递归_递归和匿名函数
  8. LeetCode 169. 多数元素 (哈希映射|投票算法)
  9. MySQL查询当天、本周,本月,上一个月的数据
  10. mysql备份的sql语句_Mysql主从备份和SQL语句的备份
  11. 我不是来约架,我只是请他们说几句实话——QCon上海2015编程语言专题前瞻
  12. Python实现矩阵所有元素之和及某一列之和和某一行之和??
  13. H264视频压缩算法简析
  14. 虚拟机Linux终端命令格式
  15. 公司网站被跳转到其他网站被提示该站点可能受到黑客攻击,部分页面已被非法篡改
  16. linux内核网络协议栈--netif_receive_skb()函数(八)
  17. redhat linux rsh设置
  18. Matlab 基于IRLS的加权Cauchy稳健估计算法之二
  19. 苹果手机图片如何同步鸿蒙,教你将照片批量导入iOS设备
  20. Tkinter编程应知应会(20)-主菜单

热门文章

  1. Spring 实战-第四章-4.3 使用注解引入新方法 Introductions@DeclareParents
  2. Windows 10 安装Jenkins 图文教程
  3. 2018界面情感化设计,拒绝冷冰冰的人机交流
  4. 代码实现-pack_padded_sequence()与pad_packed_sequence()
  5. Windows桌面任务栏应用图标变白怎么办?
  6. B2C是什么意思?什么是B2C
  7. MySQL基本架构示意图
  8. android编译生成apk文件怎么打开,android studio生成apk在哪?
  9. 2021厦大信息学院夏令营经历
  10. word 的使用 —— 快捷键(分节符 分页符 分栏符)