论文: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——快速目标检测算法相关推荐

  1. ThunderNet:国防科大、旷视提出首个在ARM上实时运行的通用目标检测算法

    点击我爱计算机视觉标星,更快获取CVML新技术 今天跟大家分享一篇前天新出的论文<ThunderNet: Towards Real-time Generic Object Detection&g ...

  2. David P.Williams论文系列 合成孔径声纳图像快速目标检测:一种新算法及大规模性能分析

    摘要 本文提出了一种新的无监督合成孔径声纳(SAS)水下目标探测算法.该方法利用高分辨率的高质量SAS图像,这些图像上的目标有很多像素.该方法的一个特别新颖的组成部分还可以检测沙波纹并估计它们的方向. ...

  3. 【快速入门】YOLOv5目标检测算法

    文章目录 一.YOLOv5简介 二.网络结构 1.Input 2.Backbone 3.Neck 4.Head 三.改进方法 1.自适应锚框计算 2.自适应灰度填充 四.性能表现 五.YOLOv5入门 ...

  4. SlimYOLOv3:更窄、更快、更好的无人机目标检测算法

    点击我爱计算机视觉标星,更快获取CVML新技术 无人机因为硬件计算能力较弱,要在其上实现实时的目标检测,需要算法参数量小.占用内存少.推断时间短.常见的算法往往难以直接应用. 一种比较直接的做法是对模 ...

  5. 万字长文详解目标检测算法,超大超全(2022最新)

    摘要 1 概述 2 目标检测回顾 2.1 two-stage 2.2 one-stage 3 目标检测配方 3.1 基础概念 3.1.1 损失函数 3.1.2 Anchor-based 和 Keypo ...

  6. Yolo-Fastest:超超超快的开源ARM实时目标检测算法

    作者丨 qiuqiuqiu@知乎(已授权) 来源 | https://zhuanlan.zhihu.com/p/234506503 编辑 | AI约读社 Github:https://github.c ...

  7. 目标检测算法Faster R-CNN简介

    在博文https://blog.csdn.net/fengbingchun/article/details/87091740 中对Fast R-CNN进行了简单介绍,这里在Fast R-CNN的基础上 ...

  8. 增量学习不只有finetune,三星AI提增量式少样本目标检测算法 | CVPR 2020

    作者 | VincentLee 来源 | 晓飞的算法工程笔记 该论文研究了非常有意义的增量式少样本目标检测场景iFSD(Incremental Few-Shot Detection),场景设置如下: ...

  9. 综述 | 基于深度学习的目标检测算法

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:计算机视觉life 导读:目标检测(Object Det ...

最新文章

  1. CodeGen CreateFile实用程序
  2. 实践,用tornado实现自定义协议server
  3. 国内哪里培训python比较好-现在哪家培训机构培训python比较靠谱?
  4. grep 打印出过滤字段及后3行内容
  5. Docker系列教程01-Centos7安装新版Docker教程(10步)
  6. 解决scrollViewDidScroll do not work的方法
  7. Linux大作业任务书,《Linux系统管理》期末大作业任务书(2014.12)(1).doc
  8. 使用displsy:flex + overflow:hidden时子元素被压缩
  9. python安装详细步骤mac_Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
  10. 安泰测试新手教程-泰克数字示波器使用方法
  11. 《layui宇宙版教程》:分页组件laypage
  12. Non-static method 'save(java.long.Object)' cannot be referenced from a static context.
  13. 文章快速伪原创(怎么快速得到伪原创文章)
  14. 「应用架构」六边型架构:三个原则和一个实现示例
  15. Java职责链模式详解
  16. birthday中文是什么_birthday是什么意思_birthday在线翻译_英语_读音_用法_例句_海词词典...
  17. linux+agent卸载_Symantec Backup Exec 2012 Agent for Linux 卸载 - 潇湘隐者
  18. 清明祭:缅怀手机领域的那些先烈厂商们,你可还记得?
  19. MySql练习---[SQL查询语句练习]
  20. 登陆人人网爬取个人信息

热门文章

  1. 使用Windows系统自带的库去掉SDK库对openssl的依赖
  2. java手机买_java学习之买手机
  3. 看清、看透、看穿、看淡
  4. AS5600磁编码器原理图和驱动
  5. Anaconda3安装包高速下载方法
  6. 工业计算机的那些接口,工业平板电脑几种常用接口介绍
  7. 空气净化器十大排名,家用空气净化器排名推荐
  8. 虚拟化技术:实现资源高效利用和灵活管理的利器
  9. java枚举 星期_Java 枚举
  10. GoogLeNet 网络简介