EfficientDet:Scalable and Efficient Object Detection)

文章解读

Google最新提出的目标检测算法,提出BIFPN和EfficientDet,通过改进FPN中多尺度特征融合的结构和借鉴EfficientNet模型缩放方法,提出了一种模型可缩放且高效的目标检测算法EfficientDet。

1 背景介绍

目前目标检测的方法分为one-stage,two-stage两种,但是个人感觉不断发展的过程中one-stage会不断优化。

2 创新点

(1)有效的多尺度特征融合
之前的研究在多尺度特征融合上只是进行简单的求和,没有考虑不同分辨率具有不同程度的贡献,所以这里作者提出了一种简单而高效的加权双向特征金字塔网络(BiFPN)。
(2)模型缩放
之前的研究大多主要依赖于更大的backbone,例如Faster RCNN、NAS-FPN,或更大分辨率的输入图像,例如Mask RCNN,以获得更高的精度。在兼顾精度和效率情况下,放大特征网络和bounding box和类别预测网络也是至关重要的。因此这里采用EfficientNet的创新点,改变网络的分辨率,深度不对生成新的网络。
(3)双向特征金字塔网络
对于目标检测网络,由于目标大小的不同,对于不同分辨率的特征图的利用成重点。
在这里插入图片描述
如图(a)为FPN的结构,传统的自上而下聚合多尺度特征图:
在这里插入图片描述
公式中Resize为上采用或者下采样,使得逐个像素求和分辨率相通;
如图(b)在(a)的基础上改进添加自下而上的结构;
如图(c)NAS-FPN搜索发现网络结构的不规则;
在这里插入图片描述
如图(d)为将所有灯输入与下一层进行全连接这样会带来巨大的计算量;
如图(e)针对PANet的改进,删掉只有一个输入的节点。
最后(f)为本文提出的bidirectional feature pyramid network(BiFPN)。就行ResNet那样对于每层输入增加了一个直连通路。
(3)融合
对于之前的网络,融合不同分辨率的多个特征图时,常见的方法是首先Resize到相同的分辨率,然后对他们逐像素求和。但是不同的分辨率往往会提供不同的贡献。
无限取值融合
在这里插入图片描述
w表示一组标量对于每个特征图,也可以是一组向量对于每个通道。
softmax的融合
在这里插入图片描述
另外一个是对每个权重应用softmax,这样所有的权重都被规范化为一个概率值范围在0到1之间的值,表示每个输入的重要性。
快速归一化融合
在这里插入图片描述
作者描述了(f)中所示的BiFPN在6级的两个融合特征:
在这里插入图片描述

算法思路

网络结构

1 backbone:主干网络介绍
在这里插入图片描述
Efficientdet采用Efficientnet作为主干特征提取网络。EfficientNet-B0对应Efficientdet-D0;EfficientNet-B1对应Efficientdet-D1;以此类推。
EfficientNet模型具有很独特的特点,这个特点是参考其它优秀神经网络设计出来的。经典的神经网络特点如下:
1、利用残差神经网络增大神经网络的深度,通过更深的神经网络实现特征提取;
2、改变每一层提取的特征层数,实现更多层的特征提取,得到更多的特征,提高宽度;
3、通过增大输入图片的分辨率也可以使得网络学习与表达的东西更加丰富,有利于提高精确度。

Efficientnet-B0由1个Stem+16个Blocks堆叠构成,16个大Blocks可以分为1,2,2,3,3,4,1个Block。Block的通用结构如下:其总体的设计思路是Inverted residuals结构和残差结构,在33或者55卷积后利用11卷积升维,并且增加一个注意力机制的通道,最后利用11卷积将维后增加一个大残差边。
2 Neck:BiFPN加强特征提取
在这里插入图片描述
构建BiFPN可分为多步骤:
(1)通过主干网络,获取P3,P4,P5层,还需要进行两次下采样获得P6,P7层。P3,P4,P5经过1*1卷积调整通道后获取P3_in,P4_in,P5_in,在构建BiFPN的第一步,需要构建两个P6_in,P7_in
(2)在获得P3_in、P4_in_1、P4_in_2、P5_in_1、P5_in_2、P6_in、P7_in之后需要对P7_in进行上采样,上采样后与P6_in堆叠获得P6_td;之后对P6_td进行上采样,上采样后与P5_in_1进行堆叠获得P5_td;之后对P5_td进行上采样,上采样后与P4_in_1进行堆叠获得P4_td;之后对P4_td进行上采样,上采样后与P3_in进行堆叠获得P3_out
(3)在获得P3_out、P4_td、P4_in_2、P5_td、P5_in_2、P6_in、P6_td、P7_in之后,之后需要对P3_out进行下采样,下采样后与P4_td、P4_in_2堆叠获得P4_out;之后对P4_out进行下采样,下采样后与P5_td、P5_in_2进行堆叠获得P5_out;之后对P5_out进行下采样,下采样后与P6_in、P6_td进行堆叠获得P6_out;之后对P6_out进行下采样,下采样后与P7_in进行堆叠获得P7_out。
(4)将获得的P3_out、P4_out、P5_out、P6_out、P7_out作为P3_in、P4_in、P5_in、P6_in、P7_in,重复2、3步骤进行堆叠即可,对于Effiicientdet B0来讲,还需要重复2次,需要注意P4_in_1和P4_in_2此时不需要分开了,P5也是

head:从特征获取预测结果

最后获得P3_out, P4_out, P5_out, P6_out, P7_out;
为了和普通特征层区分,我们称之为有效特征层,将这五个有效的特征层传输过ClassNet+BoxNet就可以获得预测结果了。
ClassNet采用3次64通道的卷积和1次num_anchors x num_classes的卷积,num_anchors指的是该特征层所拥有的先验框数量,num_classes指的是网络一共对多少类的目标进行检测。

BoxNet采用3次64通道的卷积和1次num_anchors x 4的卷积,num_anchors指的是该特征层所拥有的先验框数量,4指的是先验框的调整情况。
我们通过对每一个特征层的处理,可以获得三个内容,分别是:

num_anchors x 4的卷积 用于预测 该特征层上 每一个网格点上 每一个先验框的变化情况。**

num_anchors x num_classes的卷积 用于预测 该特征层上 每一个网格点上 每一个预测框对应的种类。

每一个有效特征层对应的先验框对应着该特征层上 每一个网格点上 预先设定好的9个框。

我们利用 num_anchors x 4的卷积 与 每一个有效特征层对应的先验框 获得框的真实位置。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_38356756

本人识别赛top2整理内容齐齐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值