论文提出Light-Head R-CNN,一个精简的two-stage目标检测器设计准则,在表达能力很强的精简特征图上使用轻量级的R-CNN子网,不仅大量减少推理耗时,还提高了准确率,结合Xception-like的主干网络能够达到30.7mAP和102FPS



来源:【晓飞的算法工程笔记】 公众号

论文: Light-Head R-CNN: In Defense of Two-Stage Object Detector

Introduction


  目前的two-stage目标检测算法都有相似的特性,一个复杂的head连接着主干网络,而Faster R-CNN的全连接层和R-FCN的score map都是相当耗时的。因此,论文提出基于light-head的思路来设计快速且准确的two-stage detector,核心思想是通过large-kernel separable convolkution来产生特征表达能力很强的精简特征图,特征图的大小为\(\alpha\times p\times p\),\(\alpha\le 10\),同时精简RoI-wise的子网,从而大幅减少模型计算量

  由于light-head的结构,Light-Head R-CNN能够轻松的达到准确率和速度的最佳平衡,在大小型主干网络上都有很好的准确率和速度表现

Our Approach


Light-Head R-CNN

  Head主要指接在主干网络后面的结构,优化主要包含两个部分,分别针对R-CNN子网和RoI warping

  • R-CNN subnet

  Faster R-CNN使用两个大型卷积进行子网的RoI-wise的特征提取,虽然有利于分类,但由于前面的特征维度很大,导致计算量巨大。为了加速子网,R-FCN则先产生region-based的的score maps,channels为\(\#classes\times p\times p\),然后直接进行pool和average vote得到结果,虽然子网速度很快,但score map的产生相对耗时和耗内存,而且缺乏RoI-wise的特征提取,准确率可能不够

  基于上述问题,Light-Head R-CNN使用简单且廉价的全卷积层作为R-CNN子网,能很好的达到性能和准确率的平衡,如图2c所示。全连接层的耗时也RoI输出特征图数量有关,所以还要进行相关优化

  • Thin feature maps for RoI warping

  RoI warping的作用是使输入R-CNN子网的特征图大小固定,这里采用较小channel的精简特征图(thin feature maps)作为RoI warping前的输入。通过实验,在精简特征图上进行RoI warping不仅能提高准确率,还能节省内存和计算时间。如果使用PSRoI pooling,配合精简特征图能够增加额外的计算来加强R-CNN以及减少channel数。如果使用RoI pooling,配合精简特征图能够减少R-CNN的开销并丢弃Global Average Pooling来提升准确率

Light-Head R-CNN for Object Detection

  基于以上的讨论,Light-Head R-CNN在通用物体检测上的实现如图2C所示,后面的讨论会有两种设定,设置L为大主干网络,设置S为小主干网络

  • Basic feature extractor

  对于设置L,使用ResNet-101作为基础模型,对于设置S,则使用类似Xception的小网络。图2的"Conv layers"代表基础网络,conv4和conv5的卷积block标记为\(C_4\)和\(C_5\)

  • Thin feature maps

  论文在\(C_5\)上使用类似Inception和GCN的大型分解卷积,对于设置L和设置S,\(C_{mid}\)分别为256和64,而\(k\)和\(C_{out}\)则统一为15和\(10\times p\times p\),这样的特征提取能极大地提高感受域,从而提取更强大的特征图

  • R-CNN subnet

  子网只采用2048维的全连接层,后面再同时接两个全连接层来预测RoI的类别和位置回归,位置的回归只采用4维,而非\(\#classes\times 4\)维。由于精简特征图的强大表达能力,这样简单的子网也能达到很高的准确率

  • RPN(Region Proposal Network)

  RPN是用于\(C_4\)上的滑动类不可知的目标检测器,anchor的尺寸和长宽比分别维\(\{1:2,1:1,2:1\}\)和\(\{32^2,64^2,128^2,256^2,512^2\}\),使用IoU=0.7的NMS来去除重叠的bbox

Experiments


  论文实验比较多,这里只列举了部分比较重要的实验

Ablation Experiments

  • Thin feature maps for RoI warping

  为了验证精简特征图的作用,设计了图4的类似R-FCN的网络,通过1x1卷积将特征图channel数从3969降低到490,然后子网改为全连接进行分类和定位回归

  B1为原R-FCN,B2为增大输入和anchor数的R-FCN。尽管大幅降低了channel数,网络的性能只有小幅度的降低

  基于R-FCN,在使用大型分离卷积来增强特征图后,性能得到了提升,说明是相当有用的

  • R-CNN subnet

  表格里的Faster R-CNN为同样加大输入和anchor数的版本,可以看到,使用light-head能够进一步提升准确率

Light-Head R-CNN: High Accuracy

Light-Head R-CNN: High Speed

CONCLUSION


  论文在研究了当前的two-stage网络存在的速度问题后,针对性地提出Light Head R-CNN,一个精简的two-stage目标检测器设计准则,在表达能力很强的精简特征图上使用轻量级的R-CNN子网,不仅大量减少推理耗时,还提高了准确率,结合Xception-like的主干网络能够达到30.7mAP和102FPS

参考内容





写作不易,未经允许不得转载~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

Light-Head R-CNN : 旷世提出用于加速two-stage detector的通用结构,速度达102fps的更多相关文章

  1. 旷世提出类别正则化的域自适应目标检测模型,缓解场景多样的痛点 | CVPR 2020

    论文基于DA Faster R-CNN系列提出类别正则化框架,充分利用多标签分类的弱定位能力以及图片级预测和实例级预测的类一致性,从实验结果来看,类该方法能够很好地提升DA Faster R-CNN系 ...

  2. QueryDet: Cascaded Sparse Query for Accelerating High-Resolution Small Object Detection(QueryDet:用于加速高分辨率小目标检测的级联稀疏查询)

    QueryDet: Cascaded Sparse Query for Accelerating High-Resolution Small Object Detection(QueryDet:用于加 ...

  3. CNN结构:可用于时序预测复合的DNN结构-AcGANs、误差编码网络 ENN

    前言:模式识别问题 模式函数是一个从问题定义域到模式值域的一个单射. 从简单的贝叶斯方法,到只能支持二分类的原始支持向量机,到十几个类的分类上最好用的随机森林方法,到可以支持ImageNet上海量18 ...

  4. 解析opencv中Box Filter的实现并提出进一步加速的方案(源码共享)。

    说明:本文所有算法的涉及到的优化均指在PC上进行的,对于其他构架是否合适未知,请自行试验. Box Filter,最经典的一种领域操作,在无数的场合中都有着广泛的应用,作为一个很基础的函数,其性能的好 ...

  5. [CLPR] 用于加速训练神经网络的二阶方法

    本文翻译自: http://www.codeproject.com/Articles/16650/Neural-Network-for-Recognition-of-Handwritten-Digi ...

  6. ShuffleNet系列学习笔记

    ShuffleNet是旷世提出的高效轻量化网络,是一款很值得一提的轻量化网络,其相关论文也是很有价值的. ShuffleNet V1 该网络提出于2017年,论文为<ShuffleNet: An ...

  7. Linux 守护进程创建

    1. 守护进程: 是Linux中的后台服务进程.它是一个生存期较长的进程,通常独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件.守护进程常常在系统启动时开始运行,在系统关闭时终止 2. ...

  8. 告别DNS劫持,一文读懂DoH

    如果评选一个差评服务器榜单,除去育碧高居榜首外,一定也少不了 Nintendo Switch 让人头秃的联网服务.尽管任天堂已经架设了香港 CDN 服务器用于加速,但是更新安装的速度也没有什么大幅改变 ...

  9. 对DiscuzQ的一些使用见解

    之前因为体验了DiscuzQ,在几番纠结后,把博客换成了DiscuzQ(以下简称DZQ). 在一个月的使用中,发现这个程序对于个人来说,十分不友好. 于是今天又换回了Wordpress. 在这里说一下 ...

  10. [人脸活体检测] 论文:Aurora Guard- Real-Time Face Anti-Spoofing via Light Reflection

    Aurora Guard- Real-Time Face Anti-Spoofing via Light Reflection 论文简介 该论文提出的方法已经部署到百万台终端,整篇文章底气十足.作者设 ...

随机推荐

  1. Java设计模式-解释器模式Interpreter

    介绍 在编译原理中,一个算术表达式通过词法分析器形成词法单元,而后这些词法单元再通过语法分析器构建语法 分析树,最终形成一颗抽象的语法分析树.这里的词法分析器和语法分析器都可以看做是解释器 解释器模式 ...

  2. SDL开发笔记(三):使用SDL渲染窗口颜色和图片

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  3. matplotlib画图中x轴过于密集的解决办法

    import matplotlib.ticker as ticker ax.xaxis.set_major_locator(ticker.MultipleLocator(base=10)) # tic ...

  4. 基于java的学生信息管理系统

    开发说明:使用数组集合存储临时数据,实现学生信息管理系统,实现的功能有管理员的注册.登陆.增加学生信息.删除学生信息.查询学生信息.修改学生信息.学生信息列表 登陆注册界面 系统首页界面 增加 删除 ...

  5. ASP.NET 上传文件导入Excel

    前言 本文对应的场景是导入Excel数据,Excel对应的字段都配置在xml文件中.截图如下: 代码实战 工具类 实体类:XMLReadModel.cs public class XMLReadMod ...

  6. AFNetworking整体框架简单整理

    一.AFNetworking整体框架是怎样的 1.UIKit集成模块 UIKit 2.请求序列化 Serialization 3.响应序列化 Serialization 4.会话 NSURLSessi ...

  7. Gitlab中的打包作业完成后,更新http服务器里的版本号文件

    背景 在.gitlab-ci.yml里面,我们有4个场景 dotnet build.dotnet pack和dotnet push 单元测试 SSH到http服务器,更新对应的版本号文件里面的版本数字 ...

  8. 【Azure Developer】使用 Azure Python 查看 Azure 所有的 Alert rule

    问题描述 在Azure Alert 门户中,可以列举出所有Azure资源的Alert rule信息,如下图: 如果像通过Python SDK来获取所有的Alert Rule,有什么可以参考的代码吗? ...

  9. Nebula Graph 1.0 Release Note

    Nebula Graph 1.0 发布了.作为一款开源分布式图数据库,Nebula Graph 1.0 版本旨在提供一个安全.高可用.高性能.具有强表达能力的查询语言的图数据库. 基本功能 DDL & ...

  10. Python 中read()、 readline() 、readlines()三者之间的区别?

    read()方法用于一次性读取整个文件的内容,并将其作为一个字符串返回. readline()方法用于逐行读取文件的内容.每次调用readline()方法,它会读取文件的下一行,并将其作为一个字符串返 ...