旷视-2019.03-ThunderNet

摘要:
轻量的两阶段检测器。分析了之前Backbone的缺点,设计了新的Backbone;研究了更高效的Detection head;为了得到区分度更高的特征,提出了两个模块,Context Enhance Module和Spatial Attention Module;最后研究了输入大小、backbone和head的平衡。最终得到了和SSD300相近的结果,在ARM平台上跑到24.1fps的速度
1.引言:
SOTA的检测器倾向于使用大的backbone和大分辨率的输入。在轻量型的分类网络研究中已经有很多工作,但是分类问题和检测问题有一些区别,比如检测需要更大的感受野,检测需要使用低层特征帮助定位。
SOTA的两阶段检测器为了高精度,使用较重的head比如Cascade-RCNN,Light head RCNN虽然使用了light head,但是他和轻量的backbone结合的时候,仍有较大的计算量,这就是head和backbone的不匹配,不仅限制了速度还有过拟合的风险。一般来讲一阶段的检测器速度快,但是精度不如二阶段的。所以这篇文章从轻量的二阶段的模型出发,达到一阶段大模型的精度。
本文,研究了轻量型backbone的缺点,提出了SNet作为backbone;在head部分,进一步压缩了RPN和R-CNN分支;为了消除轻量的backbone和薄feature map带来的性能退化,提出了Context Enhance Module和Spatial Attention Module,前者利用多尺度的feature map结合了全局和局部的信息,后者利用RPN学到的信息对特征分布进一步修正;最后研究了backbone,head和input size的平衡

SNet在shufflenet v2的基础上进行了修改,使其更适合检测;RPN被压缩,RCNN使用了1024维特征的输出;CEM对backbone的特征图进行了多尺度融合;SAM利用了RPN的结果对特征图的分布进行了精调
2.相关工作:
分类和检测问题需要不同特性的网络,不管是否轻量,直接将分类网络用于检测并不是最优的做法,所以有了FPN、DetNet、Tiny-dsod和pelee的工作,但是本文认为问题并没有很好地解决。
3.ThunderNet:
3.1 Backbone
输入分辨率
320320,虽然大分辨率输入有助于高精度,但是除了计算量大,还与轻量的backbone不匹配
Backbone Network
大感受野可以建模更多像素的关系,捕捉上下文信息,对目标的定位比较重要
低层feature map包含丰富的细节对定位重要;高层的feaure map更有区分度对分类重要。对于较大的backbone,定位比分类更困难;对于特别薄的feature map,他的特征表达能力对定位和分类的精度都有限制。之前的轻量网络或多或少的违背了上述原则,shufflenet 121像素感受野;mobilenet和shufflenet都没有利用低层特征;Xception虽然计算量小,但是高层特征不丰富。
鉴于此,我们从shufflenet v2出发,设计了3种backbone,SNet49,SNet146和SNet535.首先将shufflenet中的所有3
3的depthwise卷积换成了55,感受野增加到193像素**,个人很奇怪如果单纯是为了增大感受野,这里为什么用55的卷积,而不是空洞卷积,55的卷积增大了参数量,也会提高拟合能力,如果最后精度提高,不能说明就是感受野增大的结果。**在SNet146和SNet535中删除了conv5,同时增加了低层卷积的通道数。在SNet49中,将conv5的通道数压缩到512,增加了低层卷积的通道数,如果删除conv5,则表达能力不够,如果通道数为1024,则影响了低层特征的获取。这样较好地平衡了高低层特征。整个结构如下所示,将stage3和stage4(conv5 for snet49)的特征输出记为C4和C5
在这里插入图片描述
3.2 Detection Head
压缩RPN和检测头
两阶段的检测器,RPN都比较大,与轻量的backbone不匹配,本文压缩了PRN。RPN的设计和light head rcnn一致,除了用5
5的depthwise卷积替换了33的卷积,Five scales f32, 64, 128,256, 512} and five aspect ratios f1:2, 3:4, 1:1, 4:3, 2:1}
对于检测头,light head rcnn是7
710的pooling,其中7是pooling核的大小,10是通道数,这里我们进一步将10减为5.这里采用了PSROI pooling,将PSROI Pooling的特征维度从577=245改为1024,而且减少了ROI的数目
light head rcnn使用了global convolution network虽然增加了感受野,但是相比backbone有2倍的计算量,但是如果不用,感受野较小,不能建模全局信息,如果使用FPN,也会增加不少计算量。为此,设计了高效的Context Enhance Module,他的思想是集成多尺度局部和全局信息生成更有区分度的特征。他融合了C4,C5和Cglb特征,其中Cglb特征是C5全局池化得到,然后用1
1245的卷积,将特征维度调整到245.为了空间上维度一致,C5上采样,Cglb广播,然后融合在一起,这里的融合是堆叠还是相加?
在这里插入图片描述
Spatial Attention Module
我们希望特征图,前景响应强,背景响应弱,但是由于我们采用了小的backbone和图像输出,使得feature map学习到的响应分布并非如此。为了显式地得到这样的分布,我们提出了Spatial Attention Module,他利用RPN的信息,对feature map的响应进行加权。
在这里插入图片描述
theta是维度变换,sigmod保证输出在[0,1]之间,个人认为这里存在两个问题,RPN的前景背景区分并不准,为什么不直接用gt,还有sigmod函数饱和很快,无法区分较大和大的响应
在这里插入图片描述
在这里插入图片描述
这就给RPN两个监督信号,有利于RPN的训练
4.实验
4.1实验细节
每个GPU 16个图像,4个GPU,正则化因子0.0001,动量0.9.每张图片训练的时候2000个ROI测试的时候200个ROI.使用了多尺度训练240,320,480由于输入图像小,采用了SSD的数据增广。在VOC上迭代62.5K次,在COCO上迭代375K次,学习率从0.01在50%和75%的时候降为原来的0.1采用Online hard sample mine和soft-NMS.还有large batch BN.
4.2实验结果
在这里插入图片描述
在这里插入图片描述
从COCO的结果中可以看出AP75的优势更大,这说明定位精度更好,这也符合我们设计的初衷。在AP50中,本文的精度不如tiny-dsod,本文认为tiny-dsod的较深的监督信息和特征金字塔帮助了他的分类。
4.4对比实验
输入分辨率和backbone
在这里插入图片描述
小图像细节不丰富,不是增大backbone可以弥补的,对于大输入图像小backbone不能很好地提取特征
在这里插入图片描述
将5
5的卷积换成33并增加一些通道数保证全部的参数量不变,AP和top1 error都变差,在33的卷积后面再加一个33使得感受野和55一样,虽然top1 error提高但是AP并没有提高,所以分类和检测还是有差异的,而且感受野对检测比较重要
将SNet146的后面添加conv5,并减少低层特征的使用,检测精度下降,分类精度提高,因为检测需要低层和高层特征的平衡,而分类高层特征更重要。对于SNet49,删除他的conv5,分类和检测精度都显著下降,将conv5的维度提高到1024,检测精度也会下降,分类精度上升。上述实验,验证了检测问题需要平衡低层和高层特征,他俩都重要。
在这里插入图片描述
对于backbone,SN146确实在计算量基本一致的情况下,达到了较好的检测精度,但是分类精度却比shufflenet v2低了一个点,再次说明了检测和分类问题的差异,但是对于检测SN146的提高并不多。
检测头和RPN以及CEM/SAM
在这里插入图片描述
本文压缩了RPN和head降低了计算量,降低了0.2个点,降低并不多;加入CEM之后提高一个多点,加速SAM之后进一步提高,但是如果只有SAM提高并不如CEM多;
backbone与head的配合
在这里插入图片描述
大身体和小头的设计相比反过来,可以提高3个多点
在这里插入图片描述
单线程合并BN
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值