将对象作为点

2019
论文链接代码链接其他参考

本文主要记录 CenterNet 及其在HPE领域中的应用。

摘要:目标检测将物体视作一个 axis-aligned box,大多目标检测器枚举潜在物体的位置并对位置进行分类,这种做法冗余,无效,且需要额外的后处理。本文将一个对象建模为一个点,即其边界框的中心点,使用关键点估计找到中心点,并回归其他对象属性:如尺寸、3D位置、方向,甚至姿态。CenterNet是端到端可微,简单、敏捷、准确。CenterNet在MS COCO上实现了最佳速度-精度权衡:142 FPS实现28.1%AP,52 FPS实现37.4%AP,采取多尺度测试在1.4 FPS下实现45.1% AP。


文章目录

  • 将对象作为点
  • 1. Introduction
  • 2. Related work
  • 3. Preliminary
  • 4. Objects as Points
  • 4.2. Human pose estimation
  • 5. 姿态估计实验
  • 6. Conclusion



1. Introduction

目标检测器的分类器判断每个box包含物体还是背景,one-stage 目标检测器在图像上滑动anchor,并直接对其进行分类,two-stage目标检测器重新计算每个潜在box的特征,并对这些特征进行分类。然后利用nms算法,通过计算边界框IoU移除同一实例的重复检测进行后处理。后处理不可微,难以训练,阻碍了姿态估计器的端到端可微。同时,基于滑动窗口的目标检测器需要枚举所有可能的物体位置和尺寸,这种操作有些浪费。

本文提出的CenterNet用边界框的中心点来表示对象(见图2),对象的其他属性,例如对象大小、尺寸、3D范围、方向和姿态等直接从中心位置的图像特征中回归,将目标检测转为一个标准的关键点估计问题。 CenterNet将图像喂给全卷积网络生成热图,热图的峰值即为对象中心,在每个峰值的图像特征预测 bounding box 的 height 和 weight。使用标准的密集监督学习来训练模型,推理过程是一个单一的前向传递,摒弃用于后处理的nms

深度学习 3D姿态估计 centernet 姿态估计_ide


图2:CenterNet将对象建模为其bbox的中心点。边界框大小和其他对象特性从在中心的关键点特征推断。


CenterNet可以推广至多人姿态估计任务中,将2D关节位置视作距中心的offset,并在中心点位置直接回归到它们
如图1所示,CenterNet的运行速度很快。

深度学习 3D姿态估计 centernet 姿态估计_深度学习_02


图1:COCO val set上实时检测器的Speed-accuracy trade-off,CenterNet超过了一系列sota算法。


2. Related work

Object detection by region classification 对region分类进行目标检测: RCNN 从一大组候选区域中枚举物体位置,裁剪它们,并使用深度网络对其分类。Fast-RCNN 转而裁剪图像特征,以节省计算。二者都依赖慢的 low-level region proposal。

Object detection with implicit anchors 隐式anchor进行目标检测: Faster-RCNN在检测网络内生成 region proposal,对低分辨率图像网格周围的固定形状边界框(anchor)进行采样,并将其分类为“前景或背景”。与任何GT目标的IoU>0.7的anchor标记为前景,IoU<0.3的为背景或被忽略,每个region proposal 都会进行分类。采用多分类的proposal classifier形成了单阶段检测器的基础。
CenterNet 与 anchor-based onestage 方法密切相关,将中心点视作一个单个 shape-agnostic anchor(见图3)。不同的是:

  1. CenterNet仅根据位置而非 box overlap 来分配“anchor”,因此摒弃了对前景背景进行分类的手动阈值
  2. 每个对象只有一个正“anchor”,因此无需 NMS,只需在关键点热图中提取局部峰值。
  3. 与传统的目标检测器(输出步长16)相比,CenterNet使用更大的输出分辨率(输出步长4),消除了对多个anchor的依赖。

深度学习 3D姿态估计 centernet 姿态估计_深度学习 3D姿态估计_03


图3:基于anchor的检测器(a)和CenterNet(b)之间的差异。


Object detection by keypoint estimation 通过关键点进行目标检测. CenterNet并非第一个通过关键点进行目标检测的工作,CornerNet 检测两个边界框角作为关键点;ExtremeNet 检测所有对象的 top-, left-, bottom-, rightmost, 和 center points。两者都需要关键点检测后的分组组合阶段,显著减慢每个算法的速度。CenterNet只需为每个对象检测一个中心点,无需进行分组或后处理。

3. Preliminary

给定输入图像 深度学习 3D姿态估计 centernet 姿态估计_图像特征_04,目标是得到一张关键点热图 深度学习 3D姿态估计 centernet 姿态估计_深度学习 3D姿态估计_05,R 是 output stride,默认=4,也是原图对应热图的下采样倍率, C是关键点类数量,例如COCO的目标检测中,C=80。深度学习 3D姿态估计 centernet 姿态估计_图像特征_06。使用不同的 decoder-encoder 网络(hourglass、ResNet、DLA)预测 深度学习 3D姿态估计 centernet 姿态估计_图像特征_07

对GT的改造:对于每个类的GT关键点 深度学习 3D姿态估计 centernet 姿态估计_图像特征_08,计算一个低分辨率的等效值:深度学习 3D姿态估计 centernet 姿态估计_图像特征_09,然后使用下列高斯核将所有GT关键点 splat 到热图 深度学习 3D姿态估计 centernet 姿态估计_深度学习 3D姿态估计_05 上。

深度学习 3D姿态估计 centernet 姿态估计_ide_11


深度学习 3D姿态估计 centernet 姿态估计_深度学习 3D姿态估计_12

深度学习 3D姿态估计 centernet 姿态估计_深度学习_13


α=2,β=4是focal loss的超参,N 是图像 I 中的关键点数量,N的归一化将所有positive focal loss instances 归一化为1。

为降低由 R 引起的离散化误差,为每个中心点额外预测一个 local offset深度学习 3D姿态估计 centernet 姿态估计_目标检测_14。所有类 c 共享相同的 offset 预测。用L1损失训练offset:

深度学习 3D姿态估计 centernet 姿态估计_深度学习_15


仅监督关键点位置,忽略其他位置。

4. Objects as Points

类别 深度学习 3D姿态估计 centernet 姿态估计_目标检测_16 的对象 k 的 bbox为:深度学习 3D姿态估计 centernet 姿态估计_图像特征_17,则中心点为 深度学习 3D姿态估计 centernet 姿态估计_深度学习 3D姿态估计_18,回归出对象k的 size :深度学习 3D姿态估计 centernet 姿态估计_ide_19,为限制计算负担,对所有对象类别使用一个single size prediction:深度学习 3D姿态估计 centernet 姿态估计_ide_20,在中心点使用L1损失:

深度学习 3D姿态估计 centernet 姿态估计_图像特征_21


不正则化scale,而是直接使用原始像素坐标,并通过恒定的λ大小来 scale 损失。

总loss:

深度学习 3D姿态估计 centernet 姿态估计_图像特征_22


使用一个单一网络预测 keypoints ˆY , offset ˆO, 和 size ˆS,因此网络预测每个位置的输出通道=C+4,所有输出共享一个fully-convolutional backbone。对每个模态,backbone 特征通过一个单独的 3 × 3 convolution, ReLU 和另一个 1 × 1 convolution。图4为网络输出的overview:

深度学习 3D姿态估计 centernet 姿态估计_目标检测_23

图4:不同任务的网络输出:top: 目标检测;middle:3D目标检测;bottom: 姿态估计。所有模态都由同一backbone+3×3卷积+ReLU+1×1卷积生成。括号中的数字表示输出通道。



From points to bounding boxes 从点到边界框。推理时,先独立地提取每个类热图的峰值。检测所有响应值>= 其 8-connected neighbors 并保持top 100峰值。类 c 的检测中心点是:深度学习 3D姿态估计 centernet 姿态估计_深度学习 3D姿态估计_24,n个中心点的集合为 深度学习 3D姿态估计 centernet 姿态估计_图像特征_25。使用关键点值作为其检测置信度,并在位置处生成边界框:

深度学习 3D姿态估计 centernet 姿态估计_ide_26


深度学习 3D姿态估计 centernet 姿态估计_深度学习 3D姿态估计_27


关键点估计直接生成所有输出,无需基于IoU的 NMS 或其他后处理。峰值关键点提取是一个NMS替代方案,且可以使用3×3最大池化操作高效实现。

4.2. Human pose estimation

将姿态视作中心点的k×2维属性,并通过中心点的 offset 来参数化每个关键点。利用 L1 Loss ,以像素为单位,直接回归 joint offsets:深度学习 3D姿态估计 centernet 姿态估计_ide_28,通过masking损失来忽略不可见关键点。
为细化关键点,使用标准的 bottom-up 多人姿态估计进一步估计 k个人体关节热图:深度学习 3D姿态估计 centernet 姿态估计_深度学习_29。使用 focal loss 和局部像素 offset 来训练人体关节热图
然后初始预测 snap 热图上最近的检测关键点,center offset 充当一个分组线索,将单个关键点检测分配给最近的人体实例。 具体而言:深度学习 3D姿态估计 centernet 姿态估计_深度学习 3D姿态估计_30 是检测到的中心点,先回归出所有的关节位置:深度学习 3D姿态估计 centernet 姿态估计_图像特征_31,对每种关节类型 j,从相应热图 深度学习 3D姿态估计 centernet 姿态估计_目标检测_32 中基于置信度>0.1 提取所有关键点 深度学习 3D姿态估计 centernet 姿态估计_目标检测_33,然后将每个回归位置 深度学习 3D姿态估计 centernet 姿态估计_ide_34 分配给其最近的检测关键点 深度学习 3D姿态估计 centernet 姿态估计_图像特征_35,仅考虑检测到的对象 bbox 内的 joint 检测。

5. 姿态估计实验

结果如表5所示,直接回归关键点虽合理,但不能达到sota,特别在高IoU状态下结果不佳。将输出投影到最近的联合检测可以改善结果,并可以与sota多人姿态估计器竞争。

深度学习 3D姿态估计 centernet 姿态估计_目标检测_36

表5:COCO test-dev 关键点检测结果。-reg/-jd分别用于 direct center-out offset regression 和 matching regression to the closest joint detection。


6. Conclusion

CenterNet目标检测器建立在成功的关键点估计网络上,将对象表示为点,找到对象中心,并回归其size。该算法简单、快速、准确且端到端可微,无需任何NMS后处理。CenterNet可以在一次前向传递中估计一系列对象的其他属性,如姿态、3D方向、深度和范围。CenterNet 为实时目标识别和相关任务开辟了新方向。