FCOS
参考1 参考2 参考3
Introduction:
以逐像素预测的方式解决目标检测问题,类似于语义分割。
- 检测器实现了proposal free和anchor free,显著的减少了设计参数的数目。设计参数通常需要启发式调整,并且设计许多技巧。另外,通过消除锚框,新探测器完全避免了复杂的IOU计算以及训练期间锚框和真实边框之间的匹配,并将总训练内存占用空间减少了2倍左右。
- FCOS可以作为二阶检测器的区域建议网络(RPN),其性能明显优于基于锚点的RPN算法。
- FCOS可以经过最小的修改便可扩展到其他的视觉任务,包括实例分割、关键点检测。
- FCOS算法凭借唯一的后处理:非极大值抑制(NMS),实现了优于以前基于锚框的one-stage检测算法的效果。
较多的重叠框造成了模糊,无法确定重叠区域应该对哪个框进行回归。本文证明通过FPN结构可以消除这种模糊。
FCOS利用GT边界框中的所有点来预测边界框,而低质量检测到的边界框被所提出的“center-ness”分支所抑制。因此,FCOS能够提供类似于锚定探测器的召回。
Method:
onestage检测 FCOS算法feature map中位置与原图对应的关系,如果feature map中位置为(x,y) ,映射到输入图像的位置是 大致为与(x,y)感受野中心的附近,其中 s 是步长stride。 位置回归公式:
基于anchor的方法是将输入图片的位置作为anchor的中心,并将边框进行回归,而FCOS直接对图片的每个位置进行目标边框的回归,直接在feature_map上的每一点进行回归操作。具体的实施思路如下所示:
- 首先,我们可以将feature_map中的每一个点(x,y)映射回原始的输入图片中;
- 然后,如果这个映射回原始输入的点在相应的GT的BB范围之内,而且类别标签对应,我们将其作为训练的正样本块。否则负样本,并且c=0(类标签为背景)
- 接着,我们回归的目标是4D的向量(l,t,r,b),即中心点做BB的left、top、right和bottom之间的距离,也就是中心点到四个边的距离。
如果一个位置属于多个边界框,则它被认为是一个模糊的示例。我们只需选择具有最小面积的边界框作为其回归目标。 FCOS可以利用尽可能多的前景样本(框内为前景,框外为背景)来训练回归变量。 输出
- 80D向量的分类标签 和 4D向量t=(l、t、r、b)边界框坐标。
- 遵循Focal Loss for Dense Object Detection,本文的类别训练并不是基于多任务训练,而是训练C个binary(二元) 分类器
- 我们分别在backbone的feature map后分别添加四个卷积层,用于分类和回归分支。
- 通常,回归目标是positive,本文应用exp(x)在回归分支的顶部将任意实数映射到(0,OO)。
损失函数基于Focal Loss 与anchor-based算法的相似之处是FCOS算法训练的目标同样包括两个部分:位置和类别。
L
(
{
p
x
,
y
}
,
{
t
x
,
y
}
)
=
1
N
?pos?
∑
x
,
y
L
?cls?
(
p
x
,
y
,
c
x
,
y
?
)
+
λ
N
?pos?
∑
x
,
y
1
{
c
x
,
y
>
0
}
L
reg
?
(
t
x
,
y
,
t
x
,
y
?
)
\begin{aligned} L\left(\left\{\boldsymbol{p}_{x, y}\right\},\left\{\boldsymbol{t}_{x, y}\right\}\right) &=\frac{1}{N_{\text { pos }}} \sum_{x, y} L_{\text { cls }}\left(\boldsymbol{p}_{x, y}, c_{x, y}^{*}\right) \\ &+\frac{\lambda}{N_{\text { pos }}} \sum_{x, y} \mathbb{1}_{\left\{c_{x, y}>0\right\}} L_{\operatorname{reg}}\left(\boldsymbol{t}_{x, y}, \boldsymbol{t}_{x, y}^{*}\right) \end{aligned}
L({px,y?},{tx,y?})?=N?pos??1?x,y∑?L?cls??(px,y?,cx,y??)+N?pos??λ?x,y∑?1{cx,y?>0}?Lreg?(tx,y?,tx,y??)? 其中
L
c
l
s
L_{cls}
Lcls?是类别损失(是focal loss),
L
r
e
g
L_{reg}
Lreg?是回归的损失(是 IOU loss),
N
p
o
s
N_{pos}
Npos? 是正样本数量,
λ
λ
λ是1,这个总和计算在特征图
F
i
F_i
Fi?上的所有位置上进行的(
F
i
∈
R
H
×
W
×
C
F_i∈R^{H×W×C}
Fi?∈RH×W×C是主干CNN第i层的特征图),
1
(
c
x
,
y
?
>
0
)
{1}_{(c^*_{x, y}>0)}
1(cx,y??>0)? 表示类别>0为1,否则是0。
推断 把照片输入网络,获取p,当px,y>0.05的看作是正样本,并翻转位置回归公式来获取预测的BB。
基于FPN进行多层次预测 最佳召回率(best possible recall,BPR),这里BPR被定义为detector最多能recall的gt数除以所有gt的比率。在训练期间,如果gt被分配给至少一个样本(即FCOS中的一个位置或锚基检测器中的锚盒),则认为该box被召回。 CNN中经过加大的stride得到的feature map可能会产生较低的最可能召回率(BPR)。对于基于anchor的方法,可以通过调整IoU的阈值来补偿较大stride导致的较低召回率,对于FCOS来说,由于较大stride后的feature map上没有位置编码信息,因此,FCOS得到的BPR可能会更低,然而,通过FCN仍可以得到较满意的BPR。因此,BPR对于FCOS来说并不是一个问题。此外,通过much-level FPN预测,BPR可以得到进一步的提高可以达到RetinaNet最好的高度。
首先计算回归目标的l,t,r,b,如果满足max(l*,t*,r*,b*)>mi或者max(l*,t*,r*,b*)<mi-1,认定为负样本,不进行回归。mi是feature level需要回归的最大距离。m2,m3,m4,m5,m6,m7分别设置为0,64,128,256,512及
∞
\infty
∞。 将不同层的feature levels进行共享,不仅使参数有效,而且提高了检测性能。 观察到需要不同的feature level来回归不同的大小范围(例如,P3的大小范围为[0,64],P4的[64,128]),因此对不同的feature level使用相同的head是不合理的。因此,我们没有使用标准的exp(x),而是使用具有可训练标量si,基于exp(
s
i
x
s_ix
si?x) 来自动调整feature level
P
i
P_i
Pi?。
Center-ness 发现在远离中心点会产生低质量的预测框。提出一个策略来抑制这些低质量的框,而不引入超参数。 我们add a single-layer branch和分类分支并行, 给定一个位置的回归目标l?、t?、r?和b?,sqrt来减缓centerness的衰减。 center-ness的取值范围为0至1,因此使用binary 交叉熵损失(BCE)进行训练 在测试时,最终的分数(用于对检测到的边界框进行排名)是通过将预测的centerness乘以相应的分类分数classification score 来计算的。 center-ness可以降低远离物体中心的边界框的分数,这些低质量的边界框很有可能会被最终的非最大抑制(NMS)过程过滤掉。 另一种centerness的方案是仅使用gt边界框的中心部分作为正样本,代价是有一个额外的超参数。 红色、蓝色和其他颜色分别表示1、0和它们之间的值。当位置偏离物体的中心时,从1衰减到0。当测试时,网络预测的中心度乘以分类分数,因此可以降低由远离对象中心的位置预测的低质量边界框的权重
训练细节 ResNet-50,使用与RetinaNet[15]相同的超参数,随机梯度下降(SGD)训练90K迭代,学习率设为0.01。在迭代60K和80K时,学习率分别降低了10倍。 在ImageNet[4]上预先训练的权值来初始化backbone。 输入图像被调整为较短的边为800,较长的边小于或等于1333。
推断细节 直接使用RetinaNet相同的后处理超参数。我们使用与训练中相同大小的输入图像。
|