CenterNet: Objects as Points 姿态估计阅读笔记

将对象作为点

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

目标检测器的分类器判断每个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)。不同的是:

  1. CenterNet仅根据位置而非 box overlap 来分配“anchor”,因此摒弃了对前景背景进行分类的手动阈值
  2. 每个对象只有一个正“anchor”,因此无需 NMS,只需在关键点热图中提取局部峰值。
  3. 与传统的目标检测器(输出步长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

给定输入图像 I ∈ R W × H × 3 I∈R^{W ×H×3} IRW×H×3,目标是得到一张关键点热图 Y ^ ∈ [ 0 , 1 ] W / R × H / R × C \widehat{Y}∈[0, 1] ^{W/R × H/R ×C} Y [0,1]W/R×H/R×C,R 是 output stride,默认=4,也是原图对应热图的下采样倍率, C是关键点类数量,例如COCO的目标检测中,C=80。 Y ^ x , y , c = 1 表 示 检 测 的 关 键 点 , Y ^ x , y , c = 0 表 示 背 景 \widehat{Y}_{x,y,c}=1 表示检测的关键点,\widehat{Y}_{x,y,c}=0 表示背景 Y x,y,c=1Y x,y,c=0。使用不同的 decoder-encoder 网络(hourglass、ResNet、DLA)预测 Y ^ \widehat{Y} Y
对GT的改造:对于每个类的GT关键点 Y ^ ∈ R 2 \widehat{Y}∈R^2 Y R2,计算一个低分辨率的等效值: p ~ = ⌊ p R ⌋ \widetilde{p}=\lfloor \frac{p}{R}\rfloor p =Rp,然后使用下列高斯核将所有GT关键点 splat 到热图 Y ^ ∈ [ 0 , 1 ] W / R × H / R × C \widehat{Y}∈[0, 1] ^{W/R × H/R ×C} Y [0,1]W/R×H/R×C 上。
在这里插入图片描述
σ p σ_p σp 是对象 size-adaptive 标准差。若同一类的两个Gaussian重叠,则取取 element-wise maximum,训练目标是具有 focal loss 的 penalty-reduced pixelwise 逻辑回归:

在这里插入图片描述
α=2,β=4是focal loss的超参,N 是图像 I 中的关键点数量,N的归一化将所有positive focal loss instances 归一化为1。
为降低由 R 引起的离散化误差,为每个中心点额外预测一个 local offset O ^ ∈ R W / R × H / R × 2 \widehat{O}∈R^{W/R × H/R ×2} O RW/R×H/R×2。所有类 c 共享相同的 offset 预测。用L1损失训练offset:
在这里插入图片描述
仅监督关键点位置,忽略其他位置。

4. Objects as Points

类别 c k c_k ck 的对象 k 的 bbox为: ( x 1 ( k ) , y 1 ( k ) , x 2 ( k ) , y 2 ( k ) ) (x^{(k)}_1 , y^{(k)}_1 , x^{(k)}_2 , y^{(k)}_2 ) (x1(k),y1(k),x2(k),y2(k)),则中心点为 ( x 1 ( k ) + x 2 ( k ) 2 , y 1 ( k ) + y 2 ( k ) ) 2 (\frac{x^{(k)}_1+x^{(k)}_2}{2} , \frac{y^{(k)}_1+ y^{(k)}_2 )}{2} (2x1(k)+x2(k),2y1(k)+y2(k)),回归出对象k的 size : s k = ( x 2 ( k ) − x 1 ( k ) , y 2 ( k ) − y 1 ( k ) ) s_k=( x^{(k)}_2 - x^{(k)}_1, y^{(k)}_2-y^{(k)}_1 ) sk=(x2(k)x1(k),y2(k)y1(k)),为限制计算负担,对所有对象类别使用一个single size prediction: S ^ ∈ R W / R × H / R × 2 \widehat{S}∈R^{W/R × H/R ×2} S RW/R×H/R×2,在中心点使用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 的检测中心点是: P ^ = ( x ^ i , y ^ i ) i = 1 n \hat{P} = {(\hat{x}_i, \hat{y}_i)}^n_{i=1} P^=(x^i,y^i)i=1n,n个中心点的集合为 P ^ c \hat{P}_c P^c。使用关键点值作为其检测置信度,并在位置处生成边界框:
在这里插入图片描述
在这里插入图片描述
关键点估计直接生成所有输出,无需基于IoU的 NMS 或其他后处理。峰值关键点提取是一个NMS替代方案,且可以使用3×3最大池化操作高效实现。

4.2. Human pose estimation

将姿态视作中心点的k×2维属性,并通过中心点的 offset 来参数化每个关键点。利用 L1 Loss ,以像素为单位,直接回归 joint offsets: J ^ ∈ R W / R × H / R × k × 2 \hat{J}∈ R^{W/R × H/R ×k×2} J^RW/R×H/R×k×2,通过masking损失来忽略不可见关键点。
为细化关键点,使用标准的 bottom-up 多人姿态估计进一步估计 k个人体关节热图: Φ ^ ∈ R W / R × H / R × k \hat{\Phi}∈ R^{W/R × H/R ×k} Φ^RW/R×H/R×k。使用 focal loss 和局部像素 offset 来训练人体关节热图
然后初始预测 snap 热图上最近的检测关键点,center offset 充当一个分组线索,将单个关键点检测分配给最近的人体实例。 具体而言: ( x ^ , y ^ ) (\hat{x},\hat{y}) (x^,y^) 是检测到的中心点,先回归出所有的关节位置: l j = ( x ^ , y ^ ) + J ^ x ^ y ^ j f o r j ∈ 1... k l_j = (\hat{x},\hat{y}) + \hat{J}_{\hat{x}\hat{y}j} \quad for \quad j ∈ 1 . . . k lj=(x^,y^)+J^x^y^jforj1...k,对每种关节类型 j,从相应热图 Φ ^ . . j \hat{\Phi}_{..j} Φ^..j 中基于置信度>0.1 提取所有关键点 L j = { l ~ j i } i = 1 n j L_j =\{\widetilde{l}_{ji}\}^{n_j}_{i=1} Lj={l ji}i=1nj,然后将每个回归位置 l j l_j lj 分配给其最近的检测关键点 a r g m i n l ∈ L j ( l − l j ) 2 arg min_{l∈L_j} (l − l_j)^2 argminlLj(llj)2,仅考虑检测到的对象 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 为实时目标识别和相关任务开辟了新方向。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值