目标检测:
将目标识别为图像中与轴对齐的方框。大多数成功的目标检测器列举出几乎详尽的潜在目标位置列表,并进行分类。这种方式浪费、效率低下,并且需要额外的后处理。
本文:
采用了一种不同的方法,将目标建模为一个单一点——目标边界框的中心点。目标检测器使用关键点估计来找到目标中心点,并回归目标的所有其他属性,如大小、3D位置、方向、甚至姿态。
本文基于中心点的方法——CenterNet,是端到端可微的(不需要后处理操作,如NMS),比相应的基于边界框的检测器更简单、更快、更准确。
实验结果:
(1)目标检测:CenterNet在MS COCO数据集上取得了最好的速度-精度平衡。
(2)3D目标检测&人体姿态估计:与复杂的多阶段方法具有竞争力,并实时运行。
目标检测是计算机视觉的基础技术:
目标检测为许多视觉任务提供了强大的功能,如实例分割、姿态估计、跟踪和动作识别。它的下游应用有监控、自动驾驶、视觉问答。
当前目标检测器:
当前的目标检测器:首先,通过一个紧密包含目标且与轴对其的边界框来表示每个目标;然后,将目标检测简化为大量潜在目标边界框的分类,对于每个边界框,分类器确定边界框内容是特定目标还是背景。
(1)单阶段检测器:在图像上滑动复杂排列的anchor boxes,不指定框内容直接对它们进行分类。
(2)两阶段检测器:重新计算每个潜在边界框内的图像特征,然后对这些特征进行分类。
后处理(NMS)通过计算边界框IoU来移除相同实例的重复检测。 后处理很难区分和训练,因此目前大多数检测器都是端到端不可训练的。 尽管如此,在过去的5年里,这一想法取得了很好的实证成功。
(3)基于滑动窗口的目标检测器:需要枚举所有可能的目标位置和尺寸,浪费。
本文方法:
提供一个更简单、有效的替代方案。使用目标边界框的中心点来表示目标(图2),直接从中心点位置的图像特征回归得到目标其他属性如目标大小、维度、3D范围、方向和姿态。CenterNet使目标检测变为一个标准的关键点估计问题,只需将输入图像输入到一个全卷积网络生成热图,热图中的峰值与目标中心相对应,每个峰值处的图像特征预测目标的边界框高度和宽度。训练:使用标准密集监督学习进行训练。推理:是一个单一网络的前向传递,没有非极大值抑制的后处理操作。
本文方法优点:
(1)通用的,可以扩展到其他的任务,如3D目标检测、人体姿态估计。
(2)运行速度快,如图1。
代码:https://github.com/xingyizhou/CenterNet
基于区域分类的目标检测:
(1)RCNN:第一个成功的基于深度学习的目标探测器,从大量候选区域中枚举目标位置,裁剪图像块,并使用深度网络分类。
(2)Fast RCNN:为节省计算,裁剪图像特征。
上述方法都依赖于缓慢的低级区域提议方法,如选择性搜索算法。
使用隐式anchor的目标检测:
(1)Faster RCNN:在检测网络内生成区域建议——在低分辨率图像网格周围采样固定形状的边界框(anchors);将每个边界框分类为“前景”(与GT的IoU>0.7的锚框)或“背景”(与任意GT的IoU<0.3的锚框),其他IoU的锚框被忽略;之后每个生成的区域建议被再次分类。
(2)单阶段检测器:将区域建议分类器改变为多类分类,形成了单阶段检测器的基础。单阶段检测器的一些改进包括先验anchor形状、不同特征分辨率、不同样本之间的损失重加权。
(3)本文方法:与基于anchor的单阶段方法密切相关——一个中心点可以被看作一个单一的形状无关的anchor(见图3)。
与基于anchor的单阶段方法的区别:
①CenterNet分配“anchor”完全基于位置,而不是框重叠,对于前景和背景分类,没有人工阈值。
②每个目标只有一个正“anchor”,因此不需要非极大值抑制(NMS),只需简单提取关键点热图中的局部峰值。
③与传统单阶段目标检测器(stride=16)相比,CenterNet使用了更大的输出分辨率(stride=4),消除了对多个anchos的需要。
基于关键点估计的目标检测:
本文不是第一个使用关键点估计来检测目标的。
(1)CornerNet:检测两个边框角作为关键点
(2)ExtremeNet:检测所有目标的顶部、左边、底部、右边和中心点。
CornerNet、ExtremeNet都建立在与CenterNet相同的关键点估计网络。然而,它们需要在关键点检测后进行组合分组,大大降低了算法的运行速度。本文CenterNet只为每个目标提取一个中心点,而不需要进行分组或后处理。
(1)网络输入:为宽W高h的输入图像。
(2)网络输出(预测关键点热图):为关键点热图,R为输出步长,输入图像以输出因子R被下采样 (默认R = 4),C为关键点类型数,在目标检测中C = 80个目标类别。
中心关键点:代表检测到的一个关键点,在关键点热图中该点的值为1。
背景:为检测到的背景,在关键点热图中该位置的值为0。
(3)主干网络:
使用几种不同的全卷积编码-解码器网络,从输入图像I中预测热图ˆY,包括堆叠沙漏网络(hourglass )、反卷积残差网络(ResNet)和深层聚合(DLA)网络。
(4)GT关键点热图:
首先,对每一个c类的GT关键点p∈R2计算一个低分辨率的等价标识
然后,将所有的GT关键点使用一个高斯核映射到热图,其中σp为目标大小自适应的标准差。如果同一类的两个高斯分布重叠,取元素的最大值。
(5)中心点预测损失&偏移损失:
中心点预测损失: 使用GT关键点热图和网络预测的关键点热图进行计算得到
其中α和β为focal损失的超参数,N为图像I中关键点的个数,选择N归一化将所有正focal实例归一化为1,实验均采用α = 2和β = 4。
中心点偏移损失: 为了恢复输出步长引起的离散化误差,对每个中心点预测一个局部偏移所有类c共享相同的偏移预测。用L1损失来训练偏移量
该监督仅作用于GT关键点位置p~,其他所有位置均被忽略。
边界框:目标k类别ck的边界框。
边界框中心点:
边界框大小: 目标大小
边界框大小损失: 使用关键点估计器ˆY(既关键点热图)来预测所有目标中心点,并对每个目标k回归到目标大小。为了限制计算量,对所有目标类别使用单个大小预测。目标大小L1损失:
总损失:
不归一化尺度而是直接使用原始像素坐标。总的训练损失是:关键点预测损失、关键点偏移损失、边界框大小损失
除特别说明实验设定λsize= 0.1,λoff = 1。使用单个共享的全卷积骨干网来预测目标关键点ˆY、关键点偏移ˆO、目标大小ˆS,每个预测头部,主干的特征都通过一个3 × 3卷积、ReLU和另一个1 × 1卷积。(图4网络输出概述)网络在每个位置预测C + 4输出——C为类别数量、2为中心点偏移、2为目标大小
从点到边界框:
(1)提取C类热图的峰值,获取C类目标中心点: 推理时首先独立地提取每个类热图中的峰值——既检测该类热图中所有值大于或等于它的8个连接邻居的响应点(峰值),保持前100个峰值。
(2)中心点产生边界框: ˆPc为c类的n个检测到的中心点集合,每个中心关键点的位置由整数坐标(xi, yi)给出。关键点值为检测置信度的度量,在该关键点位置产生一个边界框
其中是偏移量预测是边界框大小预测。
总结:所有输出直接从关键点估计产生,不需要基于IoU的非极大值抑制(NMS)或其他后处理。峰值关键点提取作为一种充分的NMS替代方案,可以在设备上使用3 × 3最大池操作有效实现。
四种架构:
ResNet-18、ResNet101、DLA-34和Hourglass-104。使用可变形卷积层修改了ResNet和DLA-34。
(1)沙漏网络: 堆叠的沙漏网络对输入进行4×采样,然后是两个连续的沙漏模块。每个沙漏模块是一个对称的5层卷积-向上卷积网络,并带有跳跃连接。这个网络相当大,但通常产生最佳的关键点估计性能。
(2)ResNet: 用三个向上卷积网络增强标准残差网络,以实现更高分辨率的输出(输出步幅为4)。首先将三个上采样层的通道分别更改为256,128,64以节省计算;然后在每个向上卷积之前分别添加一个3 × 3可变形卷积层,通道分别为256,128,64,反卷积核初始化为双线性插值。
(3)DLA : Deep Layer Aggregation (DLA)是一种具有分层跳跃连接的图像分类网络。利用DLA的全卷积上采样版本进行密集预测,该网络使用迭代深度聚合来对称地增加特征图分辨率,我们通过可变形卷积从下层到输出增强了跳跃连接。具体来说,在每一个上采样层,用3×3变形卷积代替原来的卷积。
主干架构输出特征图,该特征图作为3个预测头部(热图、偏移、尺寸)的输入,三个预测头部由一个256通道的3 × 3卷积和一个1 × 1的卷积构成,然后产生期望的输出。
训练设置:
(1)输入和输出: 在512 × 512的输入分辨率上进行训练。产生一个输出分辨率为128×128。
(2)数据增强: 随机翻转、随机缩放(0.6-1.3)、裁剪和颜色抖动
(3)优化器: 使用Adam优化器来优化整体目标。
(4)批量和学习率:
ResNet和DLA-34,使用批量大小为128和5e-4的学习速率进行140个epoch的训练,在90和120个epoch学习速率分别下降10×。
Hourglass-104,使用批量大小29和学习率2.5e-4,训练50个epoch,在40个epoch学习率下降10×。
(5)预训练模型: 微调了ExtremeNet中的Hourglass-104以节省计算。利用ImageNet预训练模型对Resnet101和DLA-34的下采样层进行初始化,对上采样层进行随机初始化。
(6)训练时间: resnet - 101和DLA-34在8个TITAN-V GPU上训练需要2.5天,而Hourglass-104则需要5天。
推理设置:
使用三种程度的测试增强:无增强、翻转增强、翻转和多尺度增强(0.5,0.75,1,1.25,1.5)。
对于翻转,在解码边界框之前对网络输出进行平均;对于多尺度,使用NMS来合并结果。
这些增强会产生不同的速度-精度权衡。
实验数据: 在包含118k训练图像(train2017)、5k验证图像(val2017)和20k测试验证图像(test-dev)的MS COCO数据集上评估目标检测性能。
实验度量: IOU阈值下的平均精度(AP),IOU阈值0.5(AP50)和0.75 (AP75)时的AP。
补充含有额外PascalVOC实验。
表1显示了使用不同的主干和测试选项进行COCO验证的结果。图1比较了CenterNet和其他实时检测器。
Hourglass-104: 以相对较快的速度获得了最佳的精度(7.8 FPS和42.2%AP)。CenterNet利用该主干网络在速度和精度上都优于CornerNet(40.6% AP和4.1 FPS)和ExtremeNet(40.3% AP和 3.1 FPS)。速度改进来自于更少的输出头部和更简单的边界框解码方案。精度改进表明中心点比角点或极端点更容易检测。
ResNet-101: 使用相同主干表现优于RetinaNet。本文只在上采样层使用了可变形的卷积,这不影响RetinaNet。同样的精度下,CenterNet速度是RetinaNet的两倍多。CenterNet使用ResNet-18模型在142帧/秒的情况下也达到了28.1%的性能。
DLA-34: 提供了最好的速度/精度平衡,它以每秒52帧的速度运行,AP为37.4%,速度是YOLOv3的两倍多,AP高4.4%。通过翻转测试,本文模型仍然提供比YOLOv3快,并且达到了faster - rcnn - fpn的精度水平。
最先进检测器比较:
表2与其他最先进的检测器进行比较。通过多尺度评估,CenterNet+Hourglass104的AP达到45.1%,优于现有的所有单阶段检测器。复杂的两阶段检测器更精确,但也更慢。CenterNet的行为与常规检测器类似,只是速度更快。
在不幸的情况下,两个不同的目标如果完全对齐可能共享同一个中心,在这种情况下,CenterNet将只检测其中一个。首先研究这种情况在实践中发生的频率,并将其与竞争方法的漏检联系起来。
(1)实践中发生的概率: 在COCO训练集中,有614对目标在步长为4的特征图上碰撞同一个中心点,而COCO数据集中总共有860001个目标,由于中心点碰撞,CenterNet无法预测的目标数量< 0.1%。远远小于slow或fastRCNN由于不完美区域建议而造成的漏检(~2%),也小于基于anchor的方法由于锚点放置不足而造成的漏检。此外,715对目标边界框之间的IoU > 0.7,将被分配到两个anchor,因此基于中心的分配导致较少的碰撞。
(2)NMS: 为了验证CenterNet不需要基于IoU的NMS,使用NMS作为CenterNet预测的后处理步骤运行时。DLA-34 (翻转测试)的AP从39.2%提高到39.7%。Hourglass-104, AP保持在42.2%。考虑到轻微的影响,不使用NMS。
(3)训练和测试分辨率: 在训练期间,将输入分辨率固定到512×512。在测试过程中,遵循CornerNet保持原始图像的分辨率,并将输入0填充至网络最大步幅。对于ResNet和DLA,使用最多32像素填充图像,对于HourglassNet,使用128像素。如表3a所示,保持原来的分辨率比固定测试分辨率稍好。在较低分辨率(384 × 384)下训练和测试速度要快1.7倍,但AP会下降。
(4)回归损失: 比较普通的L1损失和Smooth L1损失。我们在表3c中的实验表明,L1比平滑L1要好得多。它在精细尺度上产生更好的精度,这是在关键点回归中独立观察到的。
(5)边界框大小权重: 分析本文方法对损失权值λsize的敏感性。表3b显示0.1有一个好的结果。当AP值较大时,由于损失的范围从0到输出大小w/R或h/R,而不是从0到1,AP的退化很明显。但是对于较低的权重,该值不会显著降低。
(6)训练流程: 默认情况下,对关键点估计网络进行140epoch训练,学习速率在90epoch时下降。在降低学习率之前将训练时间加倍,则性能将进一步提高1.1个AP(表3d),代价是更长的训练时间。为了节省计算资源在消融实验中使用了140个epoch,但与其他方法相比,DLA使用了230个epoch。
最后通过回归到多个目标大小来尝试CenterNet的多个“anchor”版本。这些实验没有取得任何成功,见补充。
提出了一种新的目标表示方法——作为点。CenterNet目标检测器建立在成功的关键点估计网络上,找到目标中心,并回归目标的大小。该算法简单、快速、准确、端到端可微,无需任何NMS后处理。
本文设计理念是通用的,并且有广泛的应用,不仅仅是简单的二维检测。CenterNet可以在一次向前传播中估算一系列额外的目标属性,如姿态、3D方向、深度和范围。
为实时目标检测和相关任务开辟了新的方向。
分析COCO训练集标注:
目的是显示碰撞案例发生的频率。COCO训练集(train 2017)包含N = 118287幅图像和M= 860001个目标(MS= 356340个小型目标,MM= 295163个中型目标,ML= 208498个大型目标),共80个类别。
中心点碰撞:
令图像K的类别为c的第i个边界框是边界框中心在4×步长下为,n (kc)为图像k中类别c的目标个数。中心点碰撞次数计算为:
在数据集上得到Ncenter= 614。
IoU的碰撞:
类似地计算两个边界框基于IoU的碰撞
得到N[email protected]= 715和N[email protected]= 5179。
基于anchor的检测器漏检的目标:
RetinaNet将anchor分配给与其IoU> 0.5的GT框,如果一个GT框没有任何anchor与其IoU > 0.5,则将IoU最大的anchor赋给它。
计算这种强制分配发生的频率,在stride S = 16时,使用15个anchors(5个大小:32,64,128,256,512,和3个长宽比:0.5,1,2)。对于每幅图像,将其短边大小调整为800后,将这些anchor放置在位置,其中和
。W, H是图像的宽和高(较小的等于800)。这导致一系列锚点A .
。通过以下方法计算强制分配的anchor的数量
RenitaNet需要强制分配的数量为Nanchor= 170220,其中125831用于小型目标(小型目标的35.3%),18505用于中型目标(中型目标的6.3%),25884用于大型目标(大型目标的12.4%)。
Pascal VOC数据集:
Pascal VOC是一种流行的小目标检测数据集。在VOC 2007和VOC 2012训练集上进行训练,在VOC 2007测试集上进行测试,包含16551个训练图像,4962个测试图像,类别数量为20。评估指标是IoU=0.5的均值平均精度(mAP)。
网络训练设置:
改进的ResNet-18、ResNet101和DLA-34在384×384和512×512两个分辨率下进行实验。所有网络训练70epoch,学习速率分别在45和60epoch时下降10倍;批量32和学习率1.25e-4,遵循线性学习率规则。
网络训练时间:
单个GPU上,384×384分辨率下训练ResNet-101和DLA-34分别需要7小时/ 10小时。对于512 × 512,在两个gpu上训练花费的时间是一样的。翻转增强用于测试,所有其他超参数都与COCO实验相同。从零开始训练Hourglass104时,它不能在合理的时间(2天)内收敛
网络性能比较:
结果如表,最好的CenterNet-DLA模型与顶级方法具有竞争力,并保持实时速度。
通过用GT值替换每个输出头来进行误差分析:
对于中心点热图,使用渲染的高斯GT值热图。
对于边界框盒大小,对每个检测使用最近的GT大小。
表7结果表明,两个尺寸映射的改进都会带来适度的性能提升,而中心映射的提升则要大得多。如果没有预测关键点偏移量,则最大AP值为83.1。由于高斯热图渲染中的离散化和估计误差,整个GT流失了约0.5%的目标。