当前位置:网站首页>Anchor Free检测器:CenterNet
Anchor Free检测器:CenterNet
2022-07-27 09:48:00 【yfy2022yfy】
2019/07/15,转载请注明
论文地址:https://arxiv.org/abs/1904.07850
源码:https://github.com/xingyizhou/CenterNet
一、摘要
目前比较成功的检测器,都是列举了极其多的潜在目标位置,然后对每一个分类,之后还要加上后处理,作者认为这种做法还是低效了。
本文中,作者把一个目标建模为一个点--目标检测框的中心点。检测器通过关键点估计,找到中心点,并回归其他属性,比如size,3D位置,方向甚至姿态。
CenterNet在MS COCO数据集上取得了最好的速度精度表现:
- 28.1%AP @142fps
- 37.4%AP @52fps
- 45.1%AP @1.4fps(多尺度测试)。
二、主要内容
1、方法介绍
本文中,作者把一个目标建模为一个点--目标检测框的中心点。检测器通过关键点估计,找到中心点,并回归其他属性,比如size,3D位置,方向甚至姿态。
目标检测就成为了标准的关键点预测问题:
- 把图片输入到全卷积网络生成heatmap,热图峰值对应目标中心;
- 根据峰值处的图片特征预测目标检测框的宽高;
另外,在中心点处输出附加预测,可以进行3d目标检测,以及多人姿态估计:
- 对于3D框估计,我们回归对象的绝对深度、三D框尺寸和对象方向
- 对于人体姿态估计,我们把二维关节点看作是中心位置+偏移量,直接回归偏移量
2、与之前基于anchor方法的对比
本文方法和基于anchor的one stage方法类似。中心点本身也可以视为一个框形状未知的anchor。
不同之处在于:
- 中心点的anchor分配只根据位置,不考虑IoU,也就没有阈值和分类;
- 一个目标只有一个正例中心点,不用NMS,而是简单的从heatmap中取峰值。
- CenterNet输出分辨率更高,输出stride=4,对比传统的stride=16。
3、输出热力图
网络输出结果是下采样stride=4。作者使用了几种全卷积编码-解码网络预测热力图:堆叠的Hourglass网络,上采样ResNet,和深层聚合DLA。
先计算热力图尺度下的GT关键点,在使用高斯核对GT点及邻近像素计算。如果高斯计算后有重叠,则每个像素使用最大值。训练时使用focal loss。
为了弥补降采样(stride=4)导致的量化误差,我们额外预测了中心点偏移量,训练时用L1 loss。
4、中心点即目标
假设目标框坐标是
. 中心点
由热力图网络输出。另外,可以回归目标框宽高
。考虑到计算量,这里只用输出的热力图来预测目标框尺寸,使用L1 loss。
作者使用一个网络来同时预测关键点、中心点偏移量、和尺度,共C+4个结果(关键点用C个热力图表示)顺带一提,中心点的值在0~1间,就是置信度。所有输出共享一个主干网,然后每一个输出会使用一个3x3卷积,ReLU和1x1卷积。

- 热力图的C表示该类别的热力图共有C个。
- 文中写了每个热力图都有n个峰值,作者设最大值100,我理解是多目标检测。
- 每个目标都有对应的中心点和框尺寸
5、检测扩展
除了输出目标检测外,该方法可以同样的形式,增加3D检测、人体姿态估计分支。


6、实验结果
(1)目标检测


大部分one-stage检测器,都进行了单尺度/多尺度的测试。
(2)3D目标检测

(3)人体姿态估计

论文引用之后还有附录,有兴趣的也可以看看。
边栏推荐
- Interview Essentials: shrimp skin server 15 consecutive questions
- Provincial Emergency Management Department: Guangzhou can strive to promote the experience of emergency safety education for children
- July training (day 11) - matrix
- 食品安全 | 无糖是真的没有糖吗?这些真相要知道
- Brush the title "sword finger offer" day04
- NPM common commands
- Understand chisel language. 24. Chisel sequential circuit (IV) -- detailed explanation of chisel memory
- July training (day 21) - heap (priority queue)
- Brush the title "sword finger offer" day03
- Gbase 8A MPP cluster capacity expansion practice
猜你喜欢

Nacos配置中心动态刷新数据源

GBase 8a MPP集群扩容实战

吃透Chisel语言.22.Chisel时序电路(二)——Chisel计数器(Counter)详解:计数器、定时器和脉宽调制

为什么微服务一定要有API网关?

Why is redis so fast? Redis threading model and redis multithreading
![[scm] source code management - lock of perforce branch](/img/c6/daead474a64a9a3c86dd140c097be0.jpg)
[scm] source code management - lock of perforce branch

How to use tdengine sink connector?

Esp8266 Arduino programming example PWM

I haven't delivered books for a long time, and I feel uncomfortable all over

Concurrent thread state transition
随机推荐
Brush the title "sword finger offer" day04
为什么微服务一定要有API网关?
Interview Essentials: shrimp skin server 15 consecutive questions
原生input标签的文件上传
July training (day 03) - sorting
去 OPPO 面试,被问麻了
Esp8266 Arduino programming example ADC
2016 outlook
July training (day 08) - prefix and
Gbase 8A MPP cluster capacity expansion practice
[cloud native] how can I compete with this database?
How to restore the original version after installing Hal Library
When I went to oppo for an interview, I got numb
NFT系统开发-教程
July training (day 10) - bit operation
[cloud native • Devops] master the container management tool rancher
面试必备:虾皮服务端15连问
Summary of engineering material knowledge points (full)
Esp8266 Arduino programming example - interrupt
通俗易懂!图解Go协程原理及实战