CenterNet阅读笔记
Objects as Points(CVPR 2019)
- 这个团队的还有另一篇关于CenterNet的应用的文章被ECCV 2020接收了
- 注意,这篇论文提出的检测器叫做CenterNet,还有另一篇文章的名字也叫做CenterNet,(CenterNet: Keypoint Triplets for Object Detection),要注意区分
- 这篇文章的heatmap和offset的思路来自CornerNet,可以参考一下CornerNet论文
摘要
- 本文将一个对象(object)建模为一个点(keypoint)——它的边界框(bounding box)的中心点(center)
- 检测器使用关键点估计(keypoint estimation)来找到中心点并回归object的其他属性,例如大小、3D 位置、方向,甚至姿势
- CenterNet不用进行NMS
1. 引言
- 目标检测是一个标准的keypoint estimation问题,只需将图像输入到生成heatmap的全卷积网络中。此heatmap的峰值对应于对象中心。feature map上的峰值预测物体边界框的高度和权重。
2. 相关工作
-
CenterNet与one-stage的anchor-based方法十分相似,但有一下三点不同:
- CenterNet只根据位置来分配 anchor,而不是box的overlap,对前景和背景分类没有手动阈值(没有超参数IoU)
- 每个物体只有一个正的 anchor,因此不需要非最大抑制(NMS),只需在keypoint heatmap中提取局部峰值即可
- 与传统的目标检测器(输出stride为16)相比,CenterNet使用更大的输出分辨率(输出stride为4),这就消除了对多个anchors的需求
-
CenterNet与其他keypoint estimation方法的区别:因为对于每一个物体仅仅进行一个中心点的估计,因此不用在检测后进行关键点的组合分组(比如CornerNet估计的是bb的两个corner,那么在一个特征图中会检测出许多的corner,哪些corner属于的是同一个bb呢?这就是组合分组过程)
3. 预备知识
- I ∈ R W × H × 3 I \in R^{W×H×3} I∈RW×H×3 是输入图片,目标是产生一个keypoint heatmap Y ^ ∈ [ 0 , 1 ] W R × H R × C \hat Y\in [0,1]^{\frac{W}{R}×\frac{H}{R}×C} Y^∈[0,1]RW×RH×C,其中 R R R是输出heatmap的stride, C C C是keypoint的类型(例如人体姿态估计中 C = 17 C=17 C=17,目标检测里面 C = 80 C=80 C=80),这里作者将 s t r i d e = 4 stride=4 stride=4,而 Y ^ x , y , c = 1 \hat Y_{x,y,c}=1 Y^x,y,c=1表示检测到的关键点,而 Y ^ x , y , c = 0 \hat Y_{x,y,c}=0 Y^x,y,c=0表示这个点是背景
- 对于gt上的一个属于第 c c c类的关键点 p ∈ R 2 p\in \mathcal R^2 p∈R2,可以得到在 s t r i d e = R stride=R stride=R的特征图上的对应点 p ~ = ⌊ p R ⌋ \widetilde p=\lfloor \frac{p}{R}\rfloor p =⌊Rp⌋,使用高斯核 Y x y c = e x p ( − ( x − p ~ x ) 2 + ( y − p ~ y ) 2 2 σ p 2 ) Y_{xyc} = exp (\frac{ −(x− \widetilde p_x)^2+(y− \widetilde p_y)^2}{2σ^2_p} ) Yxyc=exp(2σp2