基于关键点的检测器取得了很好的性能。然而,不正确的关键点匹配仍然普遍存在,严重影响了检测器的性能。在本文中,我们提出了 CentripetalNet,它利用向心位移来对同一实例中的角点进行配对。
CentripetalNet 预测角点(corner points)的位置(position)和向心偏移(centripetal shift),并对偏移结果对齐(aligned)的角点进行匹配。
结合位置信息,我们的方法比传统的嵌入方法更精确地匹配角点。corner pooling 将边界框内的信息提取到边界上。为了使角点处的信息更加敏感,我们设计了一个 corner-star deformable convolution network 进行特征自适应。此外,我们还通过在向心网络上安装一个掩模预测模块来探索无锚检测器上的实例分割。在MS-COCO测试开发中,我们的向心网不仅在AP为48.0%的情况下优于所有现有的无锚检测器,而且在askAP为40.2%的情况下,我们的向心网实现了与最先进的实例分割方法相当的性能。代码将在https://github.com/KiveeDong/CentripetalNet上提供
目标检测是计算机视觉在自动驾驶、移动娱乐、视频监控等应用中的一个基本课题。其挑战来源于目标外观较大的尺度、形变、遮挡。随着深度学习的发展,目标检测取得了长足的进步[10,9,29,26,23,19,11,20,1,17]。基于锚的方法[9,29,23]在过去几年中引领了潮流,但是很难手动设计一组合适的锚。此外,基于锚的方法在负锚和正锚之间存在显著差异。为了改进它,CornerNet[17]提出了一种将边界框表示为一对角的新方法,即左上角和右下角。基于这种思想,出现了许多基于角点的方法[17,7]。corner-based 的检测框架逐渐引领了目标检测领域的新趋势。corner-based 的检测框架分为角点预测和角点匹配两个步骤。在本文中,我们集中讨论第二步。
传统的方法[17,7]主要采用关联嵌入方法对角点进行配对,其中网络需要学习每个角点的附加嵌入,以识别两个角点是否属于同一个 bounding-box。这样,如果两个角来自同一个box,它们将有一个相似的嵌入,否则,它们的嵌入将完全不同。基于关联嵌入的检测器在目标检测中取得了很好的性能,但也存在一定的局限性。首先,训练过程采用推拉损失来学习每个点的嵌入。将计算不属于同一对象的点之间的推送损耗,以将它们推离彼此。而拉损只在同一物体的点之间考虑。因此,在训练过程中,网络实际上被训练在对角线的所有潜在点内寻找唯一的匹配点。当一个训练样本中存在多个相似对象时,该方法对异常值非常敏感,训练难度会急剧增加。其次,嵌入预测基于外观特征,不使用位置信息,如图1所示,如果两个对象具有相似的外观,则即使它们相距很远,网络也倾向于为它们预测相似的嵌入。
基于上述考虑,我们提出了一种基于向心位移的角点匹配方法和一个十字星可变形卷积模块来更好地预测向心位移。给定一对角点,我们为每个角点定义一个二维向量,即向心位移,其中向心位移编码从角点到长方体中心点的空间偏移。这样,每个角点都可以根据向心位移生成一个中心点,因此如果两个角点属于同一个边界框,则它们生成的中心点应该是闭合的。匹配的质量可以用两个中心与该匹配的几何中心之间的距离来表示。结合每个角点的位置信息,与联合嵌入方法相比,该方法对异常点具有较强的鲁棒性。此外,我们还提出了一种新的成分,即 cross-star 可变形卷积,不仅可以学习大的感受野接收场,而且可以学习 cross-star 的几何结构。我们观察到 corner-pooling 输出的特征图中有一些“十字星”。
“cross-star”的边界包含对象的上下文信息,因为 corner-pooling 使用max和sum操作将对象的位置信息沿 “cross-star” 边界扩展到角。因此,我们将目标的几何和位置信息明确地嵌入到可变形卷积的偏移场中。与 CornerNet 相比,我们的模型配备了向心偏移和 cross-star 可变形卷积,在MS-COCO test-dev2017上从42.1%AP提高到47.8%AP,取得了显著的性能提升。此外,基于多任务学习在目标检测中的优势,我们首先加入了实例掩码分支,进一步提高了目标检测的准确性。我们将roalign应用于一组预测感兴趣区域(roi)的集合特征,并将集合特征输入掩模头,生成最终的分割预测。为了证明所提出的向心网的有效性,我们在具有挑战性的MS-COCO基准上对该方法进行了评估[21]。在MS-COCO test-dev上,向心网不仅在AP为48.0%的情况下优于所有现有的无锚检测器,而且在实例分割方面也取得了与现有方法相当的性能。
基于锚的检测器在特征地图的每个位置设置锚箱。该网络预测每个锚定框中有对象的概率,并调整锚定框的大小以匹配对象。通常,基于锚的方法可以分为两类,即两阶段方法和单阶段方法。
从R-CNN系列方法[10,12,9]中导出两阶段方法,首先利用选择性搜索方法[32]提取ROI,然后对其进行分类和回归。更快的R-CNN[29]使用区域建议网络(RPN)通过修改预设锚定框来生成roi。掩模R-CNN[11]使用双线性插值用roalign层替换RoIPool层。它的遮罩头使用自顶向下的方法来获取实例分段。
在不提取roi的情况下,一级方法直接对预先设置的锚箱进行分类和回归。SSD[23]利用来自多个不同卷积层的特征映射,以不同的步幅对锚定盒进行分类和回归。与YOLO[26]相比,YOLOv2[27]使用预设锚定。然而,上述方法存在着正负样本不平衡的问题。RetinaNet[20]使用焦点损失来缓解分类不平衡问题。RefineDet[37]通过引入锚定细化模块来过滤和消除负样本来细化FPN结构。
针对不同的问题,本文还提出了与基于锚的检测器协同工作,如改进锚的选择过程[33]、改进特征学习过程[39,18]、优化定位预测方法[24]、改进损失函数[30,16]。
对于基于锚的方法,锚箱的形状应仔细设计以适合目标对象。与基于锚的方法相比,无锚检测器不再需要预先设置锚箱。主要提出了两种无锚探测器。
探测器的第一种类型直接预测了目标的中心。Yolov1[26]在目标中心点预测物体的大小和形状。DenseBox[14]引入了一种全卷积神经网络框架以获得高效率。UnitBox[36]使用IoU loss将四个边界作为一个整体进行回归。由于阳性样本的数量相对较少,这些检测器的召回率相当低。为了解决这个问题,FCOS[31]将对象边界框内的所有点作为正样本处理。它检测所有正点以及从该点到边界框边界的距离。
对于第二种类型,检测器预测关键点并将其分组以获得边界框。CornerNet[17]检测对象的左上角和右下角,并将它们嵌入到抽象的特征空间中。它通过计算每对点的嵌入之间的距离来匹配同一对象的角点。ExtremeNet[38]检测对象的顶部、左侧、底部、最右侧和中心点。结合Deep Extreme Cut[25],可以使用极值点进行分割。这些检测器需要一些特定的分组方法来获得边界盒。RepPoints[35]使用可变形卷积网络(DCN)[6]获得用于表示对象的点集。转换函数经过精心设计,可将点集转换为边界框。CenterNet[7]在CornerNet中增加了一个中心检测分支,通过中心点验证大大提高了性能。
这些方法通常在错误检测较多的情况下达到较高的召回率。主要的挑战在于如何匹配同一对象的关键点。在这项工作中,我们提出了一个向心位移,它将角点之间的关系编码,并通过预测的空间信息得到相应的中心,从而可以通过它们的共享中心建立左上角和右下角之间的连接。
我们首先提供方法的概述。如图2所示,CentripetalNet 由四个模块组成,即角点预测模块、向心偏移模块、cross-star 十字星变形卷积模块和 instance mask 头。我们首先基于CornerNet生成候选角点。在所有候选角点的基础上,引入向心移位算法来寻找高质量的角点对,并生成最终的预测边界盒。具体地说,向心偏移模块预测角点的向心偏移,并匹配角点对,其从其位置解码的偏移结果与向心偏移对齐。然后,我们提出了一种新的十字星可变形卷积算法,它的偏移场是从角点到相应中心的偏移量中得到的,用于进行特征自适应以丰富角点位置的视觉特征,这对于提高向心偏移模块的精度具有重要意义。最后,为了进一步提高检测性能,我们增加了一个实例掩码模块,并将该方法扩展到实例分割领域。该方法以向心位移模块的预测包围盒为区域建议,利用roalign提取区域特征,并应用小卷积网络预测分割掩模。总体来说,我们的向心网是端到端训练的,可以在有或没有实例分割模块的情况下进行推理。
Fig 2:CentripetalNet 概述。由于左上角和右下角的角点预测和特征自适应是相似的,为了简单起见,我们只画左上角模块。向心变换模块首先得到预测的角点和自适应特征,然后预测每个角点的向心位移,并根据预测的角点和向心位移进行角点匹配。在匹配过程中,如果移动角点的位置足够接近,它们将形成一个得分较高的边界框。
CentripetalNet四个模块:
步骤:
对于 b b o x i = ( t l x i , t l y i , b r x i , b r y i ) bbox^i=(tlx^i, tly^i,brx^i,bry^i) bboxi=(tlxi,tlyi,brxi,bryi),其几何中心为: ( c t x i , c t y i = ( t l x i , b r x i 2 , t l y i , b r y i 2 ) ) (ctx^i, cty^i = (\frac{tlx^i, brx^i}{2}, \frac{tly^i,bry^i}{2})) (ctxi,ctyi=(2tlxi,brxi,2tlyi,bryi))
文中定义对 top-left 角点和 bottom-right 角点的向心偏移分别为:
训练过程中,在真实 corner 的位置,使用 smooth L1 loss,其中 N N N为训练时真实corner的个数:
为了匹配角点,我们设计了一种利用角点的向心位移和位置进行匹配的方法。一对属于同一边界框的角应共享该框的中心,这是直观和合理的。由于我们可以从预测角点的位置和向心位移来解码对应的预测角点中心,因此很容易比较一对角点的中心是否足够接近,并且该两个中心是否接近由角点对组成的 bounding-box 的中心,如图3(c)所示。基于上述观察,我们的方法如下。从角点热图和局部偏移特征图中提取角点后,对同一类别的角点进行分组,满足 t l x < b r x < t l y < b r y tlx
然后,如图3所示,我们将每个边界框的中心区域定义为等式3,以比较解码中心和边界框中心的接近度。
R c e n t r a l R_{central} Rcentral 的角点用下列公式计算:
其中, 0 < μ ≤ 1 0< \mu\leq1 0<μ≤1 表示中心区域的宽度和高度是边界框的宽度和高度的 μ \mu μ 倍。通过向心偏移,可以分别解码左上角和右下角的中心 ( t l c t x , t l c t y ) (tl_{ctx}, tl_{cty}) (tlctx,tlcty) 和 ( b r c t x , b r c t y ) (br_{ctx}, br_{cty}) (brctx,brcty)。
然后计算满足 ( t l c t x , t l c t y ) ∈ R c e n t r a l j ∧ ( b r c t x , b r c t y ) ∈ R c e n t r a l j (tl_{ctx}, tl_{cty}) \in R^j_{central} \wedge (br_{ctx}, br_{cty}) \in R^j_{central} (tlctx,tlcty)∈Rcentralj∧(brctx,brcty)∈Rcentralj 的box的得分权重 w j w_j wj,这意味着回归的中心越接近,预测的box有更高的得分权重。对于其他边界框,我们将 w j w_j wj设置为0。最后,我们可以通过乘以得分权重对预测的边界框重新打分。
由于 corner-pooling,在feature map 中有一些“cross-star”,如图4(a)所示。“cross-star”的边界保留了对象的大量上下文信息,因为 corner-pooling 使用max和sum 操作将对象的位置信息沿“cross-star”边界扩展到角。要获取“十字星”的上下文信息,不仅需要一个大的感受野,还需要学习“十字星”的几何结构。基于上述直觉,我们提出了一种新的卷积运算,即十字星可变形卷积,以增强角点的视觉特征。
我们提出的跨星可变形卷积如图2所示。首先,将角 corner pooling 特征映射输入到跨星可变形卷积模块中。为了了解可变形卷积中十字星的几何结构,我们可以利用对应物体的大小来显式地引导偏移场分支,因为我们发现十字星的形状与包围盒的形状有关。不过,以左上角为例,他们自然应该少注意“十字星”的左上角,因为物体外有更多无用的信息。因此,我们将一个 guiding shift,如图3(b)所示,从角到中心的移位,包含形状和方向信息,嵌入到偏移字段分支。具体地,偏移场在三个卷积层上执行。前两个卷积层将角池输出嵌入到特征映射中,特征映射受以下损失的监督:
第二卷积层将上述特征映射到偏移场,偏移场显式地包含上下文和几何信息。通过可视化如图7c所示的学习偏移场,我们的跨星可变形卷积可以有效地学习“跨星”的几何信息并提取“跨星”边界的信息。
COCO 2017
多任务训练:
效果:单阶段目标检测最好效果:48% mAP