简介
论文是 E C C V 2020 {\rm ECCV\ 2020} ECCV 2020的一篇关于目标检测文章,其主要贡献是提出产生候选区域的结构 C P N {\rm CPN} CPN。与 R P N {\rm RPN} RPN通过 A n c h o r {\rm Anchor} Anchor产生先验框不同的是, C P N {\rm CPN} CPN通过角点产生先验框,这样也就避免了有关 A n c h o r {\rm Anchor} Anchor的参数设置。实验结果为在 C O C O {\rm COCO} COCO数据集上的 A P {\rm AP} AP达到 49.2 % {\rm 49.2\%} 49.2%。论文原文 源码
0. Abstract
目标检测的目的是检测出给定图像中的目标类别和位置。论文提出一种新的无框、两阶段检测算法,首先通过角点对获得先验框,然后通过一个独立的分类阶段对每个先验框采样。论文实验证明,采用两阶段的方法能够显著提高召回率和精度,并且可以集成到任意端到端的网络中。
论文贡献:(一)提出 C P N {\rm CPN} CPN用于解决无框检测算法中假阳性样本的问题;(二)引入一个二分类器可以有效滤除假阳性样本和减少模型整体的计算量;(三) C P N {\rm CPN} CPN的结构和整体思路和 R P N {\rm RPN} RPN非常类似,为后续的改进提供思路;(四)在无框检测算法中达到 S O T A {\rm SOTA} SOTA。
1. Introduction
目标检测的两个关键是找到具有不同几何形状的目标(召回率)和给目标赋予特定的类别标签(精度)。而目标检测方法基于检测过程大致分为两个类别:早期的有框检测方法主要产生大量尺寸固定的先验框;而后无框检测方法提出使用单个或多个点表征目标。
论文首先提出两个问题:(1)目标检测模型的召回率受到模型对于目标几何形状检测能力的影响,尤其是无框检测方法;(2)无框检测方法通过会产生大量假阳性样本,因此论文提出将无框检测和两阶段检测结合。
论文提出 C P N {\rm CPN} CPN结构,它通过左上角和右下角关键点检测目标。整个模型基于 C o r n e r N e t {\rm CornerNet} CornerNet完成,但文中没有使用基于嵌入向量对角点分组的方案,因此这回产生非常多的先验框和假阳性样本(由上面的第二行检测结果可以得知)。论文中的做法是使用一个分类器滤除不正确的匹配点,即模型中共有两个分类器,第一个是一个二值分类器用于判断是否存在目标;第二个分类器用于精细化分类(这一点与 R P N {\rm RPN} RPN一致)。
2. Related Work
相关工作部分介绍了当前经典的有框检测算法,无框检测算法,两阶段检测算法和一阶段检测算法。
3. Our Approach
目标检测模型的输入为图像 I {\bold I} I以及真实框 b n ∗ {\bold b}_n^* bn∗,框的对应类别分别是 c n ∗ c_n^* cn∗。给定测试样例,目标检测的目标是找到一组框 b m {\bold b}_m bm以及类别 c m c_m cm,使得 { b n ∗ , c n ∗ } n = 1 N \{\bold b_n^*,c_n^*\}_{n=1}^N {bn∗,cn∗}n=1N与 { b n , c n } n = 1 N \{\bold b_n,c_n\}_{n=1}^N {bn,cn}n=1N尽可能接近。
3.1 Anchor-based or Anchor-free? One-stage or Two-stage
论文首先调研了有框检测算法和无框检测算法:有框检测算法首先产生大量先验框,然后通过一个单独的分类器判断框内有无目标以及目标的具体类别。通常,先验框使用固定的尺寸,而后通过边界框回归等过程动态地调整框;无框检测算法使用单个或多个点来表征目标,并确定框的几何形状以及类别。
论文的主要考虑是无框检测方法具有更高的灵活性,因此具有更高的召回率。论文调研了四个目标检测算法,无框检测算法在以下情况通常具有更高的召回率:(1)大尺寸目标;(2)极端比例的目标。
尽管如此,无框检测方法通常不能获得很高的精度,这是因为检测到的关键点通常不具有很强的语义信息,而缺乏语义信息导致的就是大量假阳性样本的产生。而通过给检测框添加先验信息往往会提高模型的检测精度。
3.2 The Framework of Corner Proposal Network
通过以上对实验结果等的分析,论文的主要思路是同时借鉴无框检测算法和两阶段检测算法的优势。
Stage1: Anchor-free Proposals with Corner Keypoints
如上图整个结构的第一个阶段是无框的建议区域生成,这里假设每个目标通过左上角和右下角关键点确定。同 C o r n e r N e t {\rm CornerNet} CornerNet,首先对于左上角和右下角分别计算热图,大小为输入图像的四倍下采样。每个热图定义两个损失函数, L d e t c o r n e r {\mathcal L}_{\rm det}^{\rm corner} Ldetcorner用于指导模型定位关键点; L o f f s e t c o r n e r {\mathcal L}_{\rm offset}^{\rm corner} Loffsetcorner用于修正预测的位置。在得到热图后提取固定数量的关键点,且对提取的每个关键点分类。然后,对于每组合理的关键点得到一个建议区域。这里的合理定义为:两个关键点属于同一类别,且左上角位置的横纵坐标小于右下角。但是这个过程会产生大量的假阳性样本,这会在后面第二个阶段处理。
Stage2: Two-step Classification for Filtering Proposals
由于热图的高分辨率以及使用关键点的机制,得到的检测可能具有任意形状,即模型具有较高的召回率。但是这种方法会产生大量的建议区域,主要会产生以下两个方面的问题:大量的假阳性样本以及由此产生的额外的计算量。由此,论文提出的一个两阶段轻量级二分类器可能滤除百分之八十的建议区域。设 K K K和左上角关键点和 K K K个右下角关键点共产生 M M M个建议区域。论文在模型中引入两个分类器,第一个是二分类器用于滤除大部分不包含目标的建议区域;第二个是精细化分类器用于确定建议区域的具体目标类别。
在第一个分类器中,首先使用
R
o
I
A
l
i
g
n
{\rm RoIAlign}
RoIAlign用于提取特征,然后再做一次卷积运算即得到每个建议区域的分类得分,由此建立一个二分类器:
L
p
r
o
p
=
−
1
N
∑
m
=
1
M
{
(
1
−
p
m
)
α
log
(
p
m
)
,
i
f
I
o
U
m
≥
τ
p
m
α
log
(
1
−
p
m
)
,
o
t
h
e
r
w
i
s
e
(1)
\mathcal L_{\rm prop}=-\frac{1}{N}\sum_{m=1}^M\left\{ \begin{aligned} & (1-p_m)^{\alpha}\log(p_m),& & {\rm if}\ {\rm IoU}_m\geq\tau \\ & p_m^{\alpha}\log(1-p_m),& & {\rm otherwise} \end{aligned} \right. \tag{1}
Lprop=−N1m=1∑M{(1−pm)αlog(pm),pmαlog(1−pm),if IoUm≥τotherwise(1)
式中 N N N表示正样本数量, p m p_m pm表示第 m m m个建议区域的得分, I o U m {\rm IoU}_m IoUm表示第 m m m个建议区域和所有真实框的最大交并比。
在第二个分类器中,对每个处理后的建议区域赋予具体类别。由于基于角点的类别来推测建议区域的类别通常不可靠,所以这个步骤非常重要,这是由于缺乏建议区域内的语义信息。论文采取的解决办法是训练一个具有
C
C
C个输出的分类器,
C
C
C为数据集的类别数。同时,分类器也基于
R
o
I
A
l
i
g
n
{\rm RoIAlign}
RoIAlign提取的特征得到:
L
c
l
a
s
s
=
−
1
N
^
∑
m
=
1
M
^
∑
c
=
1
C
^
{
(
1
−
q
m
,
c
)
β
log
(
q
m
,
c
)
,
i
f
I
o
U
m
,
c
≥
τ
q
m
,
c
α
log
(
1
−
q
m
,
c
)
,
o
t
h
e
r
w
i
s
e
(2)
\mathcal L_{\rm class}=-\frac{1}{\hat N}\sum_{m=1}^{\hat M}\sum_{c=1}^{\hat C}\left\{ \begin{aligned} & (1-q_{m,c})^{\beta}\log(q_{m,c}),& & {\rm if}\ {\rm IoU}_{m,c}\geq\tau \\ & q_{m,c}^{\alpha}\log(1-q_{m,c}),& & {\rm otherwise} \end{aligned} \right. \tag{2}
Lclass=−N^1m=1∑M^c=1∑C^{(1−qm,c)βlog(qm,c),qm,cαlog(1−qm,c),if IoUm,c≥τotherwise(2)
式中 M ^ {\hat M} M^和 N ^ {\hat N} N^分别表示处理后的建议区域数量和正样本数量,其他参数同上。
4. Experiments
损失函数定义为: L = L d e t c o r n e r + L o f f s e t c o r n e r + L p r o p + L c l a s s (3) \mathcal L={\mathcal L}_{\rm det}^{\rm corner}+{\mathcal L}_{\rm offset}^{\rm corner}+\mathcal L_{\rm prop}+\mathcal L_{\rm class}\tag{3} L=Ldetcorner+Loffsetcorner+Lprop+Lclass(3)
5. Conclusion
论文主要针对在 C o r n e r N e t {\rm CornerNet} CornerNet和 C e n t e r N e t {\rm CenterNet} CenterNet中会出现大量假阳性样本的情况,提出使用二分类器对建议区域做初步删选,可以有效减少假阳性样本的数量,同时也能有效地降低模型整体的计算量。 R P N {\rm RPN} RPN通过锚框产生建议区域,而论文提出的 C P N {\rm CPN} CPN通过关键点产生建议区域,整体的思路还是比较清晰。文中最终的两点应该是引入的二分类器以及式(1)和式(2)两部分损失函数的定义。接下来可能出现不是左上角和右下角关键点对产生建议区域的算法?即将 C P N {\rm CPN} CPN中产生建议区域的部分继续改进。
- Duan K, Xie L, Qi H, et al. Corner Proposal Network for Anchor-free, Two-stage Object Detection[J]. arXiv preprint arXiv:2007.13816, 2020.