(八)论文阅读 | 目标检测之FCOS


简介

在这里插入图片描述

图1:论文原文

论文是发表在 I C C V   2019 {\rm ICCV\ 2019} 上的一篇关于目标检测的论文,提出一种新的 A n c h o r {\rm Anchor} - F r e e {\rm Free} 方法。大体来看,这篇论文的方法与FSAF有异曲同工之妙。
论文原文 源码


0. Abstract

作者提出 F C O S {\rm FCOS} 上以解决目标检测中的像素级检测问题,类似于图像语义分割。 F C O S {\rm FCOS} 是一种 A n c h o r {\rm Anchor} - F r e e {\rm Free} 上的方法,避免了一系列 A n c h o r {\rm Anchor} - B a s e d {\rm Based} 方法的问题。实验结果为在 M S   C O C O {\rm MS\ COCO} 上数据集上的 A P {\rm AP} 上为 44.7 % {\rm 44.7\%}
论文贡献:(一)提出一种新的 A n c h o r {\rm Anchor} - F r e e {\rm Free} 目标检测方法;(二)由于将目标检测当做像素级的检测,这使得目标检测可以和很多图像语义分割和实例分割的方法相互借鉴(比如 C V P R   2020   O r a l {\rm CVPR\ 2020\ Oral} 的一篇一阶段实例分割方法 P o l a r M a s k {\rm PolarMask} 就是基于 F C O S {\rm FCOS} )。


1. Introduction

前面是关于目标检测常规介绍,并指出 A n c h o r {\rm Anchor} - B a s e d {\rm Based} 方法的一些不足:(1)检测器性能对先验 A n c h o r {\rm Anchor} 的尺寸和宽高比敏感;(2) A n c h o r {\rm Anchor} 的尺寸和宽高比一旦设定,只能通过训练过程中的微调改变,这不利于多尺度检测。同时先验 A n c h o r {\rm Anchor} 不具有可扩展性,在不同数据集上需要重新设置;(3)为了获得更高的精度, A n c h o r {\rm Anchor} - B a s e d {\rm Based} 方法需要在输入图像上设置大量 A n c h o r {\rm Anchor} ,而其中大量 A n c h o r {\rm Anchor} 所包含的内容为背景,这会导致训练过程中样本的不平衡性;(关于目标检测中的平衡训练可参考这里)(4) A n c h o r {\rm Anchor} 的设置会产生大量的计算。
FCN在密集检测任务中表现出色,例如图像语义分割、深度估计、关键点检测、计数等。作者在这里指出,目标检测是否也能够当做像素级预测问题?基于 F C N {\rm FCN} 的目标检测方法,在特征图的每个位置预测一个 4 4 维的位置向量和类别置信度(对特征图上每一个像素点分类)。下图是 F C O S {\rm FCOS} 中的做法:
在这里插入图片描述

图2:FCOS

左图, F C O S {\rm FCOS} 预测一个 4 4 维的位置向量 ( l , t , r , b ) (l,t,r,b) ;右图,当某个位置存在多个预测框的情况。

DenseBox的做法是:为了解决不同边界框的尺寸问题,采用图像金字塔作为输入,得到 5 5 个通道的特征图用于预测置信度和边界框宽高。但作者认为这类方法不能很好处理地含有重叠框的情况(如图 2 2 中的右图)。此外,实验发现, F C O S {\rm FCOS} 会产生大量远离目标中心的边界框。为了抑制这些框,作者提出 c e n t e r {\rm center} - n e s s {\rm ness} 分支。
关于 F C O S {\rm FCOS} 讨论
(1)将检测同基于 F C N {\rm FCN} 的如图像语义分割任务相统一,可以轻松复用其思想;
(2) A n c h o r {\rm Anchor} - F r e e {\rm Free} 减少参数量和人工干预;
(3)简化计算过程(如去掉 I o U {\rm IoU} 的计算等);
(4)在一阶段检测算法中表现 S O T A {\rm SOTA}
(5)可以轻易迁移到其他像素级任务中,如实例分割、特征点估计等。


2. Related Work

A n c h o r {\rm Anchor} - B a s e d {\rm Based} F a s t   R {\rm Fast\ R} - C N N {\rm CNN} F a s t e r   R {\rm Faster\ R} - C N N {\rm CNN} S S D {\rm SSD} Y O L O v 2 {\rm YOLOv2}
A n c h o r {\rm Anchor} - F r e e {\rm Free} Y O L O v 1 {\rm YOLOv1} CornerNetDenseBox


3. Our Approach

3.1 Fully Convolutional One-Stage Object Detector

F i R H × W × C F_i∈{\rm R}^{H×W×C} 为第 i i 层特征图, s s 为下采样倍数,标注框 B i = ( x 0 ( i ) , y 0 ( i ) , x 1 ( i ) , y 1 ( i ) , c ( i ) ) B_i=(x_0^{(i)},y_0^{(i)},x_1^{(i)},y_1^{(i)},c^{(i)}) 。对于 F i F_i 上的位置 ( x , y ) (x,y) ,将其映射回原图则为感受野区域,如果该区域落入任何标注框内,则将该位置视为正样本;否则视为负样本。 在 a n c h o r {\rm anchor} - b a s e d {\rm based} 的方法中,将该位置视为 a n c h o r {\rm anchor} 的中心进行边界框回归,而在 F C O S {\rm FCOS} 直接在该位置回归边界框。即 F C O S {\rm FCOS} 将位置视为训练样本而非 a n c h o r {\rm anchor} ,这类似于基于 F C N {\rm FCN} 的图像语义分割方法。同时,这里会使用到一个 4 4 维向量 t = ( l , t , r , b ) t^*=(l^*,t^*,r^*,b^*) ,依次表示标注框中心点到边界框 4 4 条边的距离。如果该位置落入多个标注框中,则将其视为模糊样本,并选择较小的边界框作为其回归目标,同时该位置的类别为与其有最大 I o U {\rm IoU} 的标注框。如,位置 ( x , y ) (x,y) 落入标注框 B i B_i 中,则回归目标为: l = x x 0 i ,     t = y y 0 i l^*=x-x_0^{i},\ \ \ t^*=y-y_0^{i} r = x 1 i x ,     b = y 1 i y (3.1) r^*=x_1^{i}-x,\ \ \ b^*=y_1^{i}-y\tag{3.1}

这一段的大意是 F C O S {\rm FCOS} 直接对特征图上的某个位置进行处理,将其映射回原图以寻找其对应的标注框作为回归目标,这里将点作为训练样本进行回归。

N e t w o r k   O u t p u t s {\rm Network\ Outputs} ,网络的输出是 1 1 80 80 维的类别向量(分类采用二值数据) p p 1 1 4 4 维的位置向量 t = ( l , t , r , b ) t=(l,t,r,b) 。同时,在 b a c k b o n e {\rm backbone} 后分别增加 4 4 个卷积层用于预测分类和回归。
L o s s   F u n c t i o n {\rm Loss\ Function} ,损失函数定义为: 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 ) (3.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{3.2}

L c l s L_{cls} F o c a l   L o s s {\rm Focal\ Loss} L r e g L{reg} I o U   L o s s {\rm IoU\ Loss} (目标检测中常用的套路,分类用 F o c a l   L o s s {\rm Focal\ Loss} ,回归用 I o U   L o s s {\rm IoU\ Loss} ), N p o s {N_{pos}} 为正样本数量, λ λ 为平衡系数。 1 { c x , y > 0 } 1_{\{c^*_{x,y}>0\}} 为指示函数,满足条件为 1 1 ,否则为 0 0

这里损失函数的设计中规中矩,是目标检测中常用的损失函数设计方法。如 Y O L O v 3 {\rm YOLOv3} F a s t e r   R {\rm Faster\ R} - C N N {\rm CNN} F S A F {\rm FSAF} S c r a t c h D e t {\rm ScratchDet} 等中的损失函数形式都与之类似。

I n f e r e n c e {\rm Inference} ,对于输入图像,直接进行前向传播得到分类置信度 p x , y p_{x,y} 和位置预测 t x , y t_{x,y}

3.2 Multi-level Prediction with FPN for FCOS

这里,作者使用 F P N {\rm FPN} 解决了 F C O S {\rm FCOS} 所出现的问题:1)最后一个下采样特征层得到的最大召回率较低。作者认为出现的原因可能是:由于较大倍数的下采样操作,原图中存在的小目标可能已不存在于当前特征图。2)当出现标注框重叠的情况时,检测效果可能因此下降。
上述问题均为多尺度检测问题,目标检测中通常采用 F P N {\rm FPN} 结构解决此类问题。令 { P 3 , P 4 , P 5 , P 6 , P 7 } \{P_3,P_4,P_5,P_6,P_7 \} 为得到的 5 5 个特征图。如下图:
在这里插入图片描述

图3:FCOS结构

由上图可知, P 3   P 4   P 5 P_3\ P_4\ P_5 直接由 C 3   C 4   C 5 C_3\ C_4\ C_5 后接一个 1 × 1 1×1 卷积得到,下采样倍数分别为 8   16   32 8\ 16\ 32 P 6   P 7 P_6\ P_7 分别通过 P 5   P 6 P_5\ P_6 2 2 倍下采样得到,最后的下采样倍数为 64   128 64\ 128 。这个结构类似于 F P N {\rm FPN}

下一步,首先针对特征图上的每个位置计算回归目标 l , t , r , b l^*,t^*,r^*,b^* 。如果某个位置的 m a x ( l , t , r , {\rm max}(l^*,t^*,r^*, b ) > m i b^*)>m_i m a x ( l , t , r , b ) < m i 1 {\rm max}(l^*,t^*,r^*,b^*)<m_{i-1} ,则将其视为负样本,不需要参与回归。 m i m_i 表示第 i i 层特征图需要回归的最大距离, m 2 , m 3 , m 4 , m 5 , m 6 , m 7 m_2,m_3,m_4,m_5,m_6,m_7 分别设置为 0 , 64 , 128 , 256 , 512 , 0,64,128,256,512,∞

这里相当于对回归目标直接做了一次限制,如果当前层的回归目标尺寸不符合预先设定的范围,则不对该样本进行回归。个人看法,这能缓解多尺寸检测的问题,提升检测精度。

3.3 Center-Ness for FCOS

解决了多尺度预测的问题后,仍存在另一个问题: F C O S {\rm FCOS} 会产生大量偏离目标中心的边界框。论文提出一种有效的解决办法:在同分类分支处添加一个平行层用于预测 c e n t e r {\rm center} - n e s s {\rm ness} ,见图 3 3 c e n t e r {\rm center} - n e s s {\rm 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.3) {\rm centerness^*}=\sqrt{\frac{{\rm min}(l^*,r^*)}{{\rm max}(l^*,r^*)}×\frac{{\rm min}(t^*,b^*)}{{\rm max}(t^*,b^*)}}\tag{3.3}

个人理解,在远离目标中心的边界框中,假设这些低质量框在目标的右上方且与有效框无交集,则 l + w = r l^*+w=r^* b + h = t b^*+h=t^* ,由上式计算的 c e n t e r n e s s {\rm centerness} 值会比离目标中心近的边界框的值小。从而达到抑制低质量框的目的。

这里 c e n t e r n e s s {\rm centerness^*} 值的范围是 0 0 1 1 ,使用交叉熵损失函数。 c e n t e r {\rm center} - n e s s {\rm ness} 是如何发挥作用的呢?在测试阶段,最后的得分(用于对建议框排序)通过将 c e n t e r n e s s {\rm centerness} 值同分类得分相乘得到。因此 c e n t e r {\rm center} - n e s s {\rm ness} 能够降低原理目标中心边界框的权重,最后通过 N M S {\rm NMS} 就可以将置信度低的建议框过滤。


4. Experiments

本部分首先介绍了所使用的的数据集 M S   C O C O {\rm MS\ COCO} ,以及训练和推理细节,然后就是一系列的消融实验。
这部分主要关于 F P N {\rm FPN} 用于多尺度检测,消融实验 1 1 结果:
在这里插入图片描述

图4:消融实验1结果对比

这里同 R e t i n a N e t {\rm 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)} 表示最大召回率。这里召回率的计算方式是:分配了建议框的标注框个数与总的标注框个数的比值。 L o w {\rm Low} - q u a l i t y   m a t c h e s {\rm quality\ matches} 表示在所有建议框中低质量框的保留情况。如其中 N o n e {\rm None} 表示滤除后不滤除低质量框, A l l {\rm All} 表示保留所有建议框(如根据建议框与标注框的 I o U {\rm IoU} 滤除了所有低质量框)。

这部分主要关于 F P N {\rm FPN} 用于消除模糊样本,消融实验 2 2 结果:
在这里插入图片描述

图5:消融实验2结果对比

从图中可得知,使用 F P N {\rm FPN} 后模糊样本大量减少。 d i f f {\rm diff} 表示进一步排除在重叠区域内属于同一类别的模糊样本。

这部分主要关于 c e n t e r {\rm center} - n e s s {\rm ness} 的使用,消融实验 3 3 结果:
在这里插入图片描述

图6:消融实验3结果对比

w / G N {\rm 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} ); c t r .   o n   r e g {\rm ctr.\ on\ reg} 表示将 c e n t e r {\rm center} - n e s s {\rm ness} 分支移至回归分支处; c t r .   s a m p l i n g {\rm ctr.\ sampling} 表示仅将标注框的中心区域采样为正样本; G I o U {\rm GIoU} 表示使用 G I o U   L o s s {\rm GIoU\ Loss} N o r m a l i z a t i o n {\rm Normalization} 表示将回归目标归一化,详情参考源码

这部分主要关于 F C O S {\rm FCOS} 同经典目标检测算法的对比:
在这里插入图片描述

图7:实验结果对比


5. Conclusion

论文提出了一种的新的 A n c h o r {\rm Anchor} - F r e e {\rm Free} 目标检测方法,将特征图上的点作为训练样本回归边界框。同时提出 c e n t e r n e s s {\rm centerness} 滤除远离目标中心的框。此外,论文思路同 F S A F {\rm FSAF} 类似。下图为 F S A F {\rm FSAF} 的结构:在这里插入图片描述

图8:FSAF

F S A F {\rm FSAF} R e s t i n a N e t {\rm RestinaNet} b a s e l i n e {\rm baseline} ,同样是基于 F P N {\rm FPN} 结构。在每个预测分支上又划分为两个子分支,分别用于预测分类和回归。同时在分类和回归分支上通过卷积层接上两个 A n c h o r {\rm Anchor} - F r e e {\rm Free} 分支,上图是共同训练 A n c h o r {\rm Anchor} - B a s e {\rm Base} A n c h o r {\rm Anchor} - F r e e {\rm Free} F S A F {\rm FSAF} 也可以单独训练 A n c h o r {\rm Anchor} - F r e e {\rm Free} 。更多详细内容请参考原文

最后,前面介绍的几篇基于 A n c h o r {\rm Anchor} - F r e e {\rm Free} 的目标检测论文(CornerNetCenterNet-TripletsCenterNet-PointsExtremeNet)和 F C O S {\rm FCOS} (及 F S A F {\rm FSAF} )为基于 A n c h o r {\rm Anchor} - F r e e {\rm Free} 的目标检测方法的两种不同思路,前者是通过卷积生成热图寻找关键点,进而生成边界框。而后者是通过更改分类或检测分支,基于卷积添加一个 A n c h o r {\rm Anchor} - F r e e {\rm Free} 分支完成检测。

由于没有阅读源码,本文只总结了 F C O S {\rm FCOS} 的大体结构和信息,详细内容请阅读论文原文


参考

  1. Tian Z, Shen C, Chen H, et al. Fcos: Fully convolutional one-stage object detection[C]// Proceedings of the IEEE International Conference on Computer Vision. 2019: 9627-9636.
  2. Zhu C, He Y, Savvides M. Feature selective anchor-free module for single-shot object detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 840-849.


发布了12 篇原创文章 · 获赞 0 · 访问量 620

猜你喜欢

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