原论文

摘要

模型效率在计算机视觉中越来越重要。本文我们系统地研究了目标检测的神经网络框架,并提出了几个有利于提高模型效率的关键的优化点。首先,我们提出了一个加权双向特征金字塔网络(BiFPN),可以又快又简单地实现多特征融合;其次我们提出了一种复合缩放方法,可以同时缩放所有主干网络、特征网络和框预测/类别预测网络的分辨率、深度和宽度。基于这些优化以及更好的主干网络,我们开发了一个新的目标检测网络系列,EfficientDet,虽然现如今资源有限(CPU、GPU处理速度、数据集缺失等吧,自我理解,有误请更正),但性能比其他网络要好。特别对于一阶段网络和单个尺寸,我们EfficientDet-D7在COCO测试集的精度最高,AP为55.1%,参数量为77M,FLOPs为410B,参数量比之前的检测网络小了4-9倍,且FLOPs少了13-42倍。

引言

近几年,目标检测的精度越来越高;同时,性能最好的检测器花费也越来越大(个人理解应该是计算量大什么的吧)。比如,最新的基于NAS-FPN的AmoebaNet检测器的参数量为167M,FLOPs为3045B(比RetinaNet高30倍),才能达到最好的检测效果。大规模的模型尺寸以及昂贵的计算成本是使这些模型运用在实际生活中的一大阻力,例如机器人,无人汽车等。考虑到这些现实因素的限制,模型效率对于目标检测越来越重要。

现已有很多有关提高检测效率的研究,比如一阶段和Anchor-free检测器或压缩模型。尽管这些方法可以达到更好的效率,但都损失了检测精度。另外,以前大多数研究工作仅仅关注某个特定的或者范围较小的应用领域,但真实世界中有太多的应用领域,从移动设备到数据中心,往往会需要不同的资源。

一个很现实的问题:在广泛的资源限制下(比如从3B到300B的FLOPs),能否搭建一个精度高、效率高的监测模型?本文通过系统地研究不同检测模型结构来解决这个问题。基于单阶段检测器,我们研究了主干网络、特征融合以及类/框网络,主要由解决两个难题。

Challenge 1:高效的多尺度特征融合。借鉴文献[23],FPN已经广泛应用到多尺度融合中。最近,PANet,NAS-FPN和其他研究成果开发了更多用于跨尺度特征融合的网络架构。当融合不同输入特征时,先前很多研究工作只是简单的将这些特征相加,并没有考虑区分问题;可是,因为这些不同特征的分辨率不同,我们发现不同分辨率的特征对已融合的输出特征的贡献是不同的,为了解决这一问题,我们提出了一种简单高效的加权双向特征金字塔网络(BiFPN),通过引入可学习权重学习不同输入特征的重要程度,然后重复应用到自顶向下和自下而上的多特征融合。

Challenge 2:模型缩放。先前的研究工作主要依赖更大的主干网络或者输入更大尺寸的图像,从而获得更高的检测精度。我们发现扩大特征网络和框/类预测网络对网络精度和效率也非常重要。借鉴文献[39],我们提出了用于目标检测的复合缩放方法,可以同时缩放所有主干网络、特征网络以及框/类预测网络的分辨率、深度和宽度。

最后,我们还发现EfficientNets比之前常用的主干网络的效率更高。将EfficientNet主干网络和本文提出的BiFPN和复合缩放结合起来,开发了一系列新的目标检测器,命名为EfficientDet,比之前的目标检测器的参数和FLOPs更少,但精度更高。在COCO数据集上的训练比较结果见图1和图4。在相似精度的限制下,本文EfficientDet的FLOPs比YOLOv3小28倍,比RetinaNet小30倍,比最近提出的基于NAS-FPN的ResNet小19倍。特别地,在单一模型和单一测试时间尺度的情况下,EfficientDet-D7达到了目前最高的精度:AP=55.1%,参数为77M,FLOPs为410B,比之前最佳的检测器高出4个百分比的AP,而且参数量小2,7倍,FLOPs小7.4倍。EfficientDet在GPU或CPU撒花姑娘的运行速度也比之前的检测器快4倍到11倍。

通过简单的调整,我们还证明了本文单阶段单尺寸的EfficientDet在Pascal VOC 2012语义分割上实现了FLOPs=18B,mIOU=81.74%的效率。比DeepLabV3+精度高出1.7%,FLOPs小9.8倍。

2 相关工作

单阶段检测器:现有的目标检测器主要是根据是否有生成ROI(region-of-interest,感兴趣区域)这一步骤分为二阶段(有)和一阶段(无)检测器。二阶段检测器更灵活、更准确;但通过于先生称的anchor,单阶段检测器更简单、更高效。最近,单阶段检测器因其优点备受关注。本文,我们主要研究一阶段检测器,通过优化的网络架构实现更高的效率和精度。

Model Scaling:为了获得更高的精度,通常使用更大的主干网络(比如,从mobile-size模型和ResNet增大到ResNeXt和AmoebaNet)或者增大输出图像尺寸(比如,从512×512增大到1536×1536)来放大baseline检测器。最近一些研究表明,增大通道尺寸和重复利用特征网络也可以提高精度。这些修改尺寸的方法大多集中在单个或有限的缩放维度上。最近,文献[39]通过组合网络宽度、深度和分辨率,证明了可以大大提高模型效率。本文提出的Compound Scaling方法主要借鉴了文献[39]。

3 BiFPN

本节首先阐述了多尺度特征融合问题,然后介绍了BiFPN的主要思想。

3.1 问题阐述

多尺度特征融合即融合不同分辨率的特征。给定一系列多尺度特征。其中表示级的特征,本文目标时要找到一个转移量f,可以有效地融合不同特征然后输出一系列新的特征。例如,传统的自上而下FPN结构如图2(a)所示,采用3-7级输入特征,其中表示输入图像的分辨率为的特征层(比如,如果输入图像的分辨率为640×640,那么表示分辨率为80×80的第3个特征层(640/23=80),同理,表示分辨率为5×5的第7个特征层)。传统的FPN采用自上而下的方式融合多尺度特征:

其中Resize通常是匹配分辨率的上采样或下采样操作,Conv通常指特征处理的卷及运算。

3.2 交叉尺度连接

传统的自上而下的FPN会受到单向信息流的限制,为了解决这一问题,PANet添加了一个额外的自底向上的通道来聚合网络,如图2(b)所示。交叉尺度链接的进一步研究见文献[20,18,42]。近年来,NAS-FPN用神经结构搜索更好的交叉尺度特征网络拓扑结构,但搜索时间太长而且得到的网络不规则,很难解释或调整,网络结构如图2(c)所示。

通过研究这三个网络的性能和效率(比较结果见表5),我们发现PANet的准确率比FPN和NAS-FPN要高,但是需要消耗更多的参数以及计算成本。为了提高效率,本文提出了一些交叉尺度连接的优化方案:首先,移除只有一条边界的结点。本文目的很简单,如果一个节点只有一个输入边界而没有特征融合,那么该节点对融合不同特征的特征网络没有太大贡献,移除这些结点之后,便得到一个简化的双向网络。第二,如果原始输入到输出节点处于同一水平,我们会增加一条额外的边,以便在不增加太多成本的情况下融合更多的特征;第三,与PANet[26]只有一条自上而下和一条自下而上的路径不同,我们将每个双向(自上而下和自下而上)路径视为一个特征网络层,将同一层重复多次,以实现更高层次的特征融合。第4.2节讨论如何使用Compound Scaling方法确定不同资源约束下的层数。基于这些优化,将新特性网络命名为双向特性金字塔网络(BiFPN),如图2和3所示。

3.3 加权特征融合

当融合不同分辨率的特征时,一种常见的方法是首先将它们调整为相同的分辨率,然后将它们相加。金字塔注意力网络[22]引入全局自注意上采样来恢复像素定位,文献[10]展开了进一步研究。以前所有的方法对所有的输入特征一视同仁。然而,我们观察到,由于不同的输入特征的分辨率不同,对输出特征的贡献是不相等的。为了解决这个问题,为每个输入增加一个额外的权重,并让网络学习每个输入特征的重要性。基于此,本文考虑了三种加权融合方法:

Unbounded fusion: ,其中是一个可学习的权重,可以是标量(对于每个特征而言)、向量(对于每个通道而言)或多维张量(对于每个像素而言)。我们发现,一个特定的尺寸,可以使模型的性能发挥极致,而且与其他方法相比,计算成本最小。然而,由于标量权重是无界的,可能会导致训练过程不稳定。因此,我们采用权值归一化的方法来确定每个权值的取值范围。

Softmax-based fusion: 。将softmax应用于每个权重,这样所有权重都被标准为0到1,表示每个输入的重要性。然而,正如我们在第6.3节中的消融研究所示,额外的softmax会降低GPU的运行速度。为了减少额外的延迟开销,进一步提出了一种快速fusion方法。

Fast normalized fusion:,其中是通过在每个后应用Relu激活函数得到的取值范围,取值较小,以避免数值不稳定。类似地,每个标准化权重的值的取值范围为(0,1),但是由于这里没有softmax操作,因此效率更高。消融研究表明,这种快速融合方法与基于softmax的融合具有非常相似的学习行为和准确性,而且在GPU上运行速度快了30%(表6)。

BiFPN集成了双向交叉尺度连接和快速归一化融合。本文描述了BiFPN在6级(efficientdet-d6)的两个融合特征(如图2(d)所示):

其中,是自上而下中间特征,是自下而上的输出特征。所有其他特征都以类似的方式构造。注意,为了进一步提高效率,我们使用深度可分离卷积[7,37]进行特征融合,并在每次卷积后加入batch normalization和激活函数。

4. EfficientDet

基于BiFPN,本文开发了一系列新的检测模型EfficientDet。本节讨论网络体系结构和一种新的EfficientDet复合缩放方法。

4.1. EfficientDet 模型架构

EfficientDet的总体架构如图3所示,基本上借鉴了单级检测器的架构[27,33,23,24]。本文将ImageNet预先训练的EfficientNets作为backbone。BiFPN作为特征网络,它从backbone中提取3-7级特征{P3,P4,P5,P6,P7},并重复应用自上向下和自下而上的双向特征融合。将融合后的特征反馈给class和box网络,分别对目标进行分类和定位。与文献[24]类似,class和box网络权重在所有级别的特征中共享。

4.2. Compound Scaling

以提高精度和效率为目标,我们希望开发一系列能够广泛应用的网络模型。此处一个关键挑战是如何扩大baseline EfficientDet模型。

以前的工作主要是通过使用更大的主干网络(例如ResNeXt[41]或AmoebaNet[32])、使用更大的输入图像或堆叠更多的FPN层来扩大baseline检测网络[10]。这些方法通常是无效的,因为它们只关注单个或有限的缩放维度。最近的工作[39]通过联合放大网络宽度、深度和输入分辨率的所有维度,在图像分类方面的性能得到极大提高。借鉴文献[10,39],我们提出了一种新的目标检测的复合缩放方法,它使用一个简单的复合系数φ来联合扩大主干、BiFPN、class/box网络和分辨率的所有维度。与文献[39]不同的是,目标检测器比图像分类模型具有更多的缩放维度,因此网格搜索所有维度的成本非常昂贵。因此,我们使用基于启发式的缩放方法,但仍然遵循联合缩放所有维度的主要思想。

Backbone network:我们重新利用和文献[39]相同d EfficientNet-B0 至B6的宽/高尺度,从而可以轻松重用他们的ImageNet预训练checkpoints。

BiFPN网络:因为深度是整数,因此要线性增加BiFPN深度(#layers)。对于BiFPN宽度(#channels),按指数增长BiFPN width Wbifpn(#channels),与[39]类似。具体来说,在这些值{1.2、1.25、1.3、1.35、1.4、1.45}中执行网格搜索,并选择最佳值1.35作为BiFPN宽度缩放因子。BiFPN宽度和深度的缩放表达式为:

box/class预测网络:本文将其宽度设为始终与BiFPN相同(即Wpred=Wbifpn),用线性方式增加深度(#层)的公式如下:

输入图像分辨率:由于BiFPN中使用了特征级别:3-7,因此输入图像的分辨率必须可除以2 7=128,因此使用以下等式线性增加分辨率:

根据方程1、2、3和不同的φ,本文搭建了EfficientDet-D0(φ=0)到D7(φ=7)网络,如表1所示,其中D7和D7x具有相同的BiFPN和顶层网络结构,但D7的分辨率更高,D7x的骨干网络更大且特征级别更高(从P3到P8)。注意,我们的复合缩放是基于启发式的,可能不是最优的,与其他一维缩放方法相比的结果见图6,这种简单的缩放方法可以显著提高效率。

5 实验

5.1 用于目标检测的EfficientDet

本文的训练集有118K张图像对COCO 2017检测数据集[25]进行测试评估。每个模型的动量值设为0.9、权重衰减设为4e-5,优化函数为SGD。在第一个训练epoch,学习率从0线性增加到0.16,然后使用余弦衰减规则进行退火。每次卷积后加入同步批范数,批范数衰减设为0.99,ε=1e-3。与文献[39]相同,我们使用SiLU(Swish-1)激活函数[8,15,31],以及使用指数移动平均,衰减率为0.9998。我们还采用了常用的focal loss值[24],α=0.25,γ=1.5,纵横比为{1/2,1,2}。在训练过程中,将图片进行水平翻转和缩放抖动[0.1,2.0],即在裁剪前随机将图像缩小到原始大小的0.1倍到2倍之间。我们采用soft-NMS [3]进行评估。对于D0-D6模型,每个模型在32个TPUv3核上训练300个epoch,总batch size为128,但是为了推动包络,在128个TPUv3核上令D7/D7x模型的epoch=600。

EfficientDet与其他目标探测网络的比较结果见表2,在单模型单尺度情况下,测试时间没有增加。我们计算了test-dev(20K张测试图像,不包含ground-truth)和val (5k张验证图像)的准确性。注意,模型性能取决于网络体系结构和训练设置(见附录),但为了简单起见,只使用我们的训练网络搭建RetinaNet,并参考他们论文中的其他模型。一般来说,EfficientDet比以前的检测模型效率更高,模型尺寸小4倍到9倍,并且在精度或资源限制的条件下,FLOPs减小了13倍到42倍。在精度相对较低的情况下,EfficientDet-D0与YOLOv3具有相似的精度,FLOPs减小了28倍。与RetinaNet[24]和Mask RCNN[13]相比,EfficientDet的精度和他们相似,且参数减少了8倍,FLOPs减少了21倍。在高精度的情况下, EfficientDet也始终优于最近研发的目标检测网络[10,45],且参数和FLOPs要少得多。特别是,我们的单模型单尺度EfficientDet-D7x在测试AP 高达55.1,精度提高了4个百分点的 AP,效率减少了7倍FLOPs。

此外,本文还比较了Titan-V FP32、V100GPU FP16和单线程CPU上的推理延迟。注意,我们的V100延迟是端到端的,包括预处理和NMS后处理。图4比较了模型大小和GPU/CPU延迟。为了公平比较,均在设置相同的同一台机器上进行实验。与以前的探测器相比,EfficientDet在GPU上的速度快了4.1倍,在CPU上的速度快了10.8倍,这表明在实际硬件上的操作也是有效的。

5.2. 语义分割的EfficientDet

虽然EfficientDet模型主要设计用于目标检测,但也对在其他任务(如语义分割)上的性能进行了实验。借鉴文献[19],我们修改了EfficientDet模型,以保持BiFPN中的特征级别{P2,P3,…,P7},但只使用P2进行最终的像素级别分类。为简单起见,这里仅评估了基于EfficientNet-D4的模型,该模型使用ImageNet预训练的EfficientNet-B4主干网络(与ResNet-50大小相似)。我们将BiFPN的通道大小设置为128,将分类网络的通道大小设置为256。BiFPN和分类网络都重复3次。

本文模型与Pascal VOC 2012[9]上以前的DeepLabV3+[6]之间的比较结果见表3。注意,我们排除了集合、测试时间增强或COCO预训练的结果。在相同的单模型单标度设置下,我们的模型比DeepLabV3+[6]的精度高1.7%,FLOPs小9.8倍。这些结果表明,EfficientDet在语义分割方面的性能也很不错。

6消融研究

本节为进行消融研究。为简单起见,这里的所有准确度结果都是基于COCO验证集得到的结果。

6.1. 分离主干网络和BiFPN

由于EfficientDet同时使用了强大的主干网络和新的BiFPN,我们想了解它们对提高准确率和效率的贡献有多大。表4比较了使用RetinaNet训练的参数设置的主干网和BiFPN的影响。从带有ResNet-50[14]主干网和自顶向下FPN[23]的RetinaNet检测网络[24]开始,首先用EfficientNet-B3替换主干网络,这样可以用减少大量参数和FLOPs,并且可以将精确度提高约3AP。通过进一步BiFPN代替FPN,可以用更少的参数和FLOPs获得额外的4AP增益。这些结果表明,有效的主干网络和BiFPN对于模型都是至关重要的。

6.2. 跨尺度连接

图2中列出的具有不同跨尺度连接的特征网络的精度和模型复杂度见表5。值得注意的是,原来的FPN[23]和PANet[26]只有一个自上而下或自下而上的过程,但是为了公平比较,这里将每个过程重复多次,并将所有conv(卷积层)替换为按深度可分离的conv,这与BiFPN相同。使用相同的主干网和class/box预测网络,所有实验使用相同的训练参数。可以看到,传统的自顶向下FPN仅有单向信息流,因此精度较低。虽然重复的FPN+PANet比NASFPN的精度略高[10],但也需要更多的参数和FLOPs。BiFPN的精度与重复FPN+PANet的类似,但参数量和FLOPs更小。通过额外的加权特征融合,BiFPN可以以较少的参数和FLOPs达到最佳的精度。

6.3. Softmax与快速归一化融合

如第3.3节所讨论的,本文提出了一种快速的归一化特征融合方法,不适用softmax,但可以保留归一化权重的优势。表6比较了softmax和快速归一化融合方法在三种不同模型尺寸检测网络中的应用。从结果中可以发现,快速归一化融合方法与基于softmax的融合方法的精度相似,但在GPU上运行速度快了1.26--1.31倍。

为了进一步理解基于softmax的快速归一化融合方法,从EfficientDet-D3中的BiFPN层随机选择的三个特征融合节点的学习权重如图5所示。注意,对于所有输入,归一化权重(例如,用于基于softmax的融合的,以及用于快速归一化融合的)的总和始终为1。有趣的是,归一化权重在训练过程中变化很快,这表明不同的特征对特征融合的贡献是不平等的。尽管变化很快,快速归一化融合方法在所有三个节点上都表现出与基于softmax的融合非常相似的学习行为。

6.4. 复合缩放

如第4.2节所述,我们采用复合缩放方法扩大主干网络、BiFPN和box/class预测网络的深度/宽度/分辨率的所有维度。复合缩放与其他替代方法的比较结果见图6,它们可以缩放分辨率/深度/宽度的单个维度。虽然从相同的baseline检测网络开始,但复合缩放方法比其他方法的效率更高,这证明了通过更好地平衡不同架构维度来整体缩放的好处。

7 总结

本文系统地研究了高效目标检测的网络结构设计选择,提出了一种加权双向特征网络和一种复合缩放方法,以提高检测的准确性和效率。基于这些优化方法,我们开发了一系列新的检测网络,即EfficientDet,它在资源限制条件下始终比现有技术的精度和效率更高。特别地,scaled EfficientDet比以前的目标检测和语义分割模型的参数量和FLOPs更小,且达到了最高的精度。

Efficientdet译文相关推荐

  1. HTTPS的七个神话(译文)

    原文网址:http://blog.httpwatch.com/2011/01/28/top-7-myths-about-https/ 译文地址:http://www.ruanyifeng.com/bl ...

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

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

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

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

  4. 全网第一SoTA成绩却朴实无华的PyTorch版EfficientDet

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文作者:Zylo117 https://zhuanlan.zhih ...

  5. ​一文读懂EfficientDet

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

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

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

  7. 震惊!EfficientDet终于开源了!

    官宣! 还记得那个屠榜的EfficientDet吗?今天它来了!之前无数github up主尝试复现但都止步于入门版D0的复现,今天官方已经release了源代码! EfficientDet的成绩 作 ...

  8. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的连接恢复和命令拦截...

    这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第四篇:MVC程序中实体框架的连接恢复和 ...

  9. 【译文】 C#面向对象的基本概念 (Basic C# OOP Concept) 第一部分(类,对象,变量,方法,访问修饰符)...

    译文出处:http://www.codeproject.com/Articles/838365/Basic-Csharp-OOP-Concept 相关文档:http://files.cnblogs.c ...

最新文章

  1. 本地存储与云存储方案价值对比—Vecloud
  2. 如何精确评估开发时间的 4 个小套路?
  3. 【杂谈】深度学习之模型设计书看完了完全不过瘾?那这些拓展资料你都看了不?...
  4. HTML5语言格式,HTML5 自然语言格式的输入表单
  5. centos下 Tcpreplay 重放数据(流量采集重放)
  6. Python中functools模块函数解析
  7. java 多线程操作map_Java 多线程中ConcurrentHashMap并发读写操作范例
  8. uni.share失效 无法唤醒微信 而且还卡住的情况
  9. 【Linux学习010】算数运算、文件测试、字符测试、位置变量和特殊变量
  10. ai怎么做盒子效果图_仅需5步!手把手教你如何用AI绘制3D效果形象
  11. 一个安全架构师需要做什么?有什么能力要求?
  12. 指纹识别技术相比于其它生物识别技术,有哪些优缺点?
  13. c++做的免费游戏狼人杀
  14. 《3D打印:正在到来的工业革命(第2版)》——2.4节粉末床熔融
  15. 故事版冲突The document me.storyboard could not be opened. Unrecognized file content.
  16. 浏览器如何工作:在现代web浏览器场景的之下
  17. 记一次内网SSH后门误报事件
  18. OJDBC驱动版本区别 [ojdbc14.jar,ojdbc5.jar跟ojdbc6.jar的区别]
  19. Python|简易银行ATM程序制作
  20. 分享一个云端电脑(让你的电脑少装几十款软件)

热门文章

  1. canvas实战之酷炫背景动画(四)
  2. Netty心跳和重连
  3. 基于Python的机器学习之预测鲍鱼年龄数据集
  4. (二)车辆管理小系统
  5. 微信小程序如何判断开发环境
  6. 利用微软的Office Online在线预览播放Office文档,无工具栏
  7. 美多商城之商品(商品详情页)
  8. 什么是3D机器视觉?
  9. 【天光学术】计算机论文:计算机技术在建筑项目管理中的应用(节选)
  10. Reg 正则表达式学习笔记