论文阅读瞎记(五) CenterNet: Objects as Points 2019

deformable convolution 可变卷积具体操作

概要

在图片中检测识别物体作为轴对齐(axis-aligned)的bbox。大多数成功的检测器枚举了临近的潜在物体位置列表并且对其进行分类。这是浪费,不高效并且需要额外的后处理的。这篇文章中作者使用了不同的方法。作者将每一个物体建模为一个点(也就是物体的中心点)作者的检测器使用了关键点估计来找到中心点并且回归到其他物体属性中去,比如尺寸,3D位置,方向甚至动作。作者基于中心点的方法,CenterNet是端到端可微分的,简单快速且相比anchor base方法更准确。CenterNet在COCO数据集中达到了最好的速度-精度的权衡,(AP28.1% FPS142)(AP37.4% FPS52)(AP45.1% 多尺度测试 FPS1.4)作者使用了同样的方法在KITTI进行3Dbbox估计,在COCO中进行人体关键点估计。作者的方法与各种多阶段方法相比有竞争性且可以实时运行。

1.介绍

物体检测助力了许多视觉任务,比如实例分割,姿态估计,跟踪以及动作识别。在下游监控,自动驾驶以及视觉问答中有应用。当前物体检测通过像素对齐的最小外接bbox来表示每个物体。之后筛选大量的潜在物体bbox再分类。对于每一个bbox,分类器决定了图片中包含的是特定物体还是背景。单阶段检测器对可能的bbox进行滑动复杂排列也就是anchors,在图像上直接对他们分类不指定框的内容(真绕)双阶段检测器重新计算了每个潜在box中的图像特征之后对他们分类。后处理名为非极大值抑制,通过计算bbox的IOU来移除同一个实例的重复检测。这种后处理难以被微分且训练,因此目前检测器大多不支持端到端训练。尽管如此,在过去的五年里,这种想法得到了空前的成功。基于滑动窗口的物体检测器尽管有一些浪费,正如他们需要枚举所有潜在的物体位置以及维度。
这篇论文中,作者提供了一种更加简单且有效地替代方案。作者使用bbox的中心点代替物体如下图2所示:
在这里插入图片描述其他的一些属性比如物体尺寸,维度,3D表示,方向以及动作之后会直接从图片特征的中心位置回归。物体检测是一个标准的关键点检测问题。作者简单地将输入图片送入一个全卷积网络来生成热力图。热力图中心峰值对应着物体中心。在图像的每个峰值上预测物体的bbox高和宽。模型训练使用标准的密集式监督学习,推理是一个单独的前项网络,不包含作为后处理的极大值抑制。
作者的方法是通用的且易于拓展到其他工作上的。作者通过在每个中心点上预测额外的输出,提供了3D物体检测以及多人姿势估计的实验,见图4
在这里插入图片描述

对于3Dbbox估计,作者回归了物体的绝对深度,3Dbbox维度以及物体的方向。对于人体姿态估计,作者考虑使用简单地2D位置相对于中心的偏移,并且直接简单地对他们进行直接回归。
作者方法CenterNet的简单性使得它可以高速运行,见图1
在这里插入图片描述

使用了简单的Resnet-18加上卷积层。网络在COCO上面获得了28.1%的AP 142的FPS。使用了仔细调优的关键点网络DLA-34之后作者的网络达到了37.4% 52FPS的效果。使用了SOTA的关键点检测网络Hourglass-104加上多尺度,网络达到了45.1%AP 1.4FPS的效果。在3Dbbox估计与人体姿态估计中有着媲美SOTA效果与高推理速度。

2.相关工作

基于区域分类的物体检测

第一个成功的深度物体检测器:RCNN,枚举大量的区域坐标,剪裁出来之后每一个都用深度网络进行分类。Fast-RCNN
相反地对图片特征进行剪裁来节省计算。然而这两种方法依赖于慢速的低级区域提议方法。

使用隐式anchor的物体检测

FasterRCNN通过检测网络生成区域提议。这在低分辨率图像格子周围采样了固定大小的bbox并对其进行前背景分类。anchor与GT物体重叠区域大于0.7会被标记为前景,小于0.3的则是背景,其余的忽略。每一个生成的区域提议都是重分类的。根据基础的单阶段检测器将提议网络改变为多类别分类器。有几种提升但阶段检测器的方法比如先验anchor尺寸,多分辨率特征以及不同样本的损失重加权(Focal loss)
作者的方法近似于anchor-base的one-stage方法。中心点可以被看做是一个尺度不可知的anchor(见下图3)
在这里插入图片描述

然而这也有一些重要的区别。首先,CenterNet仅根据位置赋值anchor而不是box重叠。作者没有是手动修改分类的前背景阈值。第二,每个物体只有一个正anchor,因此不需要NMS。作者简单的提取热度图关键点峰值位置。第三,CenterNet使用高分辨率输出(stride只有4,似乎是只缩小了4倍)相比于传统物体检测网络stride=16.这就限制了需要使用多anchor(输出尺寸小,为了高召回必须提高proposal数量,于是用了多anchor)

通过关键点估计的物体检测:

作者不是第一个使用关键点预测来做物体检测的。CornerNet检测了两个bbox corner作为关键点,另一边ExtremeNet检测了所有物体的上下左右以及中心点。这两种方法与CenterNet都依赖于鲁棒的关键点估计网络。然而,他们都在每个关键点检测之后都需要一个组合分组( combinatorial grouping)阶段,这大大降低了算法速度。CenterNet另一方面简单提取每个物体的中心点,并不需要组合或者后处理。

单目3D物体检测:

3Dbbox估计用于自动驾驶领域。deep3Dbox使用了slow-RCNN系统框架,通过首先检测2D物体之后将所有物体送入3D估计网络。3D RCNN在Faster-RCNN head后面添加3D投影。DeepManta使用coarse-to-fine(由粗到精)Faster-RCNN在许多任务上面训练。作者的方法类似于单阶段版本的Deep3Dbox或者3DRCNN。因此CenterNet要更加简单且快速。

3.预备工作

在这里插入图片描述
W,H为输入图片的宽和高。作者的目的是产生热力图
在这里插入图片描述
R是输出步长,C是关键点类型。人体姿态检测中包含C=17个人体关节或者是C=80类物体种类检测。文章中作者使用默认输出步长R=4。输出预测通过参数R进行步长下采样。预测值等于1一位置检测的关键点,0则是背景。作者使用几种不同的全卷积编解码网络来预测,网络包含有:堆叠的沙漏网络,上卷积残差网络(ResNet)以及深层剧集网络(deep layer aggregation DLA)
作者训练了关键点预测网络。对于每一个属于C类的预测p,作者计算一个低分辨率的p,之后将所有GT关键点通过高斯核(Gaussian kernel)Y放到热力图上。Y的公式
在这里插入图片描述

σp是物体尺寸自适应标准差。如果两个同类的高斯重叠,就会使用元素级最大值。训练
目标为惩罚减小使用了focal loss的像素级逻辑回归,公式:
在这里插入图片描述
α和β是focal loss的超参数,N是图像I中关键点的数量。使用N进行归一化是选择将所有正的focal loss实例归一化为1.作者使用了 α = 2 , β = 4在左右的实验中。
为了恢复由于输出步长导致的离散化错误,作者额外的为每一个中心点预测了一个位置偏移O。所有类别c共享同样偏移预测。偏移量通过L1损失来进行训练,损失函数:
在这里插入图片描述

所有的监督行为只在关键点位置p上,其余全部的位置是忽略的。
下一节作者将展现如何拓展这个关键点估计器成为通用物体检测器。

4.作为点的物体

让x1,x2,x3,x4成为c类物体k的bbox,中心点pk为:
在这里插入图片描述

作者使用关键点估计Y来预测所有的中心点。此外,作者为每个物体k回归一个尺寸s
在这里插入图片描述

为了限制计算符合,作者对所有的物体类别使用单尺寸的预测在这里插入图片描述
作者使用L1 Loss回归中心点

在这里插入图片描述
作者不对尺度进行归一化,而是直接使用像素坐标。所有的训练目标为:
在这里插入图片描述

在这里插入图片描述
使用单网络来预测关键点Y,偏移O以及尺寸S。对于每个位置,网络预测输出数量为C+4。所有的输出使用同一个全卷积网络。特征在每个模态中都要经过一个分离33卷积,ReLU以及另一个11卷积(深度可分离卷积)
在这里插入图片描述

上图展示了网络输出总览。第五节以及补充部分详细介绍了额外的结构细节。

从点到BBox

在推理的时候,首先独立提取每个类别的热力图峰值。检测并降序保留前100个8近邻中最大的相应。让Pc成为类别c的一连串检测n的中心点。每一个关键点位置都是整形坐标。作者使用关键点值Y作为测量检测置信度的方法,并产生BBox
在这里插入图片描述

其中在这里插入图片描述是偏移预测
在这里插入图片描述是尺寸预测
所有的输出都是基于关键点估计直接产生的,没有使用NMS或者其他的后处理。峰值关键点提取地使用3*3max pool来替换NMS。

4.1 3D检测

3D检测估计了物体的三维bbox并且对于每个中心点要求三个额外属性:3D维度,方向,深度。这三个值使用不同的head回归。深度d是一个单独的标量。然而直接回归深度是困难的,所以使用了公式:
在这里插入图片描述

其中 σ是Sigmoid函数。深度D作为关键点估计的一个额外输出通道
在这里插入图片描述

同样使用两个被ReLU分隔的卷积但不同的是输出层使用了反Sigmoid变换( inverse sigmoidal transformation)在sigmoidal transformation之后使用L1损失训练了深度估计器。
物体的3D估计是三个标量。作者使用单独的head和L1loss直接回归公制的3D维度。
方向(Orientation)默认为一个单独的标量,也是难以回归的,作者使用两个bins来表示方向同时使用 in-bin regression。值得注意的是方向使用了8个标量进行编码,每个bin用了4个标量。在每个bin中,两个标量用于softmax分类,另外两个用于回归角度。关于这部分损失详见补充部分。

4.2人体姿态估计

人体姿态估计的目的是为了图片中人体实例构建k个2D人体关节位置(COCO中k=17)作者将动作看做是相对于中心点的k*2维属性,使用相对于中心点的偏移对每一个关键点进行参数化。直接使用L1loss回归像素级关节偏移。偏移:
在这里插入图片描述

作者使用mask来忽视看不到的关键点。这得到了一个类似于slow-RCNN的基于单阶段多人姿态估计回归网络。
为了提升关键点,作者进一步使用自底向上多人姿势重建估计了K人关节热度图:在这里插入图片描述
使用focal loss训练人体关节热度图并且定位像素偏移。
然后,我们将最初的预测调整到这张热图上最近的关键点。在这里,我们的中心偏移作为一个分组提示,将单个关键点检测分配给最近的人实例。

5.应用细节

做了四个网络结构的实验:ResNet-18. ResNet-101,DLA-34, Hourglass-104。ResNet和DLA-34使用了可变卷积。

沙漏网络(Hourglass)

沙漏网络下采样4倍,每一个沙漏模块都是5层对称的,使用了跳跃连接。这种网络比较大但是对于关键点估计的效果最好。

残差网络(eResNet)

Xiao提出了表纯的残差网络伴随三个上卷积网络能够的到更高分辨率的输出。作者首先改变三个网络的channel数量为256,128,64以轻量化。在每一个上采样之前增加一个3*3的可变卷积。上采样卷积核初始化使用双线性差值(bilinear interpolation)

DLA

DLA(Deep Layer Aggregation)是使用了分层跳跃连接的分类网络。作者使用全卷积上采样版本的DLA来进行稠密预测,使用迭代的特征聚合来增加特征图分辨率。为可变卷积增加了跳跃连接。上采样层替换了原有的33卷积(换成啥了也没说)
在256channel的每个输出前面增加了一个3
3卷积。最后使用1*1卷积输出。

训练

训练输入分辨率为512,模型输出128.使用了随机翻转,随机缩放(0.6~1.3),剪裁以及颜色抖动作为数据增强。后花旗使用Adam。训练3D估计的时候没有用增强方法。杜宇残差网络以及DLA-34,训练时batch isze128 学习率前140epochs为5e-4迭代90和120epochs时降低10倍。Hourglass-104网络batch29,学习率2.5e-4训练50epochs之后40epochs下降10倍。ResNet-101和DLA-34的下采样层使用ImageNet预训练模型、上采样部分使用随机初始化。ResNet-101和DLA-34在8张Titan-V上面训练了2.5天,Hourglass-104训练了5天

推理

使用了三个等级的测试增强:没有增强,翻转增强,翻转加多尺度(0.5, 0.75, 1, 1.25, 1.5)增强。对于翻转,我们在解码边界盒之前平均网络输出。对于多尺度,我们使用NMS来合并结果

6.实验

使用coco评估效果。118K训练图片,5K测试图片,20K对抗测试图片,使用AP为所有IOU的平均精度(0.5-0.75),还有额外的实验在PascalVOC上
######6.1物体检测
在这里插入图片描述

上表1展示了在COCO数据集上使用不同backbone以及测试选项的结果。作者测试环境:i7-8086K,TitanXp,pytorch0.4.1, CUDA9.0, CUDNN7.1
沙漏104效果最好,在这个backbone下42.2% AP in 7.8 FPS.打败了CornerNet的40.6% AP in 4.1 FPS 以及ExtremeNet的40.3% AP in 3.1 FPS 。运行时间的提升来自于更少的输出head以及更简单的box解码架构。CenterNet更好的效果意味着中心点相比corners和extreme points更容易检测。
与RetinaNet一样使用ResNet-101但是效果更好。但在上采样层相比RetinaNet使用了可变卷积。同样精度快两倍CenterNet 34.8%AP in 45 FPS另一边RetinaNet 34.4%AP in 18 FPS。
DLA-34平衡精度与速度52FPS with 37.4%AP,这比YOLOv3快了两倍并且提升了4.4%的AP。

SOTA对比

作者使用COCOtest-dev对比了其他的一些SOTA检测器,见下表2:
在这里插入图片描述

在多尺度评估的情况下,CenterNet+沙漏104backbone达到了AP45.1%的水平,超越了所有的单阶段检测器,双阶段检测器有些更精确但是慢。对于不同的物体尺寸与IOU阈值,CenterNet与滑动窗口检测器没有明显的不同。CenterNet行为就像通常的检测器,就是更快。

6.1.1额外的实验

非常不幸的情况下,两个不同的物体如果完美的对齐就可能会共享同一个中心点。这种情况CenterNet只能检测出其中一个。

中心点碰撞

COCO数据集中,在stride4有614对物体存在中心点碰撞。全部物体一共860001个,因此CenterNet会因为中心点定位冲突不能够预测出那些占总数小于0.1%的物体。这远远小于RCNN系列网络由于不完美的proposals导致的丢失(大概2%)(其实这就有点耍流氓了,RCNN丢2%是实际运行结果,对比CenterNet丢<0.1%只是理论值)比anchor base方法由于不充足的anchor导致20%的丢失(Faster-RCNN iou0.5 anchor15)。此外有715对物体的bbox iou大于0.7,并且会被赋值到两个anchor中,因此基于中心的赋值会产生更少的冲突。

NMS

为了测试基于NMS的IoU对于CenterNet是不必要的,作者将其作为预测的后处理步骤。DLA-34AP提升了0.5%,Hourglass-104则没有提升,故弃之。

训练和测试分辨率

训练时固定分辨率为512,测试的时候遵循CornerNet来保持原始图片分辨率并且保持网络从输入到最大stride都是0pad(那意思应该是整个backbone的padding=False)。对于ResNet和DLA,作者pad到了32个像素,对于沙漏网络,作者使用128像素。就像表3a中展示的:
在这里插入图片描述

保持原始分辨率比固定分辨率效果更好。训练以及测试使用低分辨率(384)会快1.7倍但是丢3AP。

回归损失

尺寸回归使用L1loss和SmoothL1进行对比。实验结果见上表3c:L1明显比SmoothL1好

bbox尺寸权重

作者分析了对于损失降权方法的敏感性,表3b中展示了0.1得到了最优。更大的值AP就会下降明显,由于损失缩放的范围是从0到w/R或者h/R的,而不是0到1.

训练策略

默认的,训练关键点估计网络140个eochs,其中到90epochs时下降学习率。如果在下降学习率之前进行双倍的训练(180+50 epochs)就能够提升1.1AP(上表3d)为了节省计算资源,都训练140epochs,但是DLA依旧训练230epochs
最终作者尝试多anchor预测的CenterNet,通过回归多个物体尺寸来实现。但效果并不好

6.2 3D检测

在KITTI数据集上面进行3Dbbox估计实验,场景为车辆驾驶。KITTI包含7841个训练图片。使用标准的训练评估分割方法。评估方法使用IOU=0.5,从0到1的攻击11个等级的recall的平均值。评估IOU是基于 2D bounding box (AP), orientation (AOP), and Bird-eye-view bounding box (BEV AP).训练和测试都使用pad到1280*384大小的图片。训练了70个epoch,其中在第45个epoch和60epoch下降学习率。使用了DLA-34backbone并且对深度,方向,维度使用损失衰减到1.其他的超参数与检测相同。
由于召回阈值太低,评估AP在10%浮动。因此训练了5个模型使用平均值。
作者对比了基于Deep3DBox的slow-RCNN和基于Mono3D的Faster-RCNN,结果见下表4
在这里插入图片描述

6.3 姿势估计

最后在MS COCO数据集上面进行CenterNet的人体姿势骨架的评估。作者评估了关键点AP,这个指标近似于bbox的AP但是使用物体关键点近似性代替了bboxIoU。
测试使用了DLA-34和Hourglass-104,这两个网络都使用中心点检测微调。DLA-34在320个epochs后手链(在8个GPU上花了3天)Hourglass-104则是150个epochs(5个GPU上跑了8天)。所有额外的损失权重被设为1,超参与检测相同。
结果展示在下图表5中
在这里插入图片描述

直接回归关键点效果还可以但是并不是最优。在高IOU情况下受限。将输出映射到最近的关节检测提升了结果。下图5展示了CenterNet在所有任务中的表现效果
在这里插入图片描述

在这里插入图片描述

7.总结

总的来说,提出了一种新的物体表达:points。Centernet物体检测器构建了一种成功的关键点估计网络,找到物体中心并且回归他们的尺寸。算法是简单快速准确且端到端的,还不需要任何NMS后处理。这个想法是普遍的,并且在简单的二维检测之外有广泛的应用。CenterNet可以在一次前进中估计一系列额外的对象属性,如姿态、3D方向、深度和范围。我们最初的实验是令人鼓舞的,并为实时物体识别和相关任务开辟了一个新的方向。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值