(十二)论文阅读 | 目标检测之CentripetalNet


简介

在这里插入图片描述

图1:论文原文

论文是发表在 C V P R   2020 {\rm CVPR\ 2020} 上的一篇关于目标检测的论文,论文主要是对基于关键点的 A n c h o r s F r e e {\rm Anchors﹣Free} 检测方法(主要是 C o r n e r N e t {\rm CornerNet} C e n t e r N e t {\rm CenterNet} )的改进和优化。实验结果为该模型在 M S   C O C O {\rm MS\ COCO} 数据集上目标检测的 A P {\rm AP} 48.0 % {\rm 48.0\%} 、实例分割的 M a s k A P {\rm MaskAP} 40.2 % {\rm 40.2\%} ,在 A n c h o r s F r e e {\rm Anchors﹣Free} 目标检测方法上达到了 S O T A {\rm SOTA}
论文原文 源码


0. Abstract

基于关键点的目标检测方法取得了不错的结果,但存在的关键点错误匹配问题,极大地影响了检测器的性能。论文提出的 C e n t r i p e t a l N e t {\rm CentripetalNet} 就是用于解决上述问题,使用向心位移匹配同一目标的角点。该模型预测角点的位置和向心位移,并根据位移的对齐情况匹配角点,这比传统使用的嵌入方法更加有效(可参考 C o r n e r N e t {\rm CornerNet} ,在匹配角点时根据嵌入向量的距离进行匹配)。此外,该模型可通过添加一个 m a s k {\rm mask} 分支用于实例分割。

论文贡献:(一)提出一种新的基于关键点的目标检测方法;(二)针对传统关键点配对方法(嵌入向量),提出向心位移概念改善关键点配对;(三)通过添加掩膜分支,模型可以应用于实例分割任务;(四)在 A n c h o r s F r e e {\rm Anchors﹣Free} 目标检测方法上达到了 S O T A {\rm SOTA} ,在实例分割任务上也取得了优异的结果。


1. Introduction

目标检测在视觉任务中应用广泛,但尺度多变、物体变形、物体遮挡仍是一系列挑战。接下来列举了 A n c h o r s B a s e d {\rm Anchors﹣Based} 目标检测方法的不足(在这里不赘述了,前面几篇文章都有提到)。基于关键点匹配的 C o r n e r N e t {\rm CornerNet} 提出一种新的 A n c h o r s F r e e {\rm Anchors﹣Free} 检测方法,这类方法主要分为检测关键点和关键点匹配两个步骤。而论文提出的 C e n t r i p e t a l N e t {\rm CentripetalNet} 致力于改善关键点匹配

传统用于关键点匹配的方法主要是关联嵌入,模型为每个角点预测一个嵌入向量,然后根据嵌入向量的距离匹配角点。期间,如果两个角点来自于同一个目标,则它们的距离相近。但是这类方法也存在不足:(1)在训练过程中使用 p u l l {\rm pull} 损失将属于同一目标的角点对推进、使用 p u s h {\rm push} 损失将属于不同目标的角点对拉开,这样,模型在训练过程中实际是在寻找唯一匹配的角点对。这使得模型对噪声点高度敏感,并且在一幅图像中有多个相似对象时,训练难度将急剧增加;(2)基于关联嵌入的方法仅利用目标的表观特征,而没有使用位置信息。如下图:在这里插入图片描述

图2:各模型检测结果对比

上图中目标相似且密集, C o r n e r N e t {\rm CornerNet} 基于目标表观特征匹配角点对产生了许多错误的结果, C e n t e r N e t {\rm CenterNet} 利用中心关键点辅助角点的匹配减少了许多错误,但仍无法适应目标密集的场景。图 ( c ) {\rm (c)} C e n t r i p e t a l N e t {\rm CentripetalNet} 很好解决了上述问题。

扫描二维码关注公众号,回复: 11515702 查看本文章

论文提出一种新的关键点匹配方法,利用向心位移完成角点匹配,同时使用 c r o s s s t a r {\rm cross﹣star} 可变形卷积模块改善向心位移的生成。简单地说,给定角点对,定义一个二维的位移向量表示对中心点的偏移。这样,每个角点可以基于向心位移生成一个中心点。如果两个角点属于同一个目标,则由它们产生的中心点位置应该很接近。则可以通过生成的中心点与几何中心点的距离衡量匹配结果(这里使用了边界框的位置信息)。此外,论文还提出一种 c r o s s s t a r {\rm cross﹣star} 可变形卷积模块,不仅可以获得较大的感受野,还能学习 c r o s s s t a r {\rm cross﹣star} 的几何结构(这里不清楚的话看下面 ( 3.2 ) (3.2) 部分)。


2. Related Work

相关工作部分首先介绍了 A n c h o r s B a s e d {\rm Anchors﹣Based} 目标检测方法,如 R C N N {\rm R﹣CNN} 系列、 S S D {\rm SSD} Y O L O {\rm YOLO} 系列、 R e t i n a {\rm Retina} N e t {\rm ﹣Net} R e f i n e D e t {\rm RefineDet} 等,然后介绍了 A n c h o r s F r e e {\rm Anchors﹣Free} 目标检测方法,如 D e n s e B o x {\rm DenseBox} U n i t B o x {\rm UnitBox} F C O S {\rm FCOS} C o r {\rm Cor} n e r N e t {\rm﹣nerNet} E x t r e m e N e t {\rm ExtremeNet} R e p P o i n t s {\rm RepPoints} C e n t e r N e t {\rm CenterNet} 等。


3. CentripetalNet

首先来看一下模型的整体结构:
在这里插入图片描述

图3:模型整体结构

由图可知,该模型一共由 4 4 个模块组成:角点检测模块、向心位移模块、 c r o s s s t a r {\rm cross﹣star} 可变形卷积模块、用于实例分割的掩膜模块。大体流程是:首先基于 C o r n e r N e t {\rm CornerNet} 产生候选角点,根据向心位移算法获得高质量的角点对,然后根据角点对生成目标边界框;接着使用 c r o s s s t a r {\rm cross﹣star} 可变形卷积模块进行特征适配以丰富角点位置处的视觉特征;最后使用掩膜分支改善检测结果,同时产生实例分割结果。接下来详细说明每个模块(角点检测模块这里不做说明,具体内容可查看CornerNet):

3.1 Centripetal Shift Module

C e n t r i p e t a l   S h i f t {\rm Centripetal\ Shift} ,对于边界框 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) ,其几何中心为 ( 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}) 。定义左上角点和右下角点的向心位移为: c s t l i = ( l o g ( c t x i t l x i s ) , l o g ( c t y i t l y i s ) ) c s b r i = ( l o g ( b r x i c t x i s ) , l o g ( b r y i c t y i s ) ) (3.1) cs_{tl}^i=(log(\frac{ctx^i-tlx^i}{s}),log(\frac{cty^i-tly^i}{s}))\\ cs_{br}^i=(log(\frac{brx^i-ctx^i}{s}),log(\frac{bry^i-cty^i}{s}))\tag{3.1}

这里使用 l o g log 函数控制数据的范围, s s 为超参数。

在训练过程中,使用 S m o o t h L 1 {\rm SmoothL1} 损失函数对向心位移的预测优化: L c s = 1 N k = 1 N [ L 1 ( c s t l k , c s ^ t l k ) + L 1 ( c s b r k , c s ^ b r k ) ] (3.2) L_{cs}=\frac{1}{N}\sum_{k=1}^{N}[L_1(cs_{tl}^k,\hat{cs}_{tl}^k)+L_1(cs_{br}^k,\hat{cs}_{br}^k)]\tag{3.2}

其中 c s k cs_*^k c s ^ k \hat{cs}_*^k 分别表示标注框和候选框的向心位移, N N 表示一幅图形中目标的数量。

C o r n e r   M a t c h i n g {\rm Corner\ Matching} ,上面部分提到的向心位移的定义,以及如何使用损失函数对向心位移的预测优化,以达到对角点预测的优化,下面部分就介绍如何对检测的角点进行匹配。论文利用向心位移及其位置信息匹配角点。直观上,如何一对角点来自同一个边界框,它们应共享边界框的中心区域。如图:在这里插入图片描述

图4:边界框预测相关

如图 ( a ) {\rm (a)} ,由于原图上的点和特征图上的点相互映射回存在偏差,这里定义 O t l O_{tl} O b r O_{br} 分别表示左上角和右下角的偏差(这里整数点为特征图映射到原图结果,由于通常采用 ( x s s , y s s ) (\lfloor\frac{x}{s}\rfloor*s,\lfloor\frac{y}{s}\rfloor*s) 的形式,所以会造成精度的丢失)。 e c s t l e^{cs_{tl}} e c s b r e^{cs_{br}} 分别表示左上和右下的向心位移取指数,这里取指数是为了后面便于求梯度时的导数。边界框中心由红色点标注;
如图 ( b ) {\rm (b)} δ δ 定义为标注框的角点与边界框中心点的偏移;
如图 ( c ) {\rm (c)} ,我们可以从预测的角点位置和向心位移得到其相应的中心,由此可以判断一对角点的中心是否足够靠近由角点对组成的边界框的中心区域;
对比图 ( a ) {\rm (a)} ( c ) {\rm (c)} ,模型预测的向心位移 e c s ^ t l e^{\hat{cs}_{tl}} e c s ^ b r e^{\hat{cs}_{br}} 所指向的中心点分别为蓝色点和绿色点,处于红色点所规定的红色区域内。则判定本次预测的角点有效。

这里,如果由角点热图和局部偏移热图得到的角点满足以下条件,且判断为同一类别,则可以构成边界框: t l x b r x t l y < b r y tlx<brx∧tly<bry 。对于每个边界框 b b o x j bbox^j ,其置信度定义为每个角点置信度的几何平均。由上图中的 ( c ) {\rm (c)} ,中心区域定义为 R c e n t r a l = { ( x , y ) x [ c t l x , c b r x ] , y [ c t l y , c b r y ] } (3.3) R_{central}=\{(x,y)|x∈[ctlx,cbrx],y∈[ctly,cbry]\}\tag{3.3}

且由以下等式计算:
{ c t l x = t l x + b r x 2 b r x t l x 2 μ c t l y = t l y + b r y 2 b r y t l y 2 μ c b r x = t l x + b r x 2 + b r x t l x 2 μ c b r y = t l y + b r y 2 + b r y t l y 2 μ (3.4) \left\{ \begin{aligned} &ctlx=\frac{tlx+brx}{2}-\frac{brx-tlx}{2}μ\\ &ctly=\frac{tly+bry}{2}-\frac{bry-tly}{2}μ\\ &cbrx=\frac{tlx+brx}{2}+\frac{brx-tlx}{2}μ\\ &cbry=\frac{tly+bry}{2}+\frac{bry-tly}{2}μ\\ \end{aligned} \right.\tag{3.4}

其中 0 < μ 1 0<μ≤1 ,用于控制中心区域的大小, / + μ -/+*μ 部分相当于对于中心点的偏移。且基于向心位移,可以计算左上角点和右下角点的中心点 ( t l c t x , t l c t y ) (tl_{ctx},tl_{cty}) ( b r c t x , b r c t y ) (br_{ctx},br_{cty})

然后对每个满足条件 ( t l c t x j , t l c t y j ) R c e n t r a l j ( b r c t x j , b r c t y j ) R c e n t r a l j (tl_{ctx}^j,tl_{cty}^j)∈R^j_{central} ∧(br_{ctx}^j,br_{cty}^j)∈R^j_{central} 的边界框计算权重 w j w^j (即满足角点对的中心点均位于边界框的中心区域内): w j = e b r c t x j t l c t x j b r c t y j t l c t y j ( c b r x j c t l x j ) ( c b r y j c t l y j ) (3.5) w^j=e^{-\frac{|br^j_{ctx}-tl^j_{ctx}||br^j_{cty}-tl^j_{cty}|}{(cbrx^j-ctlx^j)(cbry^j-ctly^j)}}\tag{3.5}

上述等式是 e x e^{-x} 是一个减函数,其中指数部分的分母是一个定值,由标注框决定。分母是所得的候选角点对中心点横纵坐标差的绝对值乘积。 则上述等式表示如果回归的中心点越接近,其权重越大。对于其他不满足条件的边界框,令 w j = 0 w^j=0

3.2 Cross-Star Deformable Convolution

基于 c o r n e r   p o o l i n g {\rm corner\ pooling} 会产生一些 c r o s s   s t a r s {\rm cross\ stars} (这里译作交叉点, c o r n e r   p o o l i n g {\rm corner\ pooling} 的相关知识可参考这里),如图 ( a ) {\rm (a)} 在这里插入图片描述

图5:cross stars

由于交叉点通过取最大值和求和得到,其包含了目标丰富的上下文信息。为了捕捉上下文信息,不仅需要一个较大的感受野,还需要学习交叉点的几何结构信息。基于此,论文提出 c r o s s s t a r {\rm cross﹣star} 可变形卷积模块,用于增加角点的视觉特征。如图 3 3 ,首先,该模块以中心池化的结果作为输入。为了学习交叉点的几何结构信息,作者使用相应目标的大小指导偏移图的生成(偏移图是 D C N {\rm DCN} 中的概念,是一个可学习的分支,用于确定卷积核的形状)。

以左上角点为例,模型应该忽略交叉点的左上区域(由于该区域在目标外)。由此,给模型嵌入一个引导偏移,由图 4 4 ( b ) {\rm (b)} 所示,该偏移从角点到中心点。对于偏移图来说,它既包含了边界框的形状信息,也包含其方向信息(在偏移图中的方向信息可以引导角点和向心位移生成相应的中心点)。

如图 3 3 ,偏移图由三个卷积层构成。前两个卷积层以中心池化的输出为输入,通过以下损失函数优化: L δ = 1 N k = 1 N [ L 1 ( δ t l , δ ^ t l ) + L 1 ( δ b r , δ ^ b r ) ] (3.6) L_δ=\frac{1}{N}\sum_{k=1}{N}[L_1(δ_{tl},\hat{δ}_{tl})+L_1(δ_{br},\hat{δ}_{br})]\tag{3.6}

其中, δ δ 由如下方式定义: δ t l i = ( c t x i s t l x i s , c t y i s t l y i s ) (3.7) δ_{tl}^i=(\frac{ctx^i}{s}-\lfloor\frac{tlx^i}{s}\rfloor,\frac{cty^i}{s}-\lfloor\frac{tly^i}{s}\rfloor)\tag{3.7}

前两个卷积层的输出为引导偏移。第三个卷积层的输入为引导偏移,输出为偏移图。下图是不同方法得到的采样点:在这里插入图片描述

图6:cross stars

上图中 ( a ) {\rm (a)} 为标准 D C N {\rm DCN} 的采样结果; ( b ) {\rm (b)} R o I {\rm RoI} 卷积的结果; ( c ) {\rm (c)} 为论文提出的 c r o s s s t a r {\rm cross﹣star} 可变形卷积的结果。由图对比可知,论文方法可以有效获得交叉点的几何信息和提取交叉点的边缘。

3.3 Instance Mask Head

这部分介绍如何通过模型得到实例分割结果。如图 3 3 ,掩码模块将送入 s o f t N M S {\rm soft﹣NMS} 前的检测结果作为实例分割的候选区域,然后采用 F C N {\rm FCN} 对候选区域处理得到目标掩膜。具体而言,为了得到候选区域,首先预训练几个 e p o c h {\rm epoch} C e n t r i p e t a l N e t {\rm CentripetalNet} 产生一系列候选框。接着取分数前 k k 的候选框作为 R o I A l i g n {\rm RoIAlign} 的输入。然后,如图 3 3 ,通过一系列的卷积核反卷积操作,最终得到一个 28 × 28 28×28 大小的掩膜。这里,使用损失函数 L m a s k L_{mask} 优化掩膜 m ^ i \hat{m}_i 的生成: L m a s k = 1 N k = 1 N C E ( m i , m ^ i ) (3.8) L_{mask}=\frac{1}{N}\sum_{k=1}^{N}CE(m_i,\hat{m}_i)\tag{3.8}


4. Experiments

综合以上,最终训练过程中的损失函数定义为: L = L d e t + L o f f + α L δ + L c s + L m a s k (4.1) L=L_{det}+L_{off}+αL_δ+L_{cs}+L_{mask}\tag{4.1}

其中, L d e t L_{det} L o f f L_{off} 的定义来自CornerNet α α 为平衡系数。

以下是在目标检测模型中精度的对比:
在这里插入图片描述

图7:目标检测实验结果对比

以下是在实例分割模型中精度的对比:
在这里插入图片描述

图8:实例分割实验结果对比

原文实验部分,还给出了训练和推理过程的实施细节。此外,针对其提出的几个模块做了一系列消融实验,包括向心位移模块 c r o s s s t a r {\rm cross﹣star} 可变形卷积模块用于实例分割的掩膜模块。详细内容请查看原文


5. Conclusion

论文提出一种新的基于关键点的目标检测方法, C e n t r i p e t a l N e t {\rm CentripetalNet} 。首先,关键点检测基于 C o r n e r N e t {\rm CornerNet} ,然后提出向心位移的概念改善关键点的配对。最后,充分利用中心池化产生的交叉点,获取角点的几何结构信息,改善模型的检测结果。同时,通过添加一个掩膜分支,模型可以应用于实例分割中。
总的来说,自 C o r n e r N e t {\rm CornerNet} 出现以来,出现了大量基于关键点的检测方法。有基于三关键点的检测方法(如 C e n t e r N e t T r i p l e t s {\rm CenterNet﹣Triplets} ),基于中心关键的检测方法(如 C e n t e r N e t P o i n t s {\rm CenterNet﹣Points} ),基于多关键点的检测方法(如 E x t r e m e N e t {\rm ExtremeNet} )。对这类算法的改进首先是优化关键点的生成(大多是基于人体姿态估计的思路,通过 H o u r g l a s s {\rm Hourglass} 生成热图,通过热图峰值得到候选关键点),然后是关键点的配对算法(传统使用的嵌入向量方法及本文提出的方法),最后是边界框的生成方法(如何通过关键点回归边界框)。

由于没有阅读源码,本文只总结了 C e n t r i p e t a l N e t {\rm CentripetalNet} 的大体结构和信息,详细内容请阅读论文原文


参考

  1. Dong Z, Li G, Liao Y, et al. CentripetalNet: Pursuing High-quality Keypoint Pairs for Object Detection[J]. arXiv preprint arXiv:2003.09119, 2020.


猜你喜欢

转载自blog.csdn.net/Skies_/article/details/105198601