孤读Paper——《CenterNet:Objects as Points》

点即是目标


  建模对象为单个的点——即目标框的中心点。我们的检测器使用关键点估计来找到中心点并且回归出全部其他的目标属性,比如大小,3D位置,方向甚至姿势。我们基于中心点的方法称为CenterNet,是一个端到端可微的检测方法,比起基于目标框的检测器更简单,更快而且更准确。尤其是姿势估计部分的关键点分组,比起openpose的复杂的后处理,该论文的方法更巧妙,通过对各个关键点直接回归,然后通过回归的结果对应去找自下而上得到的关键点结果,进行单个实例的关键点分组…


Key Words:KeyPoint、CenterNet

CVPR 2019

作者:中科院、牛津大学、华为诺亚方舟实验室

Code:https://github.com/xingyizhou/CenterNet

Agile Pioneer

  

摘要

  目标检测器用水平框来确定一个图像中的目标。最好的目标检测器几乎列举了每个目标的全部的潜在的位置和分类结果。这种做法是奢侈的,低效的而且需要额外的后处理。本文中我们提出了一种不同的方法。我们建模一个对象为一个单个的点——即目标框的中心点。我们的检测器使用关键点估计来找到中心点并且回归出全部其他的目标属性,比如大小,3D位置,方向甚至姿势。我们基于中心点的方法称为CenterNet,是一个端到端可微的检测方法,比起基于目标框的检测器更简单,更快而且更准确。CenterNet在MS COCO数据集上达到了最好的速度-准确率的权衡,142FPS下能够达到28.1%的AP,在52FPS下能够达到37.4%的AP,并且在多尺度测试下速度1.4FPS达到了45.1%AP。我们使用相同的方法在KITTI的基准上估计3D框,在COCO关键点数据集上做人体姿态估计。我们的方法的表现与复杂的多阶段方法比是有竞争力的,而且可以实时运行。

介绍

  目标检测驱动了许多视觉任务,比如实例分割,姿势估计,追踪,和动作识别。它的下游应用还有监视,自动驾驶,和视觉问答。当前的目标检测器通过一个紧密包含对象的水平框来代表每个对象。然后将目标检测问题退化为一个图像分类问题,对大量的潜在目标框进行分类。对于每个目标框,分类器决定图像的内容是否是一个具体的对象还是背景。一阶段检测器把名为anchors的复杂排布的可能的框在图像上滑动,并且对小图直接进行分类而不修正框的内容。二阶段检测器对每个潜在的框重新计算了图像特征,然后对这些新特征进行分类,(也就是repooling操作,如:roi pooling以及roi align)。后处理也就是非极大值抑制,然后通过计算框的IOU去除同一对象的多余检测结果。这个后处理结果很难去微分和训练,因此当前大多数的检测器都不是端到端可训练的。尽管如此,通过过去五年,这个想法也能有一个不错的经验主义的成功。基于滑动窗口的目标检测器不管怎么样都是有一点计算奢侈的,比如他们需要列举所有可能的目标位置和维度。

图1:在COCO验证集合上实时检测器的速度-准确率的权衡。我们提出的CenterNet超过了一些系列的SOTA算法

  本文中,我们提供了一个更简单并且更高效的可替代的目标检测方法。我们通过一个对象框中心的单个点来表示目标(图2所示)。其他的属性,比如目标尺寸,维度,3D范围,方向,和姿势在中心点的位置上直接通过图像特征来回归(多个属性对应多个channel)。目标检测问题就是一个标准的关键点估计问题。我们简单的把一个输入图像喂到一个全卷积网络当中生成了一个热力图。该热力图的峰值相应的就是目标的中心。图像特征在每个峰值处预测目标的边界框的高和宽。模型训练使用标准的密集监督学习方法。推理过程就是一个网络的前向运算,不需要非极大值抑制后处理。

图2:我们建模了一个对象为目标框的中心点。目标框的大小和其他的目标属性通过位于中心的关键点特征来推理。彩色效果最好。

  我们的方法是普适的可以通过较小的工作量就可以延展到其他任务上。我们提供了3D目标检测和多人的姿势估计的实验,通过在每个中心点来预测额外的输出(图4所示)。对于3D框估计,我们回归目标的绝对深度,3D框的维度和目标的方向。对于人的姿势估计,我们考虑距离中心的二维的联合位置作为补偿并直接在中心点位置回归它们。

  我们的方法是简易的,CenterNet,可以高速的运行(图1所示)。使用一个简单的Resnet-18作为主干网络和上采样卷积层,我们的网络可以在COCO数据集合上达到142FPS而且能够有28.1%的框平均精度。通过一个精心设计的关键点检测网络DLA-34,我们的网络在COCO数据集上可以达到52FPS和37.4%的平均精度。而配备目前最好的关键点估计网络Hourglass-104,和多尺度测试,我们的网络在COCO数据集上能够达到45.1%的平均精度和1.4FPS的速度。在3D框估计和人体姿势估计上,我们的结果和目前最好的算法不分伯仲,并可以高速推理。

相关工作

  通过区域分类的目标检测。 成功的深度目标检测器之一,RCNN从一个很大的区域候选集合中枚举了目标的位置,裁剪他们,并且使用一个深度网络进行分类。Fast-RCNN通过裁剪图像的特征来节省运算。然而这些方法都依赖于缓慢的低水平的区域建议方法。

  使用隐式anchors的目标检测。 Faster-RCNN通过检测网络产生候选区域。该方法在一个低分辨率的格子抽样了固定形状的框(anchors)并且分类为“前景或背景”。一个anchor框如果与任意一个真实目标框的交叠>0.7被标记为前景框,如果<0.3则被标记为背景框,剩下情况的框忽略。每个产生的区域建议框被再次分类到标记类别。改变建议框分类器为一个多类别的形式就是一阶段检测器。几个一阶段检测器的提升包括anchor的先验形状,不同的特征分辨率,和损失函数在不同样本间的重新分配权重。

  我们的方法非常接近于以anchor机制为基础的一阶段检测方法。一个中心点可以被看作为一个单独的形状无关的anchor(图3所示)。然而有几个重要的差别。首先,我们的CenterNet仅根据位置来指定一个“anchor”,不是框的重叠。没有用于分类前景和背景的自定义阈值。第二,每个目标仅有一个正样本的“anchor”,因此也不需要非极大值抑制的后处理。我们简单地提取关键点热力图的每处峰值。第三,CenterNet比传统的目标检测算法(输出步长为16)输出更大的分辨率(输出步长为4)。这样就消除了对于多尺度anchors的必要。

  通过关键点估计的目标检测。 我们不是最先把关键点估计用于目标检测的。CornerNet把目标框的两个角点作为关键点,而ExtremeNet检测所有目标的最上,最左,最下,最右点和中心点。这些方法像我们的CenterNet一样,都是基于相同的鲁棒性的关键点估计网络。

  单目3D目标检测。 3D框估计驱动了自动驾驶技术。Deep3Dbox使用一个slow-RCNN方式的框架,通过先检测2D目标然后把每个目标喂到3D估计网络当中。3D RCNN在Faster-RCNN上面添加了额外的分支。这样来说,CenterNet与这些方法比是更简单且更快的。

图3:基于anchor和我们基于中心点的目标检测器的差异,最好放大观看。
左图是标准的基于anchor的检测模型。Anchors中把和任意目标框的IOU值大于0.7的作为正样本,
把IOU值小于0.3的作为负样本,其余的都作为忽略样本。
右图是基于中心点的检测模型。中心像素被指定为一个目标。
附近的像素点用于减少负样本的损失。目标的尺寸是回归得到的

准备工作

  用 I ∈ R W × H × 3 I \in R^{W\times H\times 3} IRW×H×3表示一个宽度为 W W W并且高度为 H H H的输入图像。我们的目标是产生一个关键点的heatmap Y ^ ∈ [ 0 , 1 ] W R × H R × C \hat{Y} \in [0, 1]^{\frac{W}{R} \times \frac{H}{R} \times C} Y^[0,1]RW×RH×C,其中 R R R是输出步长, C C C是关键点类型的个数。比如在人体关键点估计中包含 C = 17 C=17 C=17个人体关节类型,或在目标检测的目标分类中 C = 80 C=80 C=80个类别。我们使用在文献[4,40,42]中默认的输出步长 R = 4 R=4 R=4。输出步长通过一个因子R来下采样的模型的输出结果。一个预测结果 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是背景。我们使用几个不同的全卷积编解码网络从一个图像 I I I来预测 Y ^ \hat{Y} Y^:一个堆叠的hourglass网络[30,40],上卷积的残差网络(ResNet)[22,55],和深层聚合网络(DLA)[58]。
  我们遵循Law和Deng[30]训练了关键点预测网络。对于类别c中每一个关键点的真实值 p ∈ R 2 p \in R^2 pR2我们计算了一个低分辨率等价的 p ~ = [ p R ] \tilde{p}=[\frac{p}{R}] p~=[Rp]。我们之后把所有的真实的关键点分布在一个heatMap上 Y ∈ [ 0 , 1 ] W R × H R × C Y \in [0, 1]^{\frac{W}{R} \times \frac{H}{R} \times C} Y[0,1]RW×RH×C并使用一个高斯卷积核 Y x y c = e x p ( − ( x − p ~ x ) 2 + ( y − p ~ y ) 2 2 σ p 2 ) Y_{xyc}=exp(- \frac{(x-\tilde{p}_{x})^2+(y-\tilde{p}_{y})^2}{2\sigma^{2}_{p}}) Yxyc=exp(2σp2(xp~x)2+(yp~y)2)生成一个二维的正态分布,其中 σ p \sigma_{p} σp是一个对象尺寸的自适应标准差[30]。如果两个同类别的高斯结果重合,我们就取每个元素的最大值。训练目标函数是一个惩罚减少的像素级别的带有focal loss的逻辑斯蒂回归。

  其中 α \alpha α β \beta β是focal loss的超参数[33], N N N是图像 I I I中关键点的个数。通过 N N N的标准化被选择作为标准化全部正类的focal loss实例范围为1。在所有的实验中我们采取 α = 2 \alpha=2 α=2 β = 4 \beta=4 β=4同样遵循Law和Deng[30]。

  为了弥补由输出步长造成的量化误差,我们对每个关键点额外预测了一个定位的偏移量 O ^ ∈ R W R × H R × 2 \hat{O} \in R^{\frac{W}{R}\times\frac{H}{R}\times2} O^RRW×RH×2。一个目标的所有的类别 c c c共享相同的预测偏移量。偏移量损失使用 L 1   l o s s L1\space loss L1 loss

  这个loss只是用于监督关键点 p ~ \tilde{p} p~,忽略所有其他的定位,不用于监督回归部分。

  下一部分,我们将展示如何扩展关键点估计到一个通用的目标检测器中。

目标看作点

  让 ( x 1 ( k ) , y 1 ( k ) , x 2 ( k ) , y 2 ( k ) ) (x_1^{(k)},y_1^{(k)},x_2^{(k)},y_2^{(k)}) (x1(k),y1(k),x2(k),y2(k))表示类别为 c k c_k ck的目标 k k k。则该目标的中心点位于 ( x 1 ( k ) + x 2 ( k ) 2 , y 1 ( k ) + y 2 ( k ) 2 ) (\frac{x_1^{(k)} + x_2^{(k)}}{2},\frac{y_1^{(k)} + y_2^{(k)}}{2}) (2x1(k)+x2(k),2y1(k)+y2(k))
。用我们的关键点估计器 Y ^ \hat{Y} Y^来预测所有的中心点。此外,我们对每一个目标 k k k回归其尺寸 s k = ( x 2 ( k ) − x 1 ( k ) , y 2 ( k ) + y 1 ( k ) ) s_k=(x_2^{(k)} - x_1^{(k)}, y_2^{(k)} + y_1^{(k)}) sk=(x2(k)x1(k),y2(k)+y1(k))。为了限制计算负担,我们为所有目标种类使用单一的尺寸预测 S ^ ∈ R W R × H R × 2 \hat{S} \in R ^{\frac{W}{R}\times\frac{H}{R}\times2} S^RRW×RH×2意思就是只预测两个channel一个是W一个是H,而不是一个类别对应两个channel和关键点偏移量类似的我们也使用L1 loss作为损失。

  我们没有对数值范围进行标注化,而是直接使用原始的像素坐标来运算。取而代之的是我们通过常数系数来做loss的标准化,全部的训练目标的loss如下:

  如无特殊说明,我们在全部的实验中设置 λ s i z e = 0.1 \lambda_{size}=0.1 λsize=0.1 λ o f f = 1 \lambda_{off}=1 λoff=1。我们使用一个单个的网络来预测关键点 Y ^ \hat{Y} Y^,偏移量 O ^ \hat{O} O^以及尺寸 S ^ \hat{S} S^。网络在每个位置预测一个数量为C+4(2个尺寸和2个关键点偏移量)的输出。全部输出共享一个通用的全卷积主干网络。对于每个形态,主干网络的特征分别通过的3x3的卷积,ReLU和另外的1x1卷积,比如hm的不同类别或对尺寸和偏移量的预测。图4展示了网络网络输出的总览。第5节和补充材料包含额外的结构细节。

图4:我们的网络对于不同任务的输出:最上面是目标检测,中间的是3D目标检测,下面的是姿态估计。所有的形态都是从一个共同的主干网络产生的,通过不同的3x3和1x1来分开卷积再通过ReLU激活。中括号里面的数字意味着输出的channel数。细节看第4部分。

  从点到框 在推理阶段,我们对每个类别(一个类别一个channel)先独立地提取heatmap上的峰值点。我们检测所有比周围八临域都大的像素点,论文中使用的是3x3的最大池化,每个类别保留100个。对于类别 c c c我们用 P ^ c \hat{P}_c P^c来表示n个检测到的中心点的集合 P ^ = ( x i ^ , y i ^ ) i = 1 n \hat{P}={(\hat{x_i},\hat{y_i})}^n_{i=1} P^=(xi^,yi^)i=1n每个关键点位置是一个给定的整数坐标 ( x i , y i ) (x_i, y_i) xi,yi。我们用关键点 Y ^ x i y i c \hat{Y}_{x_iy_ic} Y^xiyic的值来度量检测的置信度,并且用如下公式在这个位置产生水平框

很好理解,其中 ( δ x i ^ , δ y i ^ ) = O ^ x i ^ , y i ^ (\delta\hat{x_i}, \delta\hat{y_i}) = \hat{O}_{\hat{x_i},\hat{y_i}} (δxi^,δyi^)=O^xi^,yi^是预测的位置偏移量 w i ^ , h i ^ = S ^ x i ^ , y i ^ \hat{w_i},\hat{h_i} = \hat{S}_{\hat{x_i},\hat{y_i}} wi^,hi^=S^xi^,yi^是预测的尺寸。全部的输出直接通过关键点估计来产生,不需要根据IOU来进行非极大值抑制算法或其他后处理算法。峰值关键点的提取作用就是充分的NMS的替代项,而且通过3x3的最大池化操作来被高效的执行。

3D 检测

  3D检测对每个目标估计一个三维的包围盒子并且对每个中心点需要三个额外的属性:深度,3D维度,和方向。我们对这些分别加入不同的预测头。深度 d d d对每个中心点来说是一个单个的标量。然而,深度是很难直接回归的。我使用了Eigen等人的[13]变式来代替回归。让 d = 1 / σ ( d ^ ) − 1 d=1/\sigma(\hat{d}) - 1 d=1/σ(d^)1,其中 σ \sigma σ是sigmoid函数。我们在关键点估计器中把深度作为另外一个输出的channel D ^ ∈ [ 0 , 1 ] W R × H R \hat{D} \in [0,1]^{\frac{W}{R}\times\frac{H}{R}} D^[0,1]RW×RH。不像之前的形态,它在输出层使用逆sigmoid函数。我们使用L1损失在原始的深度域训练深度估计器,在转换sigmoid函数之后。

  一个目标的3D维度是三个常量。我们直接回归到它们的以米为单位的绝对值,用于一个单独的头 γ ^ ∈ R W R × H R X 3 \hat{\gamma} \in R^{\frac{W}{R}\times\frac{H}{R}X3} γ^RRW×RHX3和L1 loss。

  方向默认是一个单个的常量。然而,也很难回归。我们遵循Mousavian等人的[38]并表示方向为两个箱子与在箱回归。具体地,这个方向被8个常量编码,每个箱子四个常量。对于一个箱子,两个常量被用于softmax分类然后余下的两个常量在每个箱子里回归一个角度。具体请看关于这些loss的补充细节。

人体姿态估计

  人体姿态估计目的是为了对图像中的每个人的实例来估计k(k=17 for COCO 自下而上的关键点估计)个二维的人体关节的位置。我们把姿势估计作为中心点的k x 2维的属性(用于回归到中心点的偏移量),并用参数表示通过一个到中心点的偏移量来确定每个关键点。我们通过L1 loss直接回归关节的偏移量(在像素上) J ^ ∈ R W R × H R × k × 2 \hat{J} \in R^{\frac{W}{R}\times \frac{H}{R}\times k \times 2} J^RRW×RH×k×2。对于量化产生的偏移量依然是公用的。通过对loss添加掩膜来忽略不可见关键点。结果是基于回归的一阶段的人体姿态估计类似于slow-RCNN版本的副本Toshev等人[51]和Sun等人[49]。

  为了精炼关键点,我们进一步估计了k个人体关节的heatmaps Φ ^ ∈ R W R × H R × k \hat{\Phi} \in R^{\frac{W}{R}\times\frac{H}{R}\times k} Φ^RRW×RH×k通过标准的自下而上的多人姿态估计[4,39,41]。我们通过focal loss训练人体关节的heatmap和类似于到第3部分讨论的中心检测的局部像素偏移量。

  分组:关键点是如何对应的不同的实例的。我们把回归得到的结果和自下而上的结果通过最近距离来匹配上。这里,我们的中心偏移量作为一个分组的线索,来指定关键点到单个人实例中去。具体来说,我们用 x ^ , y ^ {\hat{x},\hat{y}} x^,y^作为一个已经检测到的中心点。我们先回归所有的关键点的位置 l j = ( x ^ , y ^ ) + J ^ x ^ y ^ j , j ∈ 1... k l_j=(\hat{x},\hat{y})+\hat{J}_{\hat{x}\hat{y}j},j\in1...k lj=(x^,y^)+J^x^y^j,j1...k。我们也把置信度>0.1的所有关键点的位置 L j = { l ~ j i } i = 1 n j L_j=\{\tilde{l}_{ji}\}^{n_j}_{i=1} Lj={l~ji}i=1nj相应的从heatMap Φ . . j \Phi_{..j} Φ..j中提取出来每个关键点的类型。然后我们指定每个回归的位置 l j l_j lj到距离它最近的关键点(heatmap得到的) a r g m i n l ∈ L j ( l − l j ) 2 argmin_{l \in L_j}(l - l_j)^2 argminlLj(llj)2只考虑联合水平框内的检测到的关键点。

执行细节

  我们的实验使用了4种网络结构:ResNet18,ResNet-101[55],DLA-34[58],以及Hourglass-104[30]。我使用可变形卷积修改了ResNets和DLA-34并且按原样来使用Hourglass。

  Hourglass堆叠的Hourglass网络[30,40]对输入进行了4倍下采样,通过接两个hourglass序列模块。每个hourglass模块是一个对称的5层下采样和反卷积网络中间用跳跃连接。这个网络非常大,但是通常会产生最好的关键点估计效果。

  ResNet Xiao等人[55]增大了一个带有3层反卷积的标准的残差网络[22]能够得到更高分辨率的输出(输出步长为4)。我们先改了三个上采样层的channel数相应的为256,128,64来节省计算量。然后我们增加了一个3x3的可变形卷积层在每个反卷积的channel为256,128,64之前。反卷积的卷积核通过一个双线性插值来初始化。结构图的细节看附录。

  DLA DeepLayerAggregation(DLA)是一个带有层级跳跃连接的图像分类网络。我们利用了DLA的全卷积上采样版本用于密集预测通过使用可迭代的深度聚合来对称地增加特征图的分辨率。我们通过可变形卷积增加了低层到输出的跳跃连接。尤其是我们通过3x3的可变形卷积替代了原有的卷积在每个上采样层。关于结构细节看附录。

  我们在每个输出头之前加了输出channel为256的3x3卷积层。一个最终的1x1的卷积层然后产生期望的输出。我们在附录材料中提供了更多的细节。

  训练 我们在输入分辨率为512x512的图像上训练。对于所有的模型都会产生一个128x128的输出分辨率结果。我们使用随机翻转,随机缩放(从0.6到1.3),裁剪和颜色抖动作为数据增强的方法,并使用Adam[28]来优化全部的对象。我们在训练3D估计的分支中不用像裁剪或缩放的增强来改变3D尺寸。对于残差网络和DLA-34,我们训练了一个batch-size为128的模型(在8块GPUs上)并且学习率为5e-4迭代了140轮,学习率在90和120轮的时候相应的下降十倍(遵循[55])。对于Hourglass-104,我们遵循ExtremeNet的训练方式并使用batch-size为29(用5块GPU,其中主GPU的batch-size为4)并且学习率为2.5e-4学习50轮在第40轮的时候学习率下降10倍。对于检测,我们微调了从ExtremeNet结果的Hourglass-104来节省计算量。Resnet-101和DLA-34的下采样层是通过ImageNet预训练模型来初始化的并且上采样层是随机初始化的。Resnet-101和DLA-34使用8块TITAN-V GPUS训练了两天半,而Hourglass-104训练需要5天。

  推理 我们使用三个水平的测试增强:不增强,翻转增强和翻转+多尺度(0.5,0.75,1,1.25,1.5)。对于翻转,我们对输出的结果进行平均之后再对boundingboxes进行解码。对于多尺度,我们是使用NMS对结果进行融合的。这些增强产生了不同的速度-准确率的平衡,如下部分所指示。

实验

  我们在MS COCO数据集上评估了我们的目标检测的表现,其中包含118k张训练图片(train2017),5k张验证图片(val2017)和20k留存的测试图片(test-dev)。我们在全部的IOU阈值下报告了平均精度(AP),在IOU阈值为0.5的AP表示为 A P 50 AP_{50} AP50IOU阈值为0.75的阈值下AP表示为 A P 75 AP_{75} AP75。补充材料中包含额外的在PascalVOC上的实验。

目标检测

  表1展示了我们用不同的主干网络和测试选项在COCO验证集的结果。图1对比了CenterNet和其他实时检测器的效果。执行时间是在我们本地的机器测的,Intel Core i7-8086K CPU,Titan Xp GPU,Pytorch 0.4.1,CUDA 9.0,and CUDNN 7.1。我们下载了代码和预训练模型来对每个模型在相同的机器测试运行时间。

  Hourglass-104在相对好的速度上,达到了最好的准确率。在7.8FPS的速度下达到了42.2%的AP。在这个主干网络上,CenterNet在速度和准确率上超过了CornerNet[30](40.6%APin 4.1 FPS)和ExtremeNet[61](40.3%AP in 3.1FPS)。运算时间的提高是因为较少的输出头和一个更简单的解码的组合。更好的准确意味着中心点比起交点和极端点是更容易检测的。

  使用ResNet-101,我们超过了同样主干网络的RetinaNet[33]。我们只是在上采样层使用了可变形卷积,没有倾向于RetinaNet。我们在相同的准确下比它快了两倍。我们最快的ResNet-18模型也达到了一个也不错的效果,在COCO数据集上142FPS下28.1%的AP。

  DLA-34给出了最好的速度/准确率的平衡。它在52FPS的速度下达到了37.4%的AP。这个结果比YOLOv3快两倍,并且提升了4.4%的准确率。通过翻转测试,我们的模型仍旧是比YOLOv3更快并且达到了Faster-RCNN-FPN的准确率水平。

  SOTA对比我们用多尺度估计和其他SOTA目标检测器在COCO test-dev的数据集上进行了对比,结果如表2所示。通过多尺度估计,使用Hourglass-104的CenterNet达到了45.1%的AP,超过了现有的所有的一阶段检测器。复杂的二阶段检测器是更准确的,但是缺点就是更慢。CenterNet和滑动窗口检测器对于不同目标尺寸或者IOU阈值没有明显的差距。CenterNet的表现就是一个正规的检测器,就是更快了。

额外的实验

  不幸的情境下,两个不同的目标可能有共同的中心点,如果他们完美的重合了。这个场景下CenterNet只能够检测出他们其中的一个。 我们开始调查这种情况实际中出现的频率并把它和漏检相关的做下比较。

  中心点冲突 在COCO训练集合中,有614对对象在下采样步长为4的情况下有相同的中心点。总共有860001个对象,因此CenterNet因中心点冲突而不能够预测的对象小于0.1%。比slowRCNN或fastRCNN由于区域建议的瑕疵所产生的漏检的情况(~2%)小很多,也同样比基于anchor的方法由于不充足的anchor放置导致的漏检也小很多(20.0%Faster-RCNN中15个anchor在0.5IOU的阈值上)。此外715对目标的boundingboxIOU>0.7而且将会被指派到两个anchors中,因此基于中心的方法产生的冲突更少。

  NMS 为了确认基于IOU的NMS算法对于CenterNet来说是不需要的,我们把NMS对我们的预测结果做了后处理。对于DLA-34(flip-test)来说,AP从39.2%提高到了39.7%。对于Hourglass-104来说AP保持在42.2%。产生的影响较小,所以我们不需要使用它。

  训练和测试的分辨率 在训练阶段,我们固定输入的分辨率为512x512。在测试阶段,我们遵循CornerNet[30]来保持原始的图像分辨率并且用zero-pad对网络的最大步长进行补齐。对于ResNet和DLA,我们用32像素来填充图像,对于HourglassNet,我们使用128像素来填充图像。如果表3a所示,保持原始图像的分辨率比固定测试分辨率略好一点。在一个低分辨率(384x384)的图像来训练和测试更快但是AP下降了3个点.

  回归loss 我们对比了普通的L1 loss和Smooth L1对于尺寸回归的任务。我们的实验结果呈现在表3c中,L1比Smooth L1好很多。在小尺度上产生了更高的准确率,其中COCO的估计测量标准是敏感的。这是对关键点回归独立观察的结果[49,50]。

  训练时间 我们默认的训练关键点估计140轮通过学习率在90轮降低。如果我们的训练轮次在学习率下降之前增加一倍,效果会更好,AP增加了1.1(表3d),但是浪费了更长的训练时间。为了节省计算量(和拯救北极熊),在消融实验中我们使用140轮迭代,当和其他模型进行比较的时候继续使用230轮迭代。

  最后,我们通过回归超过一个目标尺寸的方式,尝试了一个多“anchor“的CenterNet版本,实验没有成功,细节看补充材料。

3D 检测

  我们在KITTI数据集[17]上进行3D箱子的估计实验,这个数据集包含在汽车驾驶场景的细心标注的车辆的水平箱子。KITTI包括7841张训练图片并且我们遵循文献[10,54]标准的分开训练集合和验证集合的方式。验证的测量标准是对于车辆的平均精度在IOU阈值为0.5的情况下的11召回(0.1到1.0每次增加0.1)作为一个目标检测。我们基于二维的水平框估计了IOUs(AP),方向(AOP)和鸟瞰视角的水平框(BEV AP)。对于训练和测试我们保持原始的图像分辨率并且补全到1280x384。训练在70轮迭代收敛,学习率在45和60轮迭代相应的下降。我们使用DLA-34作为主干网络并把深度、方向和维度的损失权重设置为1。其余的所有超参数和检测试验是相同的。

  因为召回的阈值数太小了,验证集合的AP在10%波动。于是我们训练了5个模型并报告了标准差的平均值。

  我们对比了基于Deep3DBox[38]的slow-RCNN和基于Mono3D[9]的Faster-RCNN,在他们指定的验证集的分开方式。结果如表4所示,我们的方法在AP和AOS中的表现与它的对手相当,在BEV中的表现稍好一些。

姿势估计

  最后我们使用CenterNet在MS COCO数据集上进行了人体姿态估计。我们估计了关键点的AP,和水平框的AP是相似的但是用目标关键点来代替了水平框的IOU。我们在COCO test-dev的数据集上测试和对比了其他方法。

  我们使用DLA-34和Hourglass-104进行实验,都是从中心点检测的模型微调的。DLA-34在320轮迭代后收敛(在8块GPUs上跑3天),Hourglass-104在150轮迭代后收敛(在5块GPUs上跑8天)。其余的所有损失权重都设置为1。全部其他的超参数都和目标检测相同。

  结果如表5所示。合理的执行直接回归关键点达不到最好的结果,这种方式在高IOU的体制下尤为艰难。映射我们的结果到最近的关节检测能够提高所有的结果,并且能够达到对最好的多人姿态估计模型[4,21,39,41]是有竞争的。这验证了CenterNet是通用的,容易适应一个新的任务。

  图5展示了在所有任务上的定性比较结果。

  图5:定性结果。图上所有的实验图片我们是按照主题来挑选的,没有考虑我们算法的表现。第一行是在COCO验证集合上的目标检测结果。第二行和第三行:在COCO验证集上的人体姿态估计结果。对于每对我们展示了中心点回归的结果(左边)和热力图匹配的结果(右边)。第四行和第五行:是在KITTI验证集合估计3D包围盒子的结果。我们展示了映射的包围盒子(左边)和对应的鸟瞰图(右边)。真实的检测结果用红色实线和实线盒子标出。中心热力图和3D盒子叠加在原图上展示。

结论

  总的来说,我们提出了一个新的目标的代表方式:作为点。我们的CenterNet目标检测器成功的构建了关键点估计网络,发现目标的中心,并回归它们的尺寸。这个算法是简单的、快速的、准确的并且是端到端可微分的不需要任何NMS后处理办法。这个想法是通用的并且比起简单的二维检测有更广泛的应用。CenterNet能够估计一系列的目标的额外属性,比如姿势,3D方向,深度和范围,一次前向运算即可。我们最初的实验是让人鼓舞的,并为实时目标识别和相关任务开辟了一个新方向。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值