ThunderNet :像闪电一样,旷视再出超轻量级检测器,高达267fps | ICCV 2019
论文提出了实时的超轻量级two-stage detector ThunderNet,靠着精心设计的主干网络以及提高特征表达能力的CEM和SAM模块,使用很少的计算量就能超越目前的one-stage detectors,在ARM平台也达到了实时性,GPU的速度更是达到267fps
来源:【晓飞的算法工程笔记】 公众号
论文: ThunderNet: Towards Real-time Generic Object Detection

Introduction
one-stage detector和two-stage detector分别有着实时优势和准确率优势。two-stage detector实时性较差,几乎不能在移动设备上运行,尽管已经有了light-head版本,但对于小主干网络而言,这依然是过度设计的。而one-stage由于缺少ROI-wise的特征提取,准确率一直较差

为此,论文提出TunderNet,一个超轻量级的two-stage detector。在综合考虑输入分辨率,主干网络和detection head后,整体架构如图2,主要有两部分创新:
- Backbone part,提出轻量级主干网络SNet
 - Detection part,参考Light-Head R-CNN的设计,对RPN和R-CNN子网进一步压缩。对于小主干和小特征图产生的性能退化问题,提出两个高效的block:Context Enhancement Module(CEM),组合多尺寸的特征图来整合本地和全局上下文信息;Spatial Attention Module(SAM),使用RPN中的上下文信息来优化RoI warping的特征分布
 

ThunderNet准确率比目前的轻量级one-stage detector都要高,且仅用了很少的计算量,在ARM和x86设备上分别达到了24.1fps和47.3fps
ThunderNet
Backbone Part
Input Resolution
two-stage detector的输入通常都很大,为了减少计算量,ThunderNet使用$320\times 320$的输入分辨率。需要注意,输入分辨率应该与主干网络的能力匹配
Backbone Networks
由于图像分类和图像检测需要主干网络用不同的属性,简单地直接应用图像分类的网络作为主干不是最优的:
- Receptive field:感受域是卷积网络中很重要的特性,大的感受域能更有效地利用更多的上下文信息以及处理远距离的像素间关系,这对定位任务相当重要,特别是大目标
 - Early-stage and late-stage features:主干网络的early-stage特征图较大,低层特征能表达空间细节,而late-stage的特征图较小,高层特征更具区分能力。一般定位任务对低层特征更敏感,高层特征对分类任务更重要。在实际中发现,在大网络中定位任务比分类任务要难,表明低层特征对定位更重要,而过小的网络由于弱表达能力限制了两种任务的准确率,表明低层和高层特征都是重要的
 
目前的轻量级主干网络都不符合上面的因素:ShuffleNetV1/V2限制了感受域的大小(121 pixels vs. 320 pixels,(这里的计算方法暂时不了解,另外下面说V2为121 pixels,跟这里不一致,希望了解的读者能留言告知)),ShuffleNetV2和MobileNetV2则缺少了early-stage的特征,而Xception则没有足够的高层特征

基于以上的观察,论文改造ShuffleNetV2,设计了轻量级主干网络SNet用于实时检测,共3个版本: SNet49更快速推理;SNet535更准确;SNet146是耗时和准确率的折中,结构如表1所示,主要改进如下:
- 将所有3x3的深度卷积替换成5x5的深度卷积,扩大感受域(121 to 193 pixels)但不会带来过多额外的计算
 - 对于SNet146和SNet535,移除Conv5,然后增加early-stage的层的channel数,这样能不带来过多额外的计算的情况下提供更多低层特征
 - 对于SNet49,将conv5压缩到512维,然后增加early-stage的层的channel数,这样能很好地平衡低层特征和高层特征
 
Detection Part
Compressing RPN and Detection Head
  Light-Head R-CNN虽然已经够轻量级了,但是相对于小主干网络,仍然是过度设计的。为了解决这一问题,论文将256-channel 3x3卷积压缩为5x5深度卷积和256-channel 1x1卷积的组合,加大卷积核大小来增加感受域,而anchor box的尺寸和长宽比分别为${322,642,1282,2562,512^2}$和${1:2,3:4,1:1,4:3,2:1}$
  对于detection head,Light-Head R-CNN在RoI warping前生成很精简特征图(thin feature map)大小$\alpha\times p\times p$ ,$\alpha=10$,$p=7$为池化大小。由于主干网络更小,缩小$\alpha=5$来移除多余的计算,用PSRoI align($(p\times p\times c)\times w\times h$ to$c\times p\times p$)进行RoI warping,将245-d的RoI特征输出为$\alpha$-d,之后在R-CNN子网接一个1024-d全连接
Context Enhancement Module(CEM)

Light-Head R-CNN使用Global Convolutional Network(GCN)来产生精简特征图,GCN使用$k\times 1 + 1\times k$和$1\times k + k\times 1$卷积代替$k\times k$卷积,这样能提升感受域,但会带来两倍的计算量,不能采用。因此,论文借鉴FPN的思想,提出了Context Enhancement Module(CEM)来整合多尺度的局部上下文信息和全局的上下文信息

CEM融合$C_4$,$C_5$和$C_{glb}$,其中$C_{glb}$为global average pooling的全局特征,然后用1x1卷积将每组特征图压缩至$\alpha\times p\times p=245$,再$C_5$和$C_{glb}$进行2x上采样和直接复制(broadcast),最后进行融合。通过利用局部和全局信息,CEM能够有效地扩大感受域和改善精简特征图的表达能力。对比FPN,CEM精算量相当小
Spatial Attention Module
由于ThunderNet使用了更小的主干网络和输入分辨率,这增加了检测的难度。论文提出Spatial Attention Module(SAM),在空间维度对RoI warping前的特征图进行re-weight,核心思想是利用RPN的信息来优化特征图的特征分布

RPN能够识别目标区域,因此,RPN的中间特征能用来区分前景特征。SAM接受RPN的中间特征$\mathcal{F}{RPN}$和来自CEM的特征$\mathcal{F}{CEM}$,输出$\mathcal{F}^{SAM}$。整体流程如图4,$\theta$为维度转化函数,将特征图转化为特定channel,一般用1x1卷积,最后的Sigmoid将数值限制在$[0,1]$


SAM包含两个函数,第一个是推理函数,用来加强前景特征同时抑制背景特征。另一个是反向传播函数,因为SAM增加了额外的R-CNN梯度到RPN,需要稳定RPN的训练,RPN特征$i$与全部SAM特征$j$相关
Experiments
Implementation Details
每张图训练和测试分别有2000和200 RoIs,输入分辨率为$320\times 320$,使用多尺寸训练${240,320,480}$,使用SSD的数据增强,在VOC和COCO分别训练62.5K和375K,使用OHEM和Soft-NMS
Results on PASCAL VOC

可以看到,ThunderNet能达到SOTA,而且相对于同准确率的模型,计算量降低了很多
Results on MS COCO

MS COCO数据集包含很多小物体,尽管ThunderNet输入分辨率和主干网络都较小,但是准确率依然能在大幅减少参数量的情况下达到目前的SOTA
Ablation Experiments
Input Resolution

可以看到,小主干网络与大输入分辨率和大主干网络和小输入分辨率都达不到最优的结果,两者需要match
Backbone Networks
论文将SNet146和SNet49作为baselines,对主干网络的设计进行实验对比:

- 5×5 Depthwise Convolutions,对比$5\times 5$深度卷积和$3\times 3$卷积。从5(b)和5(c)可以看出,$5\times 5$卷积提供的大感受域对目标检测很重要
 - Early-stage and Late-stage Features,对比early-stage和late-stage特征的平衡关系。从5(d)、5(f)和5(g)可以看出,高层特征对分类有很多作用,但是对目标检测则不一定作用。因此,需要平衡高低层特征
 

- Comparison with Lightweight Backbones,将SNet与其它轻量级主干网络进行对比,SNet检测准确率是最好的
 
Detection Part

论文将压缩后的Light-Head R-CNN with SNet146作为baseline,对ThunderNet的detection part的设计进行对比:
- Baseline,性能达到21.9AP
 - RPN and R-CNN subnet,用5x5深度卷积代替RPN中的3x3卷积,减少28%参数量,保持了差不多的准确率(7b)。将R-CNN子网的全连接输出减半至1024,减少13%参数量,准确率降低0.2AP(7c)
 - Context Enhancement Module,将CEM应用到RPN和RoI warping,对比7c能提升1.7AP(7d)
 

- Spatial Attention Module,仅使用SAM能提升1.3AP和增加5%计算量(7c),图6可视化了7c和7e RoI warping前的特征图,SAM明显能加强前景特征
 - 最后同时加入CEM和SAM,对比baseline能提升1.7AP(7f)
 
Balance between Backbone and Detection Head

论文对比了主干网络和head的关系,large-backbone-small-head的准确率要高点,可能由于small-backbone-large-head的主干网络的特征太弱了,导致head过度设计
Inference Speed

论文对比了不同设备上的不同网络的推理速度,Yhunder with SNet49在ARM和CPU上都能达到实时性,而所有的网络在GPU上都大于200fps,速度相当劲爆
CONCLUSION
论文提出了实时的轻量级two-stage detector ThunderNet,在backbone部分,使用一个精心设计的目标检测专用的轻量级网络SNet,在detection部分,采用极度精简的detection head和RPN,提出Context Enhancement Module和Spatial Attention Module用于增强特征表达能力,最后对输入分辨率、backbone和detection head进行了缩减和平衡。ThunderNet使用很少量的计算量超越了目前的one-stage detectors,在ARM平台也达到了实时性,GPU的速度更是达到267fps
参考内容
 
 
 
写作不易,未经允许不得转载~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

ThunderNet :像闪电一样,旷视再出超轻量级检测器,高达267fps | ICCV 2019的更多相关文章
- ECCV 2018 | 旷视科技提出GridFace:通过学习局部单应变换实现人脸校正
		
全球计算机视觉三大顶会之一 ECCV 2018(European Conference on Computer Vision)即将于 9 月 8 -14 日在德国慕尼黑拉开帷幕,旷视科技有多篇论文被此 ...
 - 入职9月,旷视孙剑106分钟讲述CV创业科研的5大区别
		
雷锋网按:本文为旷视科技首席科学家孙剑日前在 CCF-ADL上做的题为<如何在大公司和创业公司做好计算机视觉研究>的分享,主要介绍了近期计算机视觉的发展现状,ResNet基本原理和设计,旷 ...
 - 旷视6号员工范浩强:高二开始实习,“兼职”读姚班,25岁在CVPR斩获第四个世界第一...
		
初来乍到,这个人说话容易让人觉得"狂". "我们将比赛结果提交上去,果不其然,是第一名的成绩."当他说出这句话的时候,表情没有一丝波澜,仿佛一切顺理成章. 他说 ...
 - 旷视MegEngine核心技术升级
		
旷视MegEngine核心技术升级 7 月 11 日,旷视研究院在 2020 WAIC · 开发者日「深度学习框架与技术生态论坛」上围绕 6 月底发布的天元深度学习框架(MegEngine)Beta ...
 - 旷视MegEngine基本概念
		
旷视MegEngine基本概念 MegEngine 是基于计算图的深度神经网络学习框架. 本文简要介绍计算图及其相关基本概念,以及它们在 MegEngine 中的实现. 计算图(Computation ...
 - 旷视研究院Detection组负责人
		
http://www.skicyyu.org/ https://zhuanlan.zhihu.com/p/61910297 俞刚,旷视研究院Detection组负责人.2014年博士毕业于新加坡南洋理 ...
 - 旷视科技 -- Face++ 世界最大的人脸识别技术平台
		
旷视科技 -- Face++ 世界最大的人脸识别技术平台: https://www.megvii.com/
 - 旷视等Oral论文提出GeoNet:基于测地距离的点云分析深度网络
		
基于网格曲面的几何拓扑信息可以为物体语义分析和几何建模提供较强的线索,但是,如此重要的连接性信息在点云中是缺失的.为此,旷视西雅图研究院首次提出一种全新的深度学习网络,称之为 GeoNet,可建模点云 ...
 - ECCV 2018 | 旷视科技提出统一感知解析网络UPerNet,优化场景理解
		
全球计算机视觉三大顶会之一 ECCV 2018(European Conference on Computer Vision)即将于 9 月 8 -14 日在德国慕尼黑拉开帷幕.届时,旷视首席科学家孙 ...
 
随机推荐
- 【Java】Map总结和源码注释
			
前言 Map为一个Java中一个重要的数据结构,主要表示<key, value>的映射关系对.本文包括了相关Map数据结构的总结和源码的阅读注释. HashMap 初始化,可以选择第二个初 ...
 - file_put_contents生成ansi文件
			
$line_body = array('张三','李四','王五'); $line_body = array_map(function ($element){return iconv('UTF-8', ...
 - 正式学习MVC 04
			
1.ActionResult ActionResult是一个父类, 子类包括了我们熟知的 ViewResult 返回相应的视图 ContentResult 返回字符串 RedirectResult( ...
 - 基于JS正则实现模板数据动态渲染
			
最近业务上需要动态渲染模板数据: 一.业务需求: 1.前端后端定义好模板以及变量名,根据打印机类型转换成对应sdk需要的标签模板,保存数据库 2.订单数据是前端根据支付结果获取的,最终渲染完的数据模板 ...
 - Layabox UI 笔记
			
1.UI List 官方文档是 https://ldc2.layabox.com/doc/?language=zh&nav=zh-js-3-3-7 通常用List的时候会出现滚动条按钮比例拉 ...
 - SpringBoot2 整合ElasticJob框架,定制化管理流程
			
本文源码:GitHub·点这里 || GitEE·点这里 一.ElasticJob简介 1.定时任务 在前面的文章中,说过QuartJob这个定时任务,被广泛应用的定时任务标准.但Quartz核心点在 ...
 - flask修改flask_wtf使其支持json数据的validation验证
			
flask默认是前后端不分离策略,前端通过flask+wtf表单来传递post,put...等数据. 现在前后端分离是趋势,那么对flask进行一定的修改,变为前后端分离,在前端页面中请求后端,那么请 ...
 - bug的前世今生
			
项目上发现的产品bug,若本地有问题,那就是漏测 1.提到产品bug系统 2.需要追踪,要么是漏测,要么是改出来的问题,漏测的需要补充到测试点里 项目上发现的产品bug,若本地没问题,那就是项目上的产 ...
 - C语言程序设计(三) 简单的算术运算和表达式
			
第三章 简单的算术运算和表达式 算数运算符:一元.二元.三元(条件运算符) 1/2是整型除法,1.0/2是浮点数除法 求余运算(%)限定参与运算的两个操作数必须为整数,不能对两个实型数据进行求余运算 ...
 - 如何在国内离线安装Chrome扩展并科学查资料
			
国内离线安装Chrome扩展 这些链接是从知乎国内离线安装 Chrome 扩展程序的方法总结 - 知乎看到的, 怕这个链接失效, 在这里自己备一份: Crx4Chrome - Download CRX ...