Objects as Points:预测目标中心,无需NMS等后处理操作 | CVPR 2019
论文基于关键点预测网络提出CenterNet算法,将检测目标视为关键点,先找到目标的中心点,然后回归其尺寸。对比上一篇同名的CenterNet算法,本文的算法更简洁且性能足够强大,不需要NMS等后处理方法,能够拓展到其它检测任务中
来源:晓飞的算法工程笔记 公众号
论文: Objects as Points
Introduction
论文认为当前的anchor-based方法虽然性能很高,但需要枚举所有目标可能出现的位置以及尺寸,实际上是很浪费的。为此,论文提出了简单且高效的CenterNet,将目标表示为其中心点,再通过中心点特征回归目标的尺寸。
CenterNet将输入的图片转换成热图,热图中的高峰点对应目标的中心,将高峰点的特征向量用于预测目标的高和宽,如图2所示。在推理时,只需要简单的前向计算即可,不需要NMS等后处理操作。
对比现有的方法,CenterNet在准确率和速度上有更好的trade-off。另外,CenterNet的架构是通用的,能够拓展到其它任务,比如3D目标检测以及人体关键点预测。
Preliminary
定义输入图片$I\in R^{W\times H\times 3}$,预测关键点热图$\hat{Y}\in
[ 0, 1 ]^{\frac{W}{R}\times \frac{H}{R}\times C}$,其中$R$为热图的缩放比例,设定为4,$C$为关键点的类型。当$\hat{Y}{x,y,c}=1$时,像素点为检测的关键点,当$\hat{Y}{x,y,c}=0$时,像素点为背景。在主干网络方法,论文尝试了多种全卷积encoder-decoder网络:Hourglass网络,带反卷积的残差网络以及DLA(deep layer aggregation)。
关键点预测部分的训练跟CornerNet一样,对于类别$c$的GT关键点$p\in \mathcal{R}2$,计算其在热图上对应的位置$\tilde{p}=\lfloor\frac{p}{R}\rfloor$,然后使用高斯核$Y_{xyc}=exp(-\frac{(x-\tilde{p}_x)2+(y-\tilde{p}_y)2}{2\sigma2_p })$将GT关键点散射,即根据像素位置到关键点的距离赋予不同的权值,得到GT热图$Y\in [ 0,1 ]^{(\frac{W}{R}\times \frac{H}{R}\times C)}$,$\sigma_p$为目标尺寸自适应的标准差,如图3所示。如果相同类别的高斯核散射重叠了,则取element-wise的最大值。训练的损失函数为惩罚衰减的逻辑回归,附加了focal loss:
$\alpha$和$\beta$为focal loss的超参数,$N$为关键点数。为了恢复特征图缩放带来的误差,额外预测每个关键点的偏移值$\hat{O}\in \mathcal{R}^{\frac{W}{R}\times \frac{H}{R}\times 2}$,偏移值与类别无关,通过L1损失进行训练:
偏移值只使用GT关键点,其它位置的点不参与训练。
Objects as Points
定义$(x^{(k)}_1, y^{(k)}_1, x{(k)}_2,y{(k)}_2)$为目标$k$的GT框,类别为$c_k$,其中心点为$p_k=(\frac{x{(k)}_1+x{(k)}2}{2}, \frac{y{(k)}_1+y{(k)}2}{2})$。论文使用热图$\hat{Y}$得到所有的中心点,另外再回归每个目标$k$的尺寸$s_k=(x{(k)}_{2}-x{(k)}{1}, y{(k)}_{2}-y{(k)}{1})$。为减少计算负担,尺寸的预测与类别无关$\hat{S}\in \mathcal{R}^{\frac{W}{R}\times \frac{H}{R}\times 2}$,通过L1损失进行训练,只使用GT关键点:
完整的CenterNet损失函数为:
CenterNet直接预测关键点热图$\hat{Y}$、偏移值$\hat{O}$和目标尺寸$\hat{S}$,每个位置共计预测$C+4$个输出。所有的输出共用主干网络特征,再接各自的$3\times 3$卷积、ReLU和$1\times 1$卷积。
在推理时,首先获取各类别热图上的高峰点,高峰点的值需高于周围八个联通点的值,最后取top-100高峰点。对于每个高峰点$(x_i, y_i)$,使用预测的关键点值$\hat{Y}_{x,y,c}$作为检测置信度,结合预测的偏移值$\hat{O}=(\delta \hat{x}_i, \delta \hat{y}_i)$和目标尺寸$\hat{S}=(\hat{w}_i, \hat{h}_i)$生成预测框:
由于高峰点的提取方法足以替代NMS的作用,所有的预测框都直接通过关键点输出,不需要再进行NMS操作以及其它后处理。需要注意的是,论文采用了巧妙的方法实现高峰点获取,先对特征图使用padding=1的$3\times 3$最大值池化,然后对比输出特征图和原图,值一样的点即为满足要求的高峰点。
Implementation details
CenterNet的输入为$512\times 512$,输出的热图大小为$128\times 128$。实验测试了4种网络结构:ResNet-18、ResNet-101、DLA-34和Hourglass-104,其中使用可变形卷积对ResNet和DLA-34进行了改进。
Hourglass
Hourglass结构如图a所示,框中的数字为特征图的缩放比例,包含两个hourglass模块,每个模块有5个下采样层以及5个上采样层,上采样和下采样对应的层有短路连接。Hourglass的网络尺寸最大,关键点预测的效果也是最好的。
ResNet
ResNet大体结构跟原版一致,加入了反卷积用来恢复特征图大小,反卷积的权值初始化为双线性插值操作,虚线箭头为$3\times 3$可变形卷积操作。
DLA
DLA使用层级短路连接,原版的结构如图c所示。论文将大部分的卷积操作修改为可变形卷积,并对每层的输出进行了$3\times 3$卷积融合,最后使用$1\times 1$卷积输出到目标维度,如图d所示。
Experiment
不同主干网络在目标检测上的准确率和速度对比。
目标检测性能对比。
3D检测性能对比。
人体关键点检测性能对比。
Conclusion
论文基于关键点预测网络提出CenterNet算法,将检测目标视为关键点,先找到目标的中心点,然后回归其尺寸。对比上一篇同名的CenterNet算法,本文的算法更简洁且性能足够强大,不需要NMS等后处理方法,能够拓展到其它检测任务中 。
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】
Objects as Points:预测目标中心,无需NMS等后处理操作 | CVPR 2019的更多相关文章
- zz扔掉anchor!真正的CenterNet——Objects as Points论文解读
首发于深度学习那些事 已关注写文章 扔掉anchor!真正的CenterNet——Objects as Points论文解读 OLDPAN 不明觉厉的人工智障程序员 关注他 JustDoIT 等 ...
- 京东返利渠道,自己拿返利,无需A推B操作
京东返利渠道,自己拿返利,无需A推B操作,简单快捷方便 1.在微信小程序中搜索 “京东饭粒” 2.进入京东饭粒,进购物车下单(只能在购物车内下单返利) 3.收货后26天返京豆到你的京东账号中,”佛系返 ...
- CVPR 2019轨迹预测竞赛冠军方法总结
背景 CVPR 2019 是机器视觉方向最重要的学术会议,本届大会共吸引了来自全世界各地共计 5160 篇论文,共接收 1294 篇论文,投稿数量和接受数量都创下了历史新高,其中与自动驾驶相关的论文. ...
- 【论文阅读】Objects as Points 又名 CenterNet | 目标检测
目录 Abstract Instruction 分析 CenterNet 的Loss公式 第一部分:\(L_k\) 第二部分:\(L_{size}\) 第三部分:\(L_{off}\) Abstrac ...
- 快速解决PL/SQL Developer过期问题(无需注册码等复杂操作)
第一步:在开始菜单中输入 :regedit 的指令,点击回车,进入注册表编辑器界面 第二步:在注册表里按HKEY_CURRENT_USER\Software\Allround Automations ...
- 全卷积目标检测:FCOS
全卷积目标检测:FCOS FCOS: Fully Convolutional One-Stage Object Detection 原文链接:https://arxiv.org/abs/1904.01 ...
- Anchor-free目标检测综述 -- Keypoint-based篇
早期目标检测研究以anchor-based为主,设定初始anchor,预测anchor的修正值,分为two-stage目标检测与one-stage目标检测,分别以Faster R-CNN和SSD作 ...
- NMS(Non-Maximum Suppression) 非极大值抑制
NMS 非极大值抑制:找到局部最大值,并删除邻域内其他的值. 简单说一下流程: 首先剔除背景(背景无需NMS),假设有6个边界框,根据分类置信度对这6个边界框做降序排列,假设顺序为A.B.C.D.E ...
- 吴裕雄--天生自然python机器学习实战:K-NN算法约会网站好友喜好预测以及手写数字预测分类实验
实验设备与软件环境 硬件环境:内存ddr3 4G及以上的x86架构主机一部 系统环境:windows 软件环境:Anaconda2(64位),python3.5,jupyter 内核版本:window ...
随机推荐
- vue-router 路由传参的几种方式,刷新页面参数丢失
常见场景:点击列表详情,跳转到详情内页,传递id参数获取详情数据. 我们先来看看路由跳转的几种方式: 1.通过params方式传参 通过$route.push的path携带参数方式 // 路由配置 { ...
- Navicat Primium连接数据库报ORA-28547错误
这个问题主要是Navicat Primium与orecal中的oci.dll版本不一致造成的,无论是本地数据库或者网络数据库. 解决方法:在数据库orecal安装目录中搜索oci.dll文件,找到后将 ...
- react第十五单元(react路由的封装,以及路由数据的提取)
第十五单元(react路由的封装,以及路由数据的提取) #课程目标 熟悉react路由组件及路由传参,封装路由组件能够处理路由表 对多级路由能够实现封装通用路由传递逻辑,实现多级路由的递归传参 对复杂 ...
- Python高级语法-import导入-sys.path(4.4.1)
@ 目录 1.说明 2.代码 关于作者 1.说明 在开发程序的过程中,往往使用sys.path去验证下导入的目录,返回的是列表 先后顺序,就是扫描的先后顺序 ,也可以加入搜索路径 import有个特点 ...
- 关于c语言单项链表尾添加
犹豫了几天,看了很多大牛写的关于c语言链表,感触很多,终于下定决心,把自己对于链表的理解随之附上,可用与否,自行裁夺.由于作者水平有限也是第一次写,不足之处,竭诚希望得到各位大神的批评指正.制作不易, ...
- "Date has wrong format. Use one of these formats instead: %, Y, -, %, m, -, %, d." DateField使用input_formats参数
错误写法 : publish_date = serializers.DateField(format="%Y-%m-%d", input_formats="%Y-%m-% ...
- 微博爬虫,python微博用户主页小姐姐图片内容采集爬虫
python爬虫,微博爬虫,需要知晓微博用户id号,能够通过抓取微博用户主页内容来获取用户发表的内容,时间,点赞数,转发数等数据,当然以上都是本渣渣结合网上代码抄抄改改获取的! 要抓取的微博地址:ht ...
- 教你用Python自制拼图小游戏,一起来制作吧
摘要: 本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyt ...
- Swift3.0学习之基础部分
1.常量和变量 常量和变量把一个名字(比如 maximumNumberOfLoginAttempts 或者 welcomeMessage )和一个指定类型的值(比如数字 10 或者字符串 " ...
- EF Code First生成的数据表去复数(去掉数据表最后面那个s) 和 EF decimal 小数位的保留
modelBuilder.Conventions.Remove<System.Data.Entity.ModelConfiguration.Conventions.PluralizingTabl ...