论文是发表在 I C C V 2019 {\rm ICCV\ 2019} ICCV 2019上的一篇关于目标检测的论文,提出一种新的 A n c h o r {\rm Anchor} Anchor- F r e e {\rm Free} Free方法。大体来看,这篇论文的方法与FSAF有异曲同工之妙。实验结果为在 M S C O C O {\rm MS\ COCO} MS COCO上数据集上的 A P {\rm AP} AP上为 44.7 % {\rm 44.7\%} 44.7%。论文原文 源码
作者提出 F C O S {\rm FCOS} FCOS上以解决目标检测中的像素级检测问题,类似于图像语义分割。 F C O S {\rm FCOS} FCOS是一种 A n c h o r {\rm Anchor} Anchor- F r e e {\rm Free} Free上的方法,避免了一系列 A n c h o r {\rm Anchor} Anchor- B a s e d {\rm Based} Based方法相关的问题。
论文贡献:(一)提出一种新的 A n c h o r {\rm Anchor} Anchor- F r e e {\rm Free} Free目标检测方法;(二)由于将目标检测当做像素级的检测,这使得目标检测可以和很多图像语义分割和实例分割的方法相互借鉴(比如 C V P R 2020 O r a l {\rm CVPR\ 2020\ Oral} CVPR 2020 Oral的一篇一阶段实例分割方法 P o l a r M a s k {\rm PolarMask} PolarMask就是基于 F C O S {\rm FCOS} FCOS)。
前面是关于目标检测常规介绍,并指出 A n c h o r {\rm Anchor} Anchor- B a s e d {\rm Based} Based方法的一些不足:
F C N {\rm FCN} FCN在密集检测任务中表现出色,例如图像语义分割、深度估计、关键点检测、人群计数等。作者指出,目标检测是否也能够看作像素级预测问题?基于 F C N {\rm FCN} FCN的目标检测方法,在特征图的每个位置预测一个 4 4 4维的位置向量和类别置信度(对特征图上每一个像素点分类)。下图是 F C O S {\rm FCOS} FCOS中的做法:
上图左半部分是预测的一个四维向量 ( l , t , r , b ) (l,t,r,b) (l,t,r,b),右图是当某个位置存在多个预测框的情况。
作者大量借鉴 D e n s e B o x {\rm DenseBox} DenseBox的思路, D e n s e B o x {\rm DenseBox} DenseBox的做法是:为了解决不同边界框的尺寸问题,采用图像金字塔作为输入,得到 5 5 5个通道的特征图用于预测置信度和边界框宽高。但作者认为这类方法不能很好处理地含有重叠框的情况(如图 2 2 2中的右图)。此外,实验发现, F C O S {\rm FCOS} FCOS会产生大量远离目标中心的边界框。为了抑制这些框,作者在模型中添加一个 c e n t e r {\rm center} center- n e s s {\rm ness} ness分支。下面是 F C O S {\rm FCOS} FCOS的特点:
(1)将检测同基于 F C N {\rm FCN} FCN的如图像语义分割任务相统一,可以轻松复用其思想;
(2) A n c h o r {\rm Anchor} Anchor- F r e e {\rm Free} Free减少参数量和人工干预;
(3)简化计算过程(如去掉 I o U {\rm IoU} IoU的计算等);
(4)在一阶段检测算法中表现 S O T A {\rm SOTA} SOTA;
(5)可以轻易迁移到其他像素级任务中,如实例分割、特征点估计等。
A n c h o r {\rm Anchor} Anchor- B a s e d {\rm Based} Based: F a s t R {\rm Fast\ R} Fast R- C N N {\rm CNN} CNN、 F a s t e r R {\rm Faster\ R} Faster R- C N N {\rm CNN} CNN、 S S D {\rm SSD} SSD、 Y O L O v 2 {\rm YOLOv2} YOLOv2; A n c h o r {\rm Anchor} Anchor- F r e e {\rm Free} Free: Y O L O v 1 {\rm YOLOv1} YOLOv1、 C o r n e r N e t {\rm CornerNet} CornerNet、 D e n s e B o x {\rm DenseBox} DenseBox。
令 F i ∈ R H × W × C F_i∈{\mathbb R}^{H×W×C} Fi∈RH×W×C为第 i i i层特征图, s s s为下采样倍数,真实框 B i = ( x 0 ( i ) , y 0 ( i ) , x 1 ( i ) , y 1 ( i ) , c ( i ) ) ∈ R 4 × { 1 , 2 , . . . , C } B_i=(x_0^{(i)},y_0^{(i)},x_1^{(i)},y_1^{(i)},c^{(i)})\in \mathbb{R}^4×\{1,2,...,C\} Bi=(x0(i),y0(i),x1(i),y1(i),c(i))∈R4×{1,2,...,C}。其中, ( x 0 ( i ) , y 0 ( i ) ) (x_0^{(i)},y_0^{(i)}) (x0(i),y0(i))和 ( x 1 ( i ) , y 1 ( i ) ) (x_1^{(i)},y_1^{(i)}) (x1(i),y1(i))分别表示真实框的左上角和右下角坐标, c ( i ) c^{(i)} c(i)表示具体的类别。
对于 F i F_i Fi上的位置 ( x , y ) (x,y) (x,y),将其映射回原图后的位置为 ⌊ s / 2 + x s , s / 2 + y s ⌋ \lfloor s/2+xs,s/2+ys\rfloor ⌊s/2+xs,s/2+ys⌋,且该位置位于 ( x , y ) (x,y) (x,y)对应感受野的中心附近。不同于 A n c h o r {\rm Anchor} Anchor- B a s e d {\rm Based} Based中将该位置所在的 A n c h o r {\rm Anchor} Anchor视为正样本, F C O S {\rm FCOS} FCOS的做法是直接基于该位置来回归边界框。此时,位置 ( x , y ) (x,y) (x,y)被当作正样本,且类别为对应真实框的类别。
同时,使用一个 4 4 4维向量 t ∗ = ( l ∗ , t ∗ , r ∗ , b ∗ ) t^*=(l^*,t^*,r^*,b^*) t∗=(l∗,t∗,r∗,b∗),依次表示真实框中心点到边界框各边的距离,也即是该位置的回归目标。如果该位置落入多个标注框中,则将其视为模糊样本,并选择较小的边界框作为其回归目标(后面使用 F P N {\rm FPN} FPN会大大减少模糊样本的数量)。同时该位置的类别为与其有最大 I o U {\rm IoU} IoU的标注框。如,位置 ( x , y ) (x,y) (x,y)落入标注框 B i B_i Bi中,则回归目标为: l ∗ = x − x 0 i , t ∗ = y − y 0 i l^*=x-x_0^{i},\ \ \ t^*=y-y_0^{i} l∗=x−x0i, t∗=y−y0i r ∗ = x 1 i − x , b ∗ = y 1 i − y (1) r^*=x_1^{i}-x,\ \ \ b^*=y_1^{i}-y\tag{1} r∗=x1i−x, b∗=y1i−y(1)
网络的输出是 1 1 1个 80 80 80维的类别向量 p p p和 1 1 1个 4 4 4维的位置向量 t = ( l , t , r , b ) t=(l,t,r,b) t=(l,t,r,b)。同时,在 B a c k b o n e {\rm Backbone} Backbone后分别增加 4 4 4个卷积层分别用于预测分类和回归(如下图 3 3 3)。损失函数定义为: L ( { p x , y } , { t x , y } ) = 1 N p o s ∑ x , y L c l s ( p x , y , c x , y ∗ ) + λ N p o s ∑ x , y 1 { c x , y ∗ > 0 } L r e g ( t x , y , t x , y ∗ ) (2) L(\{p_{x,y}\},\{t_{x,y}\})=\frac{1}{N_{pos}}\sum_{x,y}L_{cls}(p_{x,y},c^*_{x,y})+\frac{λ}{N_{pos}}\sum_{x,y}1_{\{c^*_{x,y}>0\}}L_{reg}(t_{x,y},t^*_{x,y})\tag{2} L({px,y},{tx,y})=Npos1x,y∑Lcls(px,y,cx,y∗)+Nposλx,y∑1{cx,y∗>0}Lreg(tx,y,tx,y∗)(2)
L c l s L_{cls} Lcls为 F o c a l L o s s {\rm Focal\ Loss} Focal Loss, L r e g L{reg} Lreg为 I o U L o s s {\rm IoU\ Loss} IoU Loss(目标检测中常用的套路,分类用 F o c a l L o s s {\rm Focal\ Loss} Focal Loss,回归用 I o U L o s s {\rm IoU\ Loss} IoU Loss), N p o s {N_{pos}} Npos为正样本数量, λ λ λ为平衡系数。 1 { c x , y ∗ > 0 } 1_{\{c^*_{x,y}>0\}} 1{cx,y∗>0}为指示函数,满足条件为 1 1 1,否则为 0 0 0。
这里,作者使用 F P N {\rm FPN} FPN解决 F C O S {\rm FCOS} FCOS所出现的相关问题: ( 1 ) (1) (1)最后一个下采样特征层得到的最大召回率较低。作者认为出现的原因可能是:由于较大倍数的下采样操作,原图中存在的小目标可能已不存在于当前特征图。 ( 2 ) (2) (2)当出现标注框重叠的情况时,检测效果可能因此下降。上述问题均涉及多尺度检测问题,目标检测中通常采用 F P N {\rm FPN} FPN结构解决此类问题。令 { P 3 , P 4 , P 5 , P 6 , P 7 } \{P_3,P_4,P_5,P_6,P_7 \} {P3,P4,P5,P6,P7}为得到的 5 5 5个特征图。如下图:
首先针对特征图上的每个位置计算回归目标 l ∗ , t ∗ , r ∗ , b ∗ l^*,t^*,r^*,b^* l∗,t∗,r∗,b∗。如果某个位置的 m a x ( l ∗ , t ∗ , r ∗ , {\rm max}(l^*,t^*,r^*, max(l∗,t∗,r∗, b ∗ ) > m i b^*)>m_i b∗)>mi或 m a x ( l ∗ , t ∗ , r ∗ , b ∗ ) < m i − 1 {\rm max}(l^*,t^*,r^*,b^*)
解决了多尺度预测的问题后,仍存在另一个问题: F C O S {\rm FCOS} FCOS会产生大量偏离目标中心的边界框。论文提出一种有效的解决办法:在同分类分支处添加一个平行层用于预测 c e n t e r {\rm center} center- n e s s {\rm ness} ness,见图 3 3 3。 c e n t e r {\rm center} center- n e s s {\rm ness} ness指当前位置同该位置所负责边界框的归一化距离,计算方法如下: c e n t e r n e s s ∗ = m i n ( l ∗ , r ∗ ) m a x ( l ∗ , r ∗ ) × m i n ( t ∗ , b ∗ ) m a x ( t ∗ , b ∗ ) (3) {\rm centerness^*}=\sqrt{\frac{{\rm min}(l^*,r^*)}{{\rm max}(l^*,r^*)}×\frac{{\rm min}(t^*,b^*)}{{\rm max}(t^*,b^*)}}\tag{3} centerness∗=max(l∗,r∗)min(l∗,r∗)×max(t∗,b∗)min(t∗,b∗)(3)
这里,在远离目标中心的边界框中,假设这些低质量框在目标的右上方且与有效框无交集,则 l ∗ + w = r ∗ l^*+w=r^* l∗+w=r∗、 b ∗ + h = t ∗ b^*+h=t^* b∗+h=t∗,由上式计算的 c e n t e r n e s s {\rm centerness} centerness值会比离目标中心近的边界框的值小。从而达到抑制低质量框的目的。这里 c e n t e r n e s s ∗ {\rm centerness^*} centerness∗值的范围是 0 0 0到 1 1 1,使用交叉熵损失函数。
c e n t e r {\rm center} center- n e s s {\rm ness} ness是如何发挥作用的呢?在测试阶段,最后的得分(用于对建议框排序)通过将 c e n t e r n e s s {\rm centerness} centerness值同分类得分相乘得到。因此 c e n t e r {\rm center} center- n e s s {\rm ness} ness能够降低原理目标中心边界框的权重,最后通过 N M S {\rm NMS} NMS就可以将置信度低的建议框过滤。
本部分首先介绍了所使用的的数据集 M S C O C O {\rm MS\ COCO} MS COCO,以及训练和推理细节,然后就是一系列的消融实验。这部分主要关于 F P N {\rm FPN} FPN用于多尺度检测,消融实验 1 1 1结果:
这里同 R e t i n a N e t {\rm RetinaNet} RetinaNet作对比,其中 B P R ( B e s t P o s s i b l e R e c a l l ) {\rm BPR(Best\ Possible\ Recall)} BPR(Best Possible Recall)表示最大召回率。这里召回率的计算方式是:分配了建议框的标注框个数与总的标注框个数的比值。 L o w {\rm Low} Low- q u a l i t y m a t c h e s {\rm quality\ matches} quality matches表示在所有建议框中低质量框的保留情况。如其中 N o n e {\rm None} None表示滤除后不滤除低质量框, A l l {\rm All} All表示保留所有建议框(如根据建议框与标注框的 I o U {\rm IoU} IoU滤除了所有低质量框)。这部分主要关于 F P N {\rm FPN} FPN用于消除模糊样本,消融实验 2 2 2结果:
从图中可得知,使用 F P N {\rm FPN} FPN后模糊样本大量减少。 d i f f {\rm diff} diff表示进一步排除在重叠区域内属于同一类别的模糊样本。这部分主要关于 c e n t e r {\rm center} center- n e s s {\rm ness} ness的使用,消融实验 3 3 3结果:
w / G N {\rm w/GN} w/GN表示组归一化( w i t h G r o u p N o r m a l i z a t i o n {\rm with\ Group\ Normalization} with Group Normalization); c t r . o n r e g {\rm ctr.\ on\ reg} ctr. on reg表示将 c e n t e r {\rm center} center- n e s s {\rm ness} ness分支移至回归分支处; c t r . s a m p l i n g {\rm ctr.\ sampling} ctr. sampling表示仅将标注框的中心区域采样为正样本; G I o U {\rm GIoU} GIoU表示使用 G I o U L o s s {\rm GIoU\ Loss} GIoU Loss; N o r m a l i z a t i o n {\rm Normalization} Normalization表示将回归目标归一化,详情参考源码。这部分主要关于 F C O S {\rm FCOS} FCOS同经典目标检测算法的对比:
论文提出了一种的新的 A n c h o r {\rm Anchor} Anchor- F r e e {\rm Free} Free目标检测方法,将特征图上的点作为训练样本回归边界框。同时提出 c e n t e r n e s s {\rm centerness} centerness滤除远离目标中心的框。此外,论文思路同 F S A F {\rm FSAF} FSAF类似。下图为 F S A F {\rm FSAF} FSAF的结构:
F S A F {\rm FSAF} FSAF以 R e s t i n a N e t {\rm RestinaNet} RestinaNet为 b a s e l i n e {\rm baseline} baseline,同样是基于 F P N {\rm FPN} FPN结构。在每个预测分支上又划分为两个子分支,分别用于预测分类和回归。同时在分类和回归分支上通过卷积层接上两个 A n c h o r {\rm Anchor} Anchor- F r e e {\rm Free} Free分支,上图是共同训练 A n c h o r {\rm Anchor} Anchor- B a s e {\rm Base} Base和 A n c h o r {\rm Anchor} Anchor- F r e e {\rm Free} Free。 F S A F {\rm FSAF} FSAF也可以单独训练 A n c h o r {\rm Anchor} Anchor- F r e e {\rm Free} Free。更多详细内容请参考原文。
最后,前面介绍的几篇基于 A n c h o r {\rm Anchor} Anchor- F r e e {\rm Free} Free的目标检测论文(CornerNet、CenterNet-Triplets、CenterNet-Points、ExtremeNet)和 F C O S {\rm FCOS} FCOS(及 F S A F {\rm FSAF} FSAF)为基于 A n c h o r {\rm Anchor} Anchor- F r e e {\rm Free} Free的目标检测方法的两种不同思路,前者是通过卷积生成热图寻找关键点,进而生成边界框。而后者是通过更改分类或检测分支,基于卷积添加一个 A n c h o r {\rm Anchor} Anchor- F r e e {\rm Free} Free分支完成检测。