EfficientDet : 快又准,EfficientNet作者在目标检测领域的移植 CVPR 2020
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EfficientDet : 快又准,EfficientNet作者在目标检测领域的移植 CVPR 2020相关的知识,希望对你有一定的参考价值。
参考技术A论文: EfficientDet: Scalable and Efficient Object Detection
目前目标检测领域,高精度的模型通常需要很大的参数量和计算量,而轻量级的网络则一般都会牺牲精度。因此,论文希望建立一个可伸缩的高精度且高性能的检测框架。论文基于one-stage的检测网络范式,进行了多种主干网络、特征融合和class/box预测的结构尝试,主要面临两个挑战:
FPN是目前最广泛的多尺度融合方法,最近也有PANet和NAS-FPN一类跨尺度特征融合方法。对于融合不同的特征,最初的方法都只是简单地直接相加,然而由于不同的特征是不同的分辨率,对融合输出特征的共享应该是不相等的。为了解决这一问题,论文提出简单但高效加权的bi-directional feature pyramid network(BiFPN),该方法使用可学习的权重来学习不同特征的重要性,同时反复地进行top-down和bottom-up的多尺度融合
论文认为除了缩放主干网络和输入图片的分辨率,特征网络(feature network)和box/class预测网络的缩放对准确率和性能也是很重要的。作者借鉴EfficientNet,提出针对检测网络的混合缩放方法(compound scaling method),同时对主干网络,特征网络和box/class预测网络的分辨率/深度/宽度进行缩放
最后,论文将EfficientNet作为主干,结合BiFPN和混合缩放,提出新的检测系列EfficientDet,精度高且轻量,COCO上的结果如图1,论文的贡献有以下3点:
定义多尺寸特征 ,论文的目标是找到变化函数 来高效融合不同的特征,输出新特征 。具体地,图2a展示了top-down FPN网络结构,一般FPN只有一层,这里应该为了对比写了repeat形式。FPN获取3-7层的输入 , 代表一个分辨率为 的特征层
top-down FPN操作如上所示, 为上采用或下采样来对齐分辨率, 通常是特征处理的卷积操作
top-down FPN受限于单向的信息流,为了解决这一问题,PANet(图2b)增加了额外的bottom-up路径的融合网络,NAS_FPN(图2c)使用神经架构搜索来获取更好的跨尺度特征网络的拓扑结构,但需要大量资源进行搜索。其中准确率最高的是PANet,但是其需要太多的参数和计算量,为了提高性能,论文对跨尺寸连接做了几点改进:
大多的特征融合方法都将输入特征平等对待,而论文观察到不同分辨率的输入对融合输出的特征的贡献应该是不同的。为了解决这一问题,论文提出在融合时对输入特征添加额外的权重预测,主要有以下方法:
, 是可学习的权重,可以是标量(per-feature),也可以是向量(per-channel),或者是多维tensor(per-pixel)。论文发现标量形式已经足够提高准确率,且不增加计算量,但是由于标量是无限制的,容易造成训练不稳定,因此,要对其进行归一化限制
,利用softmax来归一化所有的权重,但softmax操作会导致GPU性能的下降,后面会详细说明
,Relu保证 , 保证数值稳定。这样,归一化的权重也落在 ,由于没有softmax操作,效率更高,大约加速30%
BiFPN集合了双向跨尺寸的连接和快速归一化融合,level 6的融合操作如上, 为top-down路径的中间特征, 是bottom-up路径的输出特征,其它层的特征也是类似的构造方法。为了进一步提高效率,论文特征融合时采用depthwise spearable convolution,并在每个卷积后面添加batch normalization和activation
EfficientDet的结构如图3所示,基于one-stage检测器的范式,将ImageNet-pretrained的EfficientNet作为主干,BiFPN将主干的3-7层特征作为输入,然后重复进行top-down和bottom-up的双向特征融合,所有层共享class和box网络
之前检测算法的缩放都是针对单一维度的,从EfficientNet得到启发,论文提出检测网络的新混合缩放方法,该方法使用混合因子 来同时缩放主干网络的宽度和深度、BiFPN网络、class/box网络和分辨率。由于缩放的维度过多,EfficientNet使用的网格搜索效率太慢,论文改用heuristic-based的缩放方法来同时缩放网络的所有维度
EfficientDet重复使用EfficientNet的宽度和深度因子,EfficinetNet-B0至EfficientNet-B6
论文以指数形式来缩放BiFPN宽度 (#channels),而以线性形式增加深度 (#layers),因为深度需要限制在较小的数字
box/class预测网络的宽度固定与BiFPN的宽度一致,而用公式2线性增加深度(#layers)
因为BiFPN使用3-7层的特征,因此输入图片的分辨率必需能被 整除,所以使用公式3线性增加分辨率
结合公式1-3和不同的 ,论文提出EfficientDet-D0到EfficientDet-D6,具体参数如Table 1,EfficientDet-D7没有使用 ,而是在D6的基础上增大输入分辨率
模型训练使用momentum=0.9和weight decay=4e-5的SGD优化器,在初始的5%warm up阶段,学习率线性从0增加到0.008,之后使用余弦衰减规律(cosine decay rule)下降,每个卷积后面都添加Batch normalization,batch norm decay=0.997,epsilon=1e-4,梯度使用指数滑动平均,decay=0.9998,采用 和 的focal loss,bbox的长宽比为 ,32块GPU,batch size=128,D0-D4采用RetinaNet的预处理方法,D5-D7采用NAS-FPN的增强方法
Table 2展示了EfficientDet与其它算法的对比结果,EfficientDet准确率更高且性能更好。在低准确率区域,Efficient-D0跟YOLOv3的相同准确率但是只用了1/28的计算量。而与RetianaNet和Mask-RCNN对比,相同的准确率只使用了1/8参数和1/25的计算量。在高准确率区域,EfficientDet-D7达到了51.0mAP,比NAS-FPN少使用4x参数量和9.3x计算量,而anchor也仅使用3x3,非9x9
论文在实际的机器上对模型的推理速度进行了对比,结果如图4所示,EfficientDet在GPU和CPU上分别有3.2x和8.1x加速
论文对主干网络和BiFPN的具体贡献进行了实验对比,结果表明主干网络和BiFPN都是很重要的。这里要注意的是,第一个模型应该是RetinaNet-R50(640),第二和第三个模型应该是896输入,所以准确率的提升有一部分是这个原因。另外使用BiFPN后模型精简了很多,主要得益于channel的降低,FPN的channel都是256和512的,而BiFPN只使用160维,这里应该没有repeat
Table 4展示了Figure 2中同一网络使用不同跨尺寸连接的准确率和复杂度,BiFPN在准确率和复杂度上都是相当不错的
Table 5展示了不同model size下两种加权方法的对比,在精度损失不大的情况下,论文提出的fast normalized fusion能提升26%-31%的速度
figure 5展示了两种方法在训练时的权重变化过程,fast normalizaed fusion的变化过程与softmax方法十分相似。另外,可以看到权重的变化十分快速,这证明不同的特征的确贡献是不同的,
论文对比了混合缩放方法与其它方法,尽管开始的时候相差不多,但是随着模型的增大,混合精度的作用越来越明显
论文提出BiFPN这一轻量级的跨尺寸FPN以及定制的检测版混合缩放方法,基于这些优化,推出了EfficientDet系列算法,既保持高精度也保持了高性能,EfficientDet-D7达到了SOTA。整体而言,论文的idea基于之前的EfficientNet,创新点可能没有之前那么惊艳,但是从实验来看,论文推出的新检测框架十分实用,期待作者的开源
Code For Better 谷歌开发者之声——基于谷歌开源EfficientDet的电网缺陷的识别检测
一、背景介绍
针对现有的无人机电力巡检中的目标检测算法小目标识别精度低、检测的元件及缺陷类型较为单一、检测速度和精度无法同时满足的问题,提出一种改进的 EfficientDet 目标检测算 法,该算法应用于无人机电力巡检图像的数据挖掘,对高压输电线路上的绝缘子、防震锤、均压环、屏蔽环、鸟巢同时进行目标检测及缺陷定位。
二、什么是EfficientDet
EfficientDet是由谷歌大脑团队开源的一款对象检测模型,它利用了若干优化和主干调整,例如使用BiFPN,以及一种复合缩放方法,该方法同时均匀缩放所有主干、特征网络和盒/类预测网络的分辨率、深度和宽度。是涵盖轻量级到高精度的多个模型,COCO数据集上达到 50.9 mAP,一经推出便获得了大量关注!
三、EfficientDet 解决的痛点问题与改进思路
首先通过 Imgaug 数据增强库对现有的 1 468 张 国家电网某检修公司标准化无人机巡检数据集进行数据增强;然后在加强特征提取网络双向特征金字塔网络(BiFPN)特征融合时融入小一级尺度的特征层,提高了小目标检测能力,对主干特征 提取网络 EfficientNet 的倒残差模块进行改进,引入坐标注意力机制(CA)提高了主干特征提取 效率;最后进行对比训练实验。
四、数据集设计
4.1 实验数据
原始数据集共 1468 张,来源于国网某检修公司无人机巡检作业时拍摄的标准化照片。由于机器学习的训练中,数据集的质量对训练效果和检测效率有较大的影响,现有的原始数据集数量有限,直接用于训练得出的结果难以满足电力巡检的精度要求,所以利用 Imgaug 数据增强库进行数据扩充,模拟实际巡检时拍摄模糊、噪声、天气恶劣等情况,提升训练模型抗干扰的鲁棒性,实验效果如下图所示:
4.2 数据集类别分析与拓展情况
五、模型结构图
EfficientDet 目标检测算法由 EfficientNet 主干 特征提取网络、不同层数的双向特征金字塔网络 (Bidirectional Feature Pyramid Networks, BiFPN)加 强特征提取网络和先验框分类与调整网络三部分组成。
六、实验环境
6.0 实验代码
实验步骤的话,就是换个数据集就行,数据集因为是实验室自己的,所有不能提供,自己找个其他的数据集也可以哦!所以实验参考下文即可:
睿智的目标检测38——TF2搭建Efficientdet目标检测平台(tensorflow2)_Bubbliiiing的博客-CSDN博客
6.1 实验设备
6.2 训练损失图像
6.3 实验结果
五、结果分析
EfficientDet 算法在元件检测及缺陷定位测试集上平均均值精度达到 90.2%可以满足电力巡检中准确性的要求。
以上是关于EfficientDet : 快又准,EfficientNet作者在目标检测领域的移植 CVPR 2020的主要内容,如果未能解决你的问题,请参考以下文章