将对象作为点
本文主要记录 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。
图2:CenterNet将对象建模为其bbox的中心点。边界框大小和其他对象特性从在中心的关键点特征推断。
CenterNet可以推广至多人姿态估计任务中,将2D关节位置视作距中心的offset,并在中心点位置直接回归到它们。
如图1所示,CenterNet的运行速度很快。
图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)。不同的是:
- CenterNet仅根据位置而非 box overlap 来分配“anchor”,因此摒弃了对前景背景进行分类的手动阈值。
- 每个对象只有一个正“anchor”,因此无需 NMS,只需在关键点热图中提取局部峰值。
- 与传统的目标检测器(输出步长16)相比,CenterNet使用更大的输出分辨率(输出步长4),消除了对多个anchor的依赖。
图3:基于anchor的检测器(a)和CenterNet(b)之间的差异。
Object detection by keypoint estimation 通过关键点进行目标检测. CenterNet并非第一个通过关键点进行目标检测的工作,CornerNet 检测两个边界框角作为关键点;ExtremeNet 检测所有对象的 top-, left-, bottom-, rightmost, 和 center points。两者都需要关键点检测后的分组组合阶段,显著减慢每个算法的速度。CenterNet只需为每个对象检测一个中心点,无需进行分组或后处理。
3. Preliminary
给定输入图像 ,目标是得到一张关键点热图 ,R 是 output stride,默认=4,也是原图对应热图的下采样倍率, C是关键点类数量,例如COCO的目标检测中,C=80。。使用不同的 decoder-encoder 网络(hourglass、ResNet、DLA)预测 。
对GT的改造:对于每个类的GT关键点 ,计算一个低分辨率的等效值:,然后使用下列高斯核将所有GT关键点 splat 到热图 上。
α=2,β=4是focal loss的超参,N 是图像 I 中的关键点数量,N的归一化将所有positive focal loss instances 归一化为1。
为降低由 R 引起的离散化误差,为每个中心点额外预测一个 local offset:。所有类 c 共享相同的 offset 预测。用L1损失训练offset:
仅监督关键点位置,忽略其他位置。
4. Objects as Points
类别 的对象 k 的 bbox为:,则中心点为 ,回归出对象k的 size :,为限制计算负担,对所有对象类别使用一个single size prediction:,在中心点使用L1损失:
不正则化scale,而是直接使用原始像素坐标,并通过恒定的λ大小来 scale 损失。
总loss:
使用一个单一网络预测 keypoints ˆY , offset ˆO, 和 size ˆS,因此网络预测每个位置的输出通道=C+4,所有输出共享一个fully-convolutional backbone。对每个模态,backbone 特征通过一个单独的 3 × 3 convolution, ReLU 和另一个 1 × 1 convolution。图4为网络输出的overview:
图4:不同任务的网络输出:top: 目标检测;middle:3D目标检测;bottom: 姿态估计。所有模态都由同一backbone+3×3卷积+ReLU+1×1卷积生成。括号中的数字表示输出通道。
From points to bounding boxes 从点到边界框。推理时,先独立地提取每个类热图的峰值。检测所有响应值>= 其 8-connected neighbors 并保持top 100峰值。类 c 的检测中心点是:,n个中心点的集合为 。使用关键点值作为其检测置信度,并在位置处生成边界框:
关键点估计直接生成所有输出,无需基于IoU的 NMS 或其他后处理。峰值关键点提取是一个NMS替代方案,且可以使用3×3最大池化操作高效实现。
4.2. Human pose estimation
将姿态视作中心点的k×2维属性,并通过中心点的 offset 来参数化每个关键点。利用 L1 Loss ,以像素为单位,直接回归 joint offsets:,通过masking损失来忽略不可见关键点。
为细化关键点,使用标准的 bottom-up 多人姿态估计进一步估计 k个人体关节热图:。使用 focal loss 和局部像素 offset 来训练人体关节热图
然后初始预测 snap 热图上最近的检测关键点,center offset 充当一个分组线索,将单个关键点检测分配给最近的人体实例。 具体而言: 是检测到的中心点,先回归出所有的关节位置:,对每种关节类型 j,从相应热图 中基于置信度>0.1 提取所有关键点 ,然后将每个回归位置 分配给其最近的检测关键点 ,仅考虑检测到的对象 bbox 内的 joint 检测。
5. 姿态估计实验
结果如表5所示,直接回归关键点虽合理,但不能达到sota,特别在高IoU状态下结果不佳。将输出投影到最近的联合检测可以改善结果,并可以与sota多人姿态估计器竞争。
表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 为实时目标识别和相关任务开辟了新方向。