赞
踩
作者: Zhi Tian, Chunhua Shen, Hao Chen, Tong He
论文地址:
FCOS: Fully Convolutional One-Stage Object Detection
FCOS: A simple and strong anchor-free object detector (注:2020年更新后的版本,比如center-ness分支有些小改动)
We propose a fully convolutional one-stage object detector (FCOS) to solve object detection in a per-pixel prediction fashion, analogue to semantic segmentation. Almost all state-of-the-art object detectors such as RetinaNet, SSD, YOLOv3, and Faster R-CNN rely on pre-defined anchor boxes. In contrast, our proposed detector FCOS is anchor box free, as well as proposal free. By eliminating the predefined set of anchor boxes, FCOS completely avoids the complicated computation related to anchor boxes such as calculating overlapping during training. More importantly, we also avoid all hyper-parameters related to anchor boxes, which are often very sensitive to the final detection performance. With the only post-processing non-maximum suppression (NMS), FCOS with ResNeXt-64x4d-101 achieves 44.7% in AP with single-model and single-scale testing, surpassing previous one-stage detectors with the advantage of being much simpler. For the first time, we demonstrate a much simpler and flexible detection framework achieving improved detection accuracy. We hope that the proposed FCOS framework can serve as a simple and strong alternative for many other instance-level tasks. Code is available at:Code is available at: this https URL.
我们提出了一个完全卷积的单阶段物体检测器(FCOS),以每像素预测的方式解决物体检测,类似于语义分割。几乎所有最先进的物体检测器,如RetinaNet、SSD、YOLOv3和Faster R-CNN,都依赖于预先定义的锚定框。相比之下,我们提出的检测器FCOS是无锚箱的,也是无建议的。通过消除预定义的锚箱集,FCOS完全避免了与锚箱有关的复杂计算,如在训练期间计算重叠。更重要的是,我们还避免了与锚箱有关的所有超参数,这些参数通常对最终的检测性能非常敏感。通过唯一的后处理非最大抑制(NMS),采用ResNeXt-64x4d-101的FCOS在单模型和单规模测试的AP中达到了44.7%,超过了以前的单阶段检测器,其优点是更简单。我们首次展示了一个更简单和灵活的检测框架,实现了更高的检测精度。我们希望所提出的FCOS框架可以作为许多其他实例级任务的一个简单而强大的替代方案。代码可在:代码可在this https URL获取。
In computer vision, object detection is one of most important tasks, which underpins a few instance-level recognition tasks and many downstream applications. Recently one-stage methods have gained much attention over two-stage approaches due to their simpler design and competitive performance. Here we propose a fully convolutional one-stage object detector (FCOS) to solve object detection in a per-pixel prediction fashion, analogue to other dense prediction problems such as semantic segmentation. Almost all state-of-the-art object detectors such as RetinaNet, SSD, YOLOv3, and Faster R-CNN rely on pre-defined anchor boxes. In contrast, our proposed detector FCOS is anchor box free, as well as proposal free. By eliminating the pre-defined set of anchor boxes, FCOS completely avoids the complicated computation related to anchor boxes such as calculating the intersection over union (IoU) scores during training. More importantly, we also avoid all hyper-parameters related to anchor boxes, which are often sensitive to the final detection performance. With the only post-processing non-maximum suppression (NMS), we demonstrate a much simpler and flexible detection framework achieving improved detection accuracy. We hope that the proposed FCOS framework can serve as a simple and strong alternative for many other instance-level tasks. Code and pre-trained models are available at: this https URL.
在计算机视觉中,物体检测是最重要的任务之一,它是一些实例级识别任务和许多下游应用的基础。最近,单阶段方法因其更简单的设计和有竞争力的性能而比双阶段方法更受关注。在这里,我们提出了一个完全卷积的单阶段物体检测器(FCOS),以每像素预测的方式解决物体检测问题,类似于其他密集的预测问题,如语义分割。几乎所有最先进的物体检测器,如RetinaNet、SSD、YOLOv3和Faster R-CNN,都依赖于预先定义的锚定框。相比之下,我们提出的检测器FCOS是无锚盒的,也是无建议的。通过消除预定义的锚箱集,FCOS完全避免了与锚箱有关的复杂计算,如在训练期间计算交集大于联合(IoU)的分数。更重要的是,我们还避免了与锚箱有关的所有超参数,这些参数往往对最终的检测性能很敏感。通过唯一的后处理非最大抑制(NMS),我们展示了一个更简单和灵活的检测框架,实现了检测精度的提高。我们希望所提出的FCOS框架可以作为许多其他实例级任务的一个简单而强大的替代方案。代码和预训练的模型可在以this https URL获得。
在之前讲的一些目标检测网络中,比如Faster R-CNN系列、SSD、YOLOv2~v5(注意YOLOv1不包括在内)都是基于Anchor进行预测的。即先在原图上生成一堆密密麻麻的Anchor Boxes
,然后网络基于这些Anchor去预测它们的类别、中心点偏移量以及宽高缩放因子得到网络预测输出的目标,最后通过NMS即可得到最终预测目标。那基于Anchor的网络存在哪些问题呢,在FCOS论文的Introduction中,作者总结了四点:
4%
的AP变化。换句话说,Anchor要设置的合适才行。虽然基于Anchor的目标检测网络存在如上所述问题,但并不能否认它的有效性,比如现在非常常用的YOLO v3~v5,它们都是基于Anchor的网络。当然,今天的主角是Anchor-Free,现今有关Anchor-Free的网络也很多,比如DenseBox、YOLO v1、CornerNet、FCOS以及CenterNet等等,而我们今天要聊的网络是FCOS(它不仅是Anchor-Free还是One-Stage,FCN-base detector)。
这是一篇发表在2019年CVPR上的文章,这篇文章的想法不仅简单而且很有效,它的思想是跳出Anchor的限制,在预测特征图的每个位置上直接去预测该点分别距离目标左侧(l: left),上侧(t:top),右侧(r: right)以及下侧(b:bottom)的距离,如下图所示。
下面这幅图是原论文中给的FCOS网络结构。注意:这张图是2020年发表的版本,和2019年发表的版本有些不同。区别在于Center-ness分支的位置,在2019年论文的图中是将Center-ness分支和Classification分支放在一起的,但在2020年论文的图中是将Center-ness分支和Regression分支放在一起。论文中也有解释,将Center-ness分支和Regression分支放在一起能够得到更好的结果:
it has been shown that positioning it on the regression branch can obtain better performance.
事实证明,将其置于回归分支上可以获得更好的性能。
图2.FCOS的网络结构。其中
C3
、C4
和C5
表示骨干网络的特征图,P3
到P7
是用于最终预测的特征等级。H×W
是特征图的高度和宽度。'/s'
(s=8,16,…,128)是该级别的特征图对输入图像的下采样率。作为一个例子,所有的数字都是以800×1024
的输入计算的。
下面这张图是霹雳吧啦Wz结合Pytorch官方实现FCOS的源码绘制的更加详细的网络结构:
首先看上图左边的部分,Backbone是以ResNet50
为例的,FPN是在Backbone输出的C3、C4和C5上先生成P3、P4和P5,接着再在P5的基础上通过一个卷积核大小为3×3步距为2的卷积层得到P6,最后在P6的基础上再通过一个卷积核大小为3×3步距为2的卷积层得到P7。
接着看右边的Head(注意这里的Head是共享的,即P3~P7都是共用一个Head),细分共有三个分支:
其中Regression和Center-ness是同一个分支上的两个不同小分支。可以看到每个分支都会先通过4个Conv2d+GN+ReLU
的组合模块,然后再通过一个卷积核大小为3×3步距为1的卷积层得到最终的预测结果。
对于Classification分支,在预测特征图的每个位置上都会预测80个score参数
(MS COCO数据集目标检测任务的类别数为80)。
这一步就非常类似于分割任务,特征图上每个像素点都属于某个类别
对于Regression分支,在预测特征图的每个位置上都会预测 4 4 4个距离参数(距离目标左侧距离 l l l,上侧距离 t t t,右侧距离 r r r 以及下侧距离 b b b,注意,这里预测的数值是相对特征图尺度上的 -> 意思就是预测值是相对该fmap而非原图的)。
- l l l: left
- r r r: right
- t t t: top
- b b b: bottom
假设对于预测特征图上某个点映射回原图的坐标是 ( c x , c y ) (c_x, c_y) (cx,cy),特征图相对原图的步距是 s s s ,那么网络预测该点对应的目标边界框坐标为:
x min = c x − l ⋅ s , y min = c y − t ⋅ s x max = c x − r ⋅ s , y max = c y − b ⋅ s x_{\min} = c_x - l \cdot s, \ \ \ \ y_{\min} = c_y - t \cdot s \\ x_{\max} = c_x - r \cdot s, \ \ \ \ y_{\max} = c_y - b \cdot s xmin=cx−l⋅s, ymin=cy−t⋅sxmax=cx−r⋅s, ymax=cy−b⋅s
- x min x_{\min} xmin: 左
- x max x_{\max} xmax: 右
- y min y_{\min} ymin: 上
- y max y_{\max} ymax: 下
对于Center-ness分支,在预测特征图的每个位置上都会预测 1 1 1 个参数,center-ness反映的是该点(特征图上的某一点)距离目标中心的远近程度,它的值域在 0 1 0~1 0 1 之间。距离目标中心越近,center-ness越接近于1,下面是center-ness真实标签的计算公式(计算损失时只考虑正样本,即预测点在目标内的情况,后续会详细讲解)。
c e n t e r - n e s s ∗ = min ( l ∗ , r ∗ ) max ( l ∗ , r ∗ ) × min ( t ∗ , b ∗ ) max ( t ∗ , b ∗ ) {\rm center}{\text -}{\rm ness}^* = \sqrt{\frac{\min (l^*, r^*)}{\max (l^*, r^*)} \times \frac{\min(t^*, b^*)}{\max(t^*, b^*)}} center-ness∗=max(l∗,r∗)min(l∗,r∗)×max(t∗,b∗)min(t∗,b∗)
其中, l ∗ 、 t ∗ 、 r ∗ l^∗、t^∗、r^∗ l∗、t∗、r∗ 和 b ∗ b^∗ b∗ 是一个位置到GT Box的四个边界的距离
在网络后处理(post-processing)部分筛选高质量BBox时,会将预测的目标class score
与center-ness
相乘再开根 (
c
l
s
∗
c
e
n
t
e
r
-
n
e
s
s
\sqrt{\rm cls * center{\text -}ness}
cls∗center-ness
),然后根据得到的结果对BBox进行排序,只保留分数较高的BBox,这样做的目的是筛掉那些目标class score低且预测点距离目标中心较远的BBox,最终保留下来的就是高质量的BBox。
classification就是分类置信度;center-ness就是目标置信度。以 c l s ∗ c e n t e r - n e s s \sqrt{\rm cls * center{\text -}ness} cls∗center-ness 进行排序的目的就是,筛选出分类置信度高且目标置信度高的正样本。
下表展示了使用和不使用center-ness对AP的影响,我们只看第一行和第三行,不使用center-ness时AP为33.5
,使用center-ness后AP提升到37.1
,说明center-ness对FCOS网络还是很有用的。
Table 4 – Ablation study for the proposed center-ness branch on minival split. “None” denotes that no center-ness is used. “center-ness†” denotes that using the center-ness computed from the predicted regression vector. “center-ness” is that using center-ness predicted from the proposed center-ness branch. The center-ness branch improves the detection performance under all metrics.
- "无"表示不使用中心度(center-ness)。
- "center-ness†"表示使用从预测回归向量中计算的中心度。
- "center-ness "是指使用从提议的center-ness分支预测的center-ness。
中心度分支提高了所有指标下的检测性能。
在计算损失之前,我们需要进行正负样本的匹配。在基于Anchor的目标检测网络中,一般会通过计算每个Anchor Box与每个GT的IoU配合事先设定的IoU阈值去匹配。比如某个Anchor Box与某个GT的IoU大于0.7,那么我们就将该Anchor Box设置为正样本。但对于Anchor-Free的网络根本没有Anchor,那该如何匹配正负样本呢。在2020年版本的论文2.1章节中有这样一段话:
Specifically, location ( x , y ) (x, y) (x,y) is considered as a positive sample if it falls into the center area of any ground-truth box, by following. The center area of a box centered at ( c x , c y ) (cx, cy) (cx,cy) is defined as the sub-box ( c x − r s , c y − r s , c x + r s , c y + r s ) (c_x - rs, c_y - rs, c_x + rs, c_y + rs) (cx−rs,cy−rs,cx+rs,cy+rs) , where s s s is the total stride until the current feature maps and r r r is a hyper-parameter being 1.5 1.5 1.5 on COCO. The sub-box is clipped so that it is not beyond the original box. Note that this is different from our original conference version, where we consider the locations positive as long as they are in a ground-truth box.
具体来说,如果位置 ( x , y ) (x, y) (x,y) 落入GTBox的中心区域,则被认为是一个正样本,具体方法如下。以 ( c x , c y ) (c_x, c_y) (cx,cy) 为中心的Box的中心区域被定义为Sub-Box ( c x − r s , c y − r s , c x + r s , c y + r s ) (c_x - rs, c_y - rs, c_x + rs, c_y + rs) (cx−rs,cy−rs,cx+rs,cy+rs) ,其中 s s s 是直到当前特征图的总跨度, r r r 是COCO上的超参数 1.5 1.5 1.5。Sub-box 被剪掉,使其不超出原Box。请注意,这与我们最初的会议版本不同,在那里我们认为只要是在GTBox中的位置都是正的。
最开始的一句话是说,对于特征图上的某一点 ( x , y ) (x,y) (x,y),只要它落入GT box中心区域,那么它就被视为正样本(其实在2019年的文章中,最开始说的是只要落入GT内就算正样本)。对应的参考文献[42]就是2019年发表的FCOS版本。但在2020年发表的FCOS版本中,新加了一条规则,在满足以上条件外,还需要满足点 ( x , y ) (x,y) (x,y) 在 ( c x − r s , c y − r s , c x + r s , c y + r s ) (c_x - rs, c_y - rs, c_x + rs, c_y + rs) (cx−rs,cy−rs,cx+rs,cy+rs) 这个sub-box范围内,其中 ( c x , c y ) (c_x, c_y) (cx,cy) 是GT的中心点, s s s 是特征图相对原图的步距, r r r 是一个超参数控制距离GT中心的远近,在COCO数据集中 r r r 设置为 1.5 1.5 1.5,关于 r r r 的消融实验可以看2020版论文的表6。
Ablation study for the radius r r r of positive sample regions (defined in Section 2.1).
对正样本区域(在第2.1节中定义)的半径 r r r的消融研究。
换句话说,点 ( x , y ) (x,y) (x,y) 不仅要在GT的范围内,还要离GT的中心点 ( c x , c y ) (c_x, c_y) (cx,cy) 足够近才能被视为正样本。
2019: 只要特征图上的某一点 ( x , y ) (x, y) (x,y) 落到GTBox中, 那么这个点就被看做是正样本
2020: 特征图上的某一点 ( x , y ) (x, y) (x,y) 落到GTBox中且与GTBox中心点的距离不能太远, 那么这个点就被看做是正样本
为了方便大家理解霹雳吧啦Wz画了下面这幅图,假设上面两个feature map对应的是同一个特征图,将特征图上的每个点映射回原图就是下面图片中黑色的圆点。根据2019年发表论文的匹配准则,只要落入GT box就算正样本,所以左侧的feature map中打勾的位置都被视为正样本。根据2020年的版本,不仅要落入GT Box还要在 ( c x − r s , c y − r s , c x + r s , c y + r s ) (c_x - rs, c_y - rs, c_x + rs, c_y + rs) (cx−rs,cy−rs,cx+rs,cy+rs) 这个sub-box范围内,所以右侧的feature map中打勾的位置都被视为正样本。
这里肯定有人会问,如果feature map上的某个点同时落入两个GT Box内(即两个GT Box相交区域),那该点到底分配给哪个GT Box,这就是论文中提到的Ambiguity问题。如下图所示,橙色圆圈对应的点同时落入人和球拍两个GT Box中,此时默认将该点分配给面积Area最小的GT Box,即图中的球拍。其实引入FPN后能够减少这种情况,后面4.1章节会讲。
在前面讲FCOS网络结构中有提到,Head总共有三个输出分支:Classification、Regression和Center-ness。故损失由分类损失 L c l s {\mathcal L}_{cls} Lcls、定位损失 L r e g {\mathcal L}_{reg} Lreg 以及center-ness损失 L c t r n e s s {\mathcal L}_{ctrness} Lctrness 三部分共同组成:
L
(
{
p
x
,
y
}
,
{
t
x
,
y
}
,
{
s
x
,
y
}
)
=
1
N
p
o
s
∑
x
,
y
L
c
l
s
(
p
x
,
y
,
c
x
,
y
∗
)
+
1
N
p
o
s
∑
x
,
y
1
c
x
,
y
∗
>
0
L
r
e
g
(
t
x
,
y
,
t
x
,
y
∗
)
+
1
N
p
o
s
∑
x
,
y
1
c
x
,
y
∗
>
0
L
c
t
r
n
e
s
s
(
s
x
,
y
,
s
x
,
y
∗
)
其中:
对于分类损失
L
c
l
s
{\mathcal L}_{\rm cls}
Lcls 采用 bce_focal_loss
,即二值交叉熵损失配合focal_loss,计算损失时所有样本都会参与计算(正样本和负样本)。
定位损失
L
r
e
g
{\mathcal L}_{\rm reg}
Lreg 采用 giou_loss
(在2019版中采用iou_loss
,但在2020版中说采用giou_loss会更好一点),计算损失时只有正样本参与计算。
center-ness损失 L c r t n e s s {\mathcal L}_{\rm crtness} Lcrtness 采用二值交叉熵损失(BCE Loss),计算损失时只有正样本参与计算。
cls loss: 正样本 + 负样本
reg loss: 正样本
center-ness loss: 正样本
在匹配正负样本过程中,对于特征图 ( x , y ) (x,y) (x,y) 点处对应的GT信息 c x , y ∗ c^*_{x,y} cx,y∗ (真实类别标签) 和 t x , y ∗ t^*_{x,y} tx,y∗ (真实目标边界框信息) 比较好得到,只要匹配到某一GT目标则 c x , y ∗ c^*_{x,y} cx,y∗ 对应GT的类别, t x , y ∗ t^*_{x,y} tx,y∗ 对应GT的bbox。而获取真实的center-ness( s x , y ∗ s^*_{x,y} sx,y∗)要复杂一点,下面是 s x , y ∗ s^*_{x,y} sx,y∗ 的计算公式,前面有提到过。
c e n t e r - n e s s ∗ = min ( l ∗ , r ∗ ) max ( l ∗ , r ∗ ) × min ( t ∗ , b ∗ ) max ( t ∗ , b ∗ ) {\rm center}{\text -}{\rm ness}^* = \sqrt{\frac{\min (l^*, r^*)}{\max (l^*, r^*)} \times \frac{\min(t^*, b^*)}{\max(t^*, b^*)}} center-ness∗=max(l∗,r∗)min(l∗,r∗)×max(t∗,b∗)min(t∗,b∗)
其中, l ∗ 、 t ∗ 、 r ∗ l^∗、t^∗、r^∗ l∗、t∗、r∗ 和 b ∗ b^∗ b∗ 是一个位置到GT Box的四个边界的距离
GTBox的类别信息和坐标信息都是可以从
label
中获取的,但这篇论文作者提出一个center-ness概念,所以这个值是需要计算得到的。
为了方便大家理解,同样画了一幅图,如下图所示。假设对于特征图上的某一个点(图中用蓝色填充的cell)映射回原图,对应图片中的黑色点。然后计算该点距离GT box左侧,上测,右侧,下侧的距离就能得到 l ∗ , t ∗ , r ∗ , b ∗ l^*,t^*,r^*,b^* l∗,t∗,r∗,b∗,再套用上面的公式就能得到 s x , y ∗ s^*_{x,y} sx,y∗(这里的 l ∗ , t ∗ , r ∗ , b ∗ l^*,t^*,r^*,b^* l∗,t∗,r∗,b∗ 无论是计算特征图尺度上的还是原图尺度上的都无所谓,因为 c e n t e r - n e s s ∗ {\rm center{\text -}ness}^* center-ness∗ 对尺度不敏感)。
这里需要注意一个问题,那就是 l ∗ 、 t ∗ 、 r ∗ l^∗、t^∗、r^∗ l∗、t∗、r∗ 和 b ∗ b^∗ b∗ 是一个位置到GT Box的四个边界的距离。
而不像 c x , y ∗ c^*_{x,y} cx,y∗、 t x , y ∗ t^*_{x,y} tx,y∗、 s x , y ∗ s^*_{x,y} sx,y∗ 这些, ∗ * ∗ 表示的是真实信息。对于 l ∗ 、 t ∗ 、 r ∗ l^∗、t^∗、r^∗ l∗、t∗、r∗ 和 b ∗ b^∗ b∗ 来说, ∗ * ∗ 可以看成是 Δ \Delta Δ。
在论文中专门有一部分内容用来分析ambiguous samples问题,即在匹配正样本时当特征图上的某一点同时落入多个GT Box内时,到底应该分配给哪一个GT的问题。
Another concern about the FCN-based detector is that it may have a large number of ambiguous samples due to the overlap in ground-truth boxes.
对基于FCN的检测器的另一个担忧是,由于GT框的重叠,它可能会有大量的模糊样本。
前面在讲正负样本匹配内容时,有提到过当特征图上的某一点同时落入多个GT Box内时,默认将该点分配给面积Area最小的GT Box,当然这并不是一个很好的解决办法。ambiguous samples的存在始终会对网络的学习以及预测产生干扰。作者在COCO 2017的val数据上进行了分析,作者发现如果不使用FPN结构时(仅在P4特征层上进行预测)会存在大量的ambiguous samples(大概占 23.16 % 23.16\% 23.16%),如果启用FPN结构ambiguous samples会大幅降低(大概占7.24%)。因为在FPN中会采用多个预测特征图,不同尺度的特征图负责预测不同尺度的目标。比如P3负责预测小型目标,P5负责预测中等目标,P7负责预测大型目标。
下面霹雳吧啦Wz也画了一幅示意图,比如对于小型目标球拍,根据尺度划分准则(4.2中会讲)它被划分到feature map 1
上,而对于大型目标人,根据尺度划分准则被划分到feature map 2
上,这样在匹配正负样本时能够将部分重叠在一起的目标(这里主要指不同尺度的目标)给分开,即解决了大部分ambiguous samples问题。
如果再采用center sampling匹配准则(即在2020年更新的FCOS版本中,匹配正样本时要求不仅要落入GT Box还要在 ( c x − r s , c y − r s , c x + r s , c y + r s ) (c_x - rs, c_y - rs, c_x + rs, c_y + rs) (cx−rs,cy−rs,cx+rs,cy+rs) 这个sub-box范围内)能够进一步降低ambiguous samples的比例(小于3%)。在论文表2中(2020版)有给出ambiguous samples比例的消融实验结果。
The ratios of the ambiguous samples to all the positive samples in FCOS. 1, 2 and ≥ 3 denote the number of ground-truth boxes a location should be associated to. If the number is greater than 1, the location is defined as an “ambiguous sample” in this work. As shown in the table, with center sampling and FPN, the ratio of ambiguous samples is low (i.e., < 3%).
FCOS中模糊样本与所有阳性样本的比率。1、2和≥3表示一个地点应与之相关的GT Box数量。如果该数字大于1,则该位置在本工作中被定义为 “模糊样本”。如表所示,在中心采样和FPN的情况下,模糊样本的比例很低(即<3%)。
这部分内容只在2020版的论文中有进行讨论。在上面已经讨论了使用FPN结构能够降低ambiguous samples的比例。那么按照怎样的准则将目标划分到对应尺度的特征图上呢?在FPN中是采用如下计算公式分配的,之前在讲FPN时有详细讲过,这里不在赘述,如果有不了解的可以翻看霹雳吧啦Wz之前的视频,https://b23.tv/Qhn6xA。
k = ⌊ k 0 + log 2 ( w h / 224 ) ⌋ k = \lfloor k_0 + \log_2(\sqrt{wh} / 224)\rfloor k=⌊k0+log2(wh /224)⌋
其中:
但在FCOS中,作者发现直接套用FPN中的公式效果并不是很好。作者猜测是因为按照FPN中的分配准则,不能确保目标在对应感受野范围内。比如对于某个特征层,每个cell的感受野为28×28,但分配到该特征层上的目标为52×52(举的这个例子可能不太恰当,因为head中采用的都是3x3大小的卷积层)。
As shown in Table 7, this strategy results in degraded performance (37.7% AP). We conjecture that it may be because the strategy cannot make sure the complete object be within the receptive field of the target FPN level.
如表7所示,这种策略的结果是性能下降(37.7%的AP)。我们猜测,这可能是因为该策略不能确保完整的物体在目标FPN水平的接受领域内(感受野内)。
接着作者自己也尝试了其他的一些匹配策略,如下表7:
Ablation study for different strategies of assigning objects to FPN levels. FPN: the strategy of assigning object proposals (i.e., ROIs) to FPN levels in the original FPN, described in the text. h ∗ h^∗ h∗ and w ∗ w^∗ w∗ are the height and width of a ground-truth box, respectively. l ∗ , t ∗ , r ∗ l^∗, t^∗, r^∗ l∗,t∗,r∗ and b ∗ b^∗ b∗ are the distances from a location to the four boundaries of a ground-truth box. “ max ( l ∗ , t ∗ , r ∗ , b ∗ ) \max(l^∗, t^∗, r^∗, b^∗) max(l∗,t∗,r∗,b∗)” (used by FCOS) has the best performance.
对将object分配到FPN水平的不同策略进行消融研究。FPN:在原始FPN中把object proposals(即ROI)分配到FPN水平的策略,在文中有描述。 h ∗ h^∗ h∗ 和 w ∗ w^∗ w∗ 分别是一个GT Box的高度和宽度。 l ∗ 、 t ∗ 、 r ∗ l^∗、t^∗、r^∗ l∗、t∗、r∗ 和 b ∗ b^∗ b∗ 是一个位置到GT Box的四个边界的距离。" max ( l ∗ , t ∗ , r ∗ , b ∗ ) \max(l^∗, t^∗, r^∗, b^∗) max(l∗,t∗,r∗,b∗) (FCOS使用)具有最好的性能。
最终作者采用的是 max ( l ∗ , t ∗ , r ∗ , b ∗ ) \max(l^*,t^*,r^*,b^*) max(l∗,t∗,r∗,b∗) 策略,其中 l ∗ , t ∗ , r ∗ , b ∗ l^*,t^*,r^*,b^* l∗,t∗,r∗,b∗ 分别代表某点(特征图映射在原图上)相对GT Box左边界、上边界、右边界以及下边界的距离(在上面3 损失计算中有讲过)。
关于这个策略在2020版论文的2.2章节中介绍的很清楚,对于不同的预测特征层只要满足以下公式即可,比如说对于P4
特征图只要
max
(
l
∗
,
t
∗
,
r
∗
,
b
∗
)
\max(l^*,t^*,r^*,b^*)
max(l∗,t∗,r∗,b∗) 在
(
64
,
128
)
(64,128)
(64,128) 之间即为正样本:
m i − 1 < max ( l ∗ , t ∗ , r ∗ , b ∗ ) < m i m_{i - 1} < \max (l^*, t^*, r^*, b^*) < m_i mi−1<max(l∗,t∗,r∗,b∗)<mi
下面是2.2章节的原始内容。
2.2 Multi-level Prediction with FPN for FCOS
Here we show that how two possible issues of the proposed FCOS can be resolved with multi-level prediction with FPN.
在这里,我们展示了所提出的FCOS的两个可能的问题如何通过FPN的多级预测来解决。
First, the large stride (e.g., 16×) of the final feature maps in a CNN can result in a relatively low best possible recall (BPR). For anchor based detectors, low recall rates due to the large stride can be compensated to some extent by lowering the IOU score requirements for positive anchor boxes. For FCOS, at the first glance one may think that the BPR can be much lower than anchor-based detectors because it is impossible to recall an object which no location on the final feature maps encodes due to a large stride. Here, we empirically show that even with a large stride, FCOS is still able to produce a good BPR, and it can even better than the BPR of the anchor-based detector RetinaNet [7] in the official implementation Detectron [46] (refer to Table 1). Therefore, the BPR is actually not a problem of FCOS. Moreover, with multi-level FPN prediction [9], the BPR can be improved further to match the best BPR the anchor-based RetinaNet can achieve.
首先,CNN中最终特征图的大跨度(说白了就是步长,也就是下采样率 例如16倍)会导致相对较低的最佳可能召回率(BPR)。对于基于Anchor的检测器来说,由于大跨度导致的低召回率可以通过降低对阳性Box的IOU分数要求而得到一定程度的补偿。对于FCOS,乍一看,人们可能会认为BPR可能比基于Anchor的检测器低得多,因为由于大跨度,不可能召回最终特征图上没有位置编码的物体。在这里,我们的实验表明,即使步幅很大,FCOS仍然能够产生良好的BPR,它甚至可以比官方实现Detectron[46]中基于Anchor的检测器RetinaNet[7]的BPR更好(参考表1)。因此,BPR实际上不是FCOS的一个问题。此外,通过多级FPN预测[9],BPR可以进一步提高,以匹配基于锚的RetinaNet可以达到的最佳BPR。
最佳可能召回率: Upper bound of the recall rate that a detector can achieve. -> 一个检测器(detector)可以达到的召回率(Recall)的上限。
这一段的意思是,如果backbone中的预测层的感受野比较大,那么用这样的fmap来识别大目标是行得通的,但对于中小目标来说,Recall就比较低了. FCOS作为Anchor-free的目标检测网络,应该也会受到这样的影响。但是作者通过实验证明,FCOS使用FPN也是可以拥有良好Recall的,甚至比RetinaNet的Recall还要高。
Second, as shown in Fig. 1 (right), overlaps in ground-truth boxes can cause intractable ambiguity, i.e., which bounding box should a location in the overlap regress? This ambiguity results in degraded performance. In this work, we show that the ambiguity can be greatly resolved with multi-level prediction (and center sampling), and FCOS can obtain on par, sometimes even better, performance compared with anchor-based ones.
其次,如图1(右图)所示,GT实证 Boxes 的重叠会导致难以解决的模糊性(ambiguity),即重叠部分的位置应该回归哪个BBox?这种模糊性会导致性能下降。在这项工作中,我们表明这种模糊性可以通过多级预测(和中心采样)得到极大的解决,而且FCOS可以获得与基于Anchor的性能相当的性能,有时甚至更好。
Specifically, following FPN [9], we detect different size objects on different feature map levels. we make use of five levels of feature maps defined as { 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}. As shown in Fig. 2, P 3 , P 4 P_3, P_4 P3,P4 and P 5 P_5 P5 are produced by the backbone CNNs’ feature maps C 3 , C 4 C_3, C_4 C3,C4 and C 5 C_5 C5 with the top-down connections as in [9]. P 6 P_6 P6 and P 7 P_7 P7 are produced by applying one 3×3 convolutional layer with the stride being 2 on P 5 P_5 P5 and P 6 P_6 P6, respectively. Note that this is different from the original RetinaNet, which obtain P 6 P_6 P6 and P 7 P_7 P7 from the backbone feature maps C 5 C_5 C5. We find both schemes achieve similar performance but the one we use has fewer parameters. Moreover, the feature levels P 3 P_3 P3, P 4 P_4 P4, P 5 P_5 P5, P 6 P_6 P6 and P 7 P_7 P7 have strides 8 , 16 , 32 , 64 8, 16, 32, 64 8,16,32,64 and 128 128 128, respectively.
具体来说,按照FPN[9],我们在不同的特征图层次上检测不同大小的物体。我们利用五个层次的特征图,定义为 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。如图2所示, P 3 , P 4 P_3, P_4 P3,P4和 P 5 P_5 P5是由主干CNNs的特征图 C 3 , C 4 C_3, C_4 C3,C4和 C 5 C_5 C5产生的,其自上而下的连接方式如[9]。 P 6 P_6 P6和 P 7 P_7 P7是通过在 P 5 P_5 P5和 P 6 P_6 P6上分别应用一个跨度为2的3×3卷积层而产生的。请注意,这与原始的RetinaNet不同,后者是从骨干特征图 C 5 C_5 C5获得 P 6 P_6 P6和 P 7 P_7 P7。我们发现这两种方案取得了相似的性能,但我们使用的方案的参数较少。此外,特征层 P 3 P_3 P3、 P 4 P_4 P4、 P 5 P_5 P5、 P 6 P_6 P6和 P 7 P_7 P7的步长分别为 8 、 16 、 32 、 64 8、16、32、64 8、16、32、64和 128 128 128。
这段意思是,FCOS虽然使用了FPN,但是对FPN如何使用进行了改进,与RetinaNet相比,作者的方案准确率不变,但参数量更少。
Anchor-based detectors assign different scale anchor boxes to different feature levels. Since anchor boxes and ground-boxes are associated by their IoU scores, this enables different FPN feature levels to handle different scale objects. However, this couples the sizes of anchor boxes and the target object sizes of each FPN level, which is problematic. The anchor box sizes should be data-specific, which might be changed from one dataset to another. The target object sizes of each FPN level should depend on the receptive field of the FPN level, which depends on the network architecture. FCOS removes the coupling as we only need focus on the target object sizes of each FPN level and need not design the anchor box sizes. Unlike anchor-based detectors, in FCOS, we directly limit the range of bounding box regression for each level. More specifically, we first compute the regression targets l ∗ , t ∗ , r ∗ l^∗, t^∗, r^∗ l∗,t∗,r∗ and b ∗ b^∗ b∗ for each location on all feature levels. Next, if a location at feature level i i i satisfies max ( l ∗ , t ∗ , r ∗ , b ∗ ) ≤ m i − 1 \max(l^∗, t^∗, r^∗, b^∗) \le m_{i−1} max(l∗,t∗,r∗,b∗)≤mi−1 or max ( l ∗ , t ∗ , r ∗ , b ∗ ) ≥ m i \max(l^∗, t^∗, r^∗, b^∗) \ge m_{i} max(l∗,t∗,r∗,b∗)≥mi, it is set as a negative sample and thus not required to regress a bounding box anymore. Here m i m_i mi is the maximum distance that feature level i i i needs to regress. In this work, m 2 , m 3 , m 4 , m 5 , m 6 m_2, m_3, m_4, m_5, m_6 m2,m3,m4,m5,m6 and m 7 m_7 m7 are set as 0 , 64 , 128 , 256 , 512 0, 64, 128, 256, 512 0,64,128,256,512 and ∞ \infty ∞, respectively. We argue that bounding the maximum distance is a better way to determine the range of target objects for each feature level because this makes sure that the complete objects are always in the receptive field of each feature level. Moreover, since objects of different sizes are assigned to different feature levels and overlapping mostly happens between objects with considerably different sizes, the aforementioned ambiguity can be largely alleviated. If a location, even with multi-level prediction used, is still assigned to more than one ground-truth boxes, we simply choose the ground-truth box with minimal area as its target. As shown in our experiments, with the multi-level prediction, both anchor-free and anchor-based detectors can achieve the same level performance.
基于Anchor的检测器将不同尺度的Anchor boxes分配给不同的特征级别。由于Anchor boxes和GT Box是由它们的IoU分数联系起来的,这使得不同的FPN特征级别可以处理不同尺度的物体。然而,这将Anchor boxes的尺寸和每个FPN级别的目标对象尺寸联系起来,这是有问题的。Anchor boxes的尺寸应该是特定的数据,这可能会从一个数据集改变到另一个数据集。每个FPN层的目标对象大小应取决于FPN层的感受野,而感受野又取决于网络结构。FCOS消除了这种耦合,因为我们只需要关注每个FPN层的目标对象大小,而不需要设计Anchor boxes的大小。与基于Anchor的检测器不同,在FCOS中,我们直接限制每个级别的Bounding box回归的范围。更具体地说,我们首先计算所有特征层上每个位置的回归目标 l ∗ 、 t ∗ 、 r ∗ l^∗、t^∗、r^∗ l∗、t∗、r∗和 b ∗ b^∗ b∗。接下来,如果一个位置在特征层 i i i 满足 max ( l ∗ , t ∗ , r ∗ , b ∗ ) ≤ m i − 1 \max(l^∗, t^∗, r^∗, b^∗) \le m_{i-1} max(l∗,t∗,r∗,b∗)≤mi−1 或 max ( l ∗ , t ∗ , r ∗ , b ∗ ) ≥ m i \max(l^∗, t^∗, r^∗, b^∗) \ge m_{i} max(l∗,t∗,r∗,b∗)≥mi,它就被设定为负样本,从而不再需要回归一个边界框。这里 m i m_i mi 是特征层 i i i 需要回归的最大距离。在这项工作中, m 2 、 m 3 、 m 4 、 m 5 、 m 6 m_2、m_3、m_4、m_5、m_6 m2、m3、m4、m5、m6 和 m 7 m_7 m7 分别被设定为 0 、 64 、 128 、 256 、 512 0、64、128、256、512 0、64、128、256、512 和 ∞ \infty ∞。我们认为,限定最大距离是确定每个特征层的目标对象范围的更好方法,因为这可以确保完整的对象总是在每个特征层的感受野中。此外,由于不同大小的物体被分配到不同的特征层,而重叠大多发生在大小相差很大的物体之间,因此上述的模糊性可以在很大程度上得到缓解。如果一个位置,即使使用了多级预测,仍然被分配到一个以上的GT Box,我们只需选择面积最小的GT Box作为其目标。正如我们的实验所显示的,在多级预测的情况下,Anchor-free和Anchor-based的检测器都可以达到相同的性能水平。
这段的意思是, 使用FPN的Anchor-based目标检测网络生成的Anchor boxes很可能和对应的FPN层级的感受野不匹配,这样就会出问题. 为了解决这个问题, 基于Anchor-freed的FCOS网络会对样本进行筛选, 满足该FPN层级感受野的样本才会被视作正样本.
Finally, following [7], [9], we share the heads between different feature levels, not only making the detector parameter-efficient but also improving the detection performance. However, we observe that different feature levels are required to regress different size range (e.g., the size range is [ 0 , 64 ] [0, 64] [0,64] for P 3 P_3 P3 and [ 64 , 128 ] [64, 128] [64,128] for P 4 P_4 P4), and therefore it may not be the optimal design to make use of identical heads for different feature levels. In our preliminary version [43], this issue is addressed by multiplying a learnable scalar to the convolutional layer’s outputs. In this version, since the regression targets are scaled down by the stride of FPN feature levels, as shown in Eq. (1), the scalars become less important. However, we still keep them for compatibility.
this issue is addressed by multiplying a learnable scalar to the convolutional layer’s outputs. In this version, since the regression targets are scaled down by the stride of FPN feature levels, as shown in Eq. (1), the scalars become less important. However, we still keep them for compatibility.
最后,继[7]、[9]之后,我们在不同的特征级别之间共享头(Head),不仅使检测器的参数有效,而且提高了检测性能。然而,我们观察到,不同的特征级别需要回归不同的尺寸范围(例如, P 3 P_3 P3 的尺寸范围是 [ 0 , 64 ] [0, 64] [0,64], P 4 P_4 P4 的尺寸范围是 [ 64 , 128 ] [64, 128] [64,128]),因此,对不同的特征级别利用相同的Head可能不是最佳设计(在YOLOX中就使用了解耦的Head来改善AP)。在我们的初步版本[43]中,这个问题是通过在卷积层的输出中乘以一个可学习的标量来解决。在这个版本中,由于回归目标是由FPN特征层的跨度缩小的,如公式(1)所示,标量变得不那么重要。然而,为了兼容,我们仍然保留它们。
[7]: Focal Loss
[9]: FPN(Feature pyramid networks for object detection)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。