ThunderNet——快速目标检测算法

Posted AI之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThunderNet——快速目标检测算法相关的知识,希望对你有一定的参考价值。

论文:ThunderNet: Towards Real-time Generic Object Detection
论文链接:https://arxiv.org/abs/1903.11752

最近几年目标检测算法确实发展非常迅速,整体上看还是分为2条路线,一条路线是效果更好,另一条路线是速度更快,虽然也有一些算法在二者之间有比较好的平衡,但是整体上还是有一定侧重,而这篇博客要介绍的ThunderNet重点在于速度快。ThunderNet是旷视的作品,整篇论文读下来思路很清晰也很自然,同时实验也比较充分,说服力较强,因此值得读一读。

设计更加快速的目标检测算法是伴随着移动端AI的不断发展所必须要解决的问题,个人认为目前这方面的做法主要有3种:
1、直接用更快速的分类算法作为特征提取网络。轻便快速的分类网络发展比较成熟(比如MobileNet系列、ShuffleNet系列等),而目前目标检测算法常用的特征提取网络是ResNet系列,因此最直接的做法就是将特征提取网络替换成速度更快的分类网络,这样就能取得速度上的提升,比如MobileNet-SSD等。
2、用模型加速压缩算法对原有的目标检测算法做加速。这方面其实偏工业化,算法层面的创新不会有很多,因为通过结合现有的模型加速压缩算法和目标检测算法即可实现。
3、重新设计网络结构,包括特征提取和检测网络。这部分和第一种最大的差别就是设计更适合目标检测任务的特征提取网络,而不是直接用图像分类算法的网络,比如Light Head R-CNN(也是旷视的作品)。

ThunderNet就是第3种类型,算法速度和效果对比如Figure1所示,整体上优势是很明显的。

ThunderNet的整体结构如Figure2所示,主要优化点有四个方面:特征提取网络、RPN和检测网络的加速、新增CEM模块、新增SAM模块

一、特征提取网络结构的优化。这方面主要遵循2个原则:
1、感受野要够大。这一点其实对模型效果影响是很大的,之前图森的一篇论文(TridentNet)对目标检测算法中感受野的影响做过非常深入的研究,用dialted卷积来扩大感受野,取得了非常好的效果。感受野不够大的话,检测部分做预测时有效的特征信息就有限,效果就相对差一些,尤其对于大尺寸目标而言,更容易出现这种感受野和目标尺寸不匹配的问题。因此ThunderNet在ShuffleNetv2基础上修改得到SNet作为特征提取网络,修改的重点就在于扩大感受野,比如将原本33的depthwise卷积层替换为55的depthwise卷积层。
2、浅层特征和深层特征数量的平衡。浅层特征包含较多的细节信息,对于检测算法的目标框位置预测来说是比较重要的;深层特征包含较多的语义信息,对于检测算法的目标分类来说是比较重要的,因此ThunderNet通过增加SNet网络浅层的通道数和减少网络深层的通道数来实现二者的平衡。平衡(或者叫匹配)是论文中一直在强调的问题,除了浅层特征和深层特征数量的平衡,还有特征提取网络复杂度和输入图像大小之间的平衡等等,论文中也有相关的对比实验,感兴趣的可以看看。

二、RPN和检测网络的加速。本身RPN的非共享层就很少,这里对RPN的网络层进一步压缩,采用55的depthwise卷积层替换原来的33卷积层,达到减少计算量的目的。而检测网络(R-CNN subnet)主要也是从通道缩减层面做加速。

三、新增的CEM(context enhancement module)模块如Figure3所示,扮演的角色和FPN类似但又不一样,FPN主要实现了浅层和深层特征的融合,操作相对耗时一些,而CEM也是在做特征融合,但是可以注意到其实CEM是在顶层特征基础上做特征融合,并没有和浅层特征做融合,这种做法和FPN是不一样的,因此CEM侧重的是扩大感受野,扩大感受野后可以得到更加全局的特征,这样和原本局部的特征做融合就达到全局特征和局部特征融合的目的。

四、新增SAM(spatial attention module)模块如Figure4所示。这部分主要是基于RPN特征得到一个权重矩阵,因为RPN参数训练时有一个前背景分类的监督信息,因此这个权重矩阵可以用来表达特征图上前景和背景的区域差异,将该权重矩阵和原来的特征图相乘后就得到调整后的特征图,这样基于调整后的特征图执行RoI特征提取就能达到强调前景特征,弱化背景特征的目的。

Figure6给出了是否增加SAM模块对特征图的影响,可以看到增加SAM后目标区域的特征值相比非目标区域的特征值要更大一些,这样提取到的RoI特征中目标特征占比也越大,达到强化目标特征,弱化背景特征的目的。

综合以上四点来看,第一、三、四点侧重于提升算法效果,第二点是侧重于提升算法速度,整体上又是在轻便的网络ShuffleNet v2和Light Head R-CNN基础上做改进的,因此就实现了Figure1所示的速度和效果的全面提升

实验结果
首先是对比实验,baseline采用替换特征学习网络为SNet146的Light Head R-CNN,整体计算量为714MFLOPs,压缩加速后的RPN和R-CNN检测网络在基本不影响效果的前提下大幅度减少了计算量(714->516->448),为了提高算法效果而提出的CEM和SAM模块分别将AP从21.6提升至23.3和22.9,最后整体上能达到23.6的AP。

Table2是ThunderNet和其他快速的目标检测算法在VOC数据集上的计算量和效果对比。

Table3是ThunderNet和其他快速的目标检测算法在COCO数据集上的计算量和效果对比。

因为FLOPs并不能准确反映实际模型的运行速度(可以参考ShuffleNet v2那篇文章,也是旷视的作品),好在这篇文章也给出了在不同硬件平台上计算得到的FPS,如Table9所示。

以上是关于ThunderNet——快速目标检测算法的主要内容,如果未能解决你的问题,请参考以下文章

亚马逊云科技最新赛事思路拓展 | 如何实现超大尺寸图像快速识别?

如何快速入门深度学习目标检测?

如何快速入门深度学习目标检测?

目标检测算法综述

目标检测系列 Mask R-CNN—图片预处理

『python』计算机视觉_经典目标检测算法中的几个概念