文章目录[隐藏]
(一) Title
论文地址:https://arxiv.org/abs/2111.10780
项目地址:https://github.com/lzh420202/FCOSR
(二) Summary
研究背景:
现有的基于anchor-based方法的旋转框检测算法需要手动设置预设框,引入了额外的超参数和计算。基于anchor-free的方法通常具有复杂的体系结构,不容易部署。
本文方法:
本文提出了一个一阶段的带有角度旋转的检测框架FCOSR,一看就是基于FCOS架构,并且将二维高斯分布也引入进来了。这个工作主要关注的是在训练过程中的label assignment策略,包括:
- 采用ellipse center sampling方法来给旋转框(oriented bounding boxes)定义一个合适的采样区间
- 对于overlapping的目标区域,通过fuzzy sample assignment提供了一个更加合理的标签。
- 通过multi-level sampling模块解决了不充分采样的问题。
实验效果:
算法在DOTA1.0,DOTA1.5以及HRSC2016数据集上的map分别为79.27,75.41以及90.15。FCOSR在one-stage中优于其他的目标检测器。
将一个轻量网络转换成TensorRT格式,在Jetson Xavier NX上进行部署,在DOTAv1上10.68FPS,实现了73.93的mAP.
(三) Method
网络基于FCOS架构,直接预测中心点,长宽以及旋转角度。通过label assignment module定义特征图的输出,去掉了centerness分支。
3.1 网络输出
输出两个分支,分类分支是一个
C
C
C维的类别向量,回归分支包括一个5维的向量,这个5维向量的符号表示为
(
R
e
g
x
,
R
e
g
y
,
R
e
g
w
,
R
e
g
h
,
R
e
g
θ
)
(Reg_x,Reg_y,Reg_w,Reg_h,Reg_\theta)
(Regx,Regy,Regw,Regh,Regθ),需要经过变换得到最终边界框
(
o
f
f
s
e
t
x
,
o
f
f
s
e
t
y
,
w
,
h
,
a
n
g
l
e
)
(offset_x,offset_y,w,h,angle)
(offsetx,offsety,w,h,angle),并且对边界框的要求是偏移量可以是负数,宽和高必须是正数,角度范围必须限制在0-90。将回归分支输出变换到最终边界框的计算公式为:
offset
x
y
=
Reg
x
y
⋅
k
⋅
s
w
h
=
(
Elu
(
Reg
w
h
⋅
k
)
+
1
)
⋅
s
θ
=
Mod
(
Reg
θ
,
π
/
2
)
\begin{array}{l} \text { offset }_{x y}=\operatorname{Reg}_{x y} \cdot k \cdot s \\ w h=\left(\operatorname{Elu}\left(\operatorname{Reg}_{w h} \cdot k\right)+1\right) \cdot s \\ \theta=\operatorname{Mod}\left(\operatorname{Reg}_{\theta}, \pi / 2\right) \end{array}
offset xy=Regxy⋅k⋅swh=(Elu(Regwh⋅k)+1)⋅sθ=Mod(Regθ,π/2)
3.2 椭圆中心采样
Center Sampling是将采样点集中到目标中心附近,有助于减少低质量预测,提高模型性能。在FCOS以及YOLOX中都采用该策略提升了精度。然而将水平中心采样策略直接迁移到旋转框中存在着两个问题:
- 水平框的采样区域通常为
3
×
3
3 \times 3
3×3或者
5
×
5
5 \times 5
5×5的正方形,旋转框的角度会影响采样范围
- 对于长宽比较大的边界框来说,短边限制了中心采样的范围,这里我觉得是中心采样范围过大,会超出边界框。
为了解决上面两个问题,本文提出了基于二维高斯分布的椭圆中心采样方法,基于旋转框参数定义一个二维的高斯分布:
Σ
=
R
θ
⋅
Σ
0
⋅
R
θ
I
μ
=
(
c
x
,
c
y
)
R
θ
=
[
cos
θ
−
sin
θ
sin
θ
cos
θ
]
,
Σ
0
=
1
12
[
w
2
0
0
h
2
]
\begin{aligned} \Sigma &=R_{\theta} \cdot \Sigma_{0} \cdot R_{\theta}^{I} \\ \mu &=(c x, c y) \\ R_{\theta} &=\left[\begin{array}{cc} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{array}\right], \Sigma_{0}=\frac{1}{12}\left[\begin{array}{cc} w^{2} & 0 \\ 0 & h^{2} \end{array}\right] \end{aligned}
ΣμRθ=Rθ⋅Σ0⋅RθI=(cx,cy)=[cosθsinθ−sinθcosθ],Σ0=121[w200h2]
其中Σ
\Sigma
Σ是协方差矩阵,当角度为0时
Σ
0
\Sigma_0
Σ0也是协方差矩阵,
μ
\mu
μ是均值,
R
θ
R_\theta
Rθ是旋转变换矩阵。正常情况下的二维高斯分布概率密度函数为:
f
(
X
)
=
1
2
π
∣
Σ
∣
1
/
2
exp
(
−
1
2
(
X
−
μ
)
T
Σ
−
1
(
X
−
μ
)
)
f(X)=\frac{1}{2 \pi|\Sigma|^{1 / 2}} \exp \left(-\frac{1}{2}(X-\mu)^{T} \Sigma^{-1}(X-\mu)\right)
f(X)=2π∣Σ∣1/21exp(−21(X−μ)TΣ−1(X−μ))
X
X
X表示二维坐标,将归一化项去掉得到:
g
(
X
)
=
exp
(
−
1
2
(
X
−
μ
)
T
Σ
−
1
(
X
−
μ
)
)
g(X)=\exp \left(-\frac{1}{2}(X-\mu)^{T} \Sigma^{-1}(X-\mu)\right)
g(X)=exp(−21(X−μ)TΣ−1(X−μ))
椭圆的2D高斯分布表示为g
(
X
)
=
C
g(X)=C
g(X)=C进行表示,当
C
=
C
0
=
exp
(
−
1.5
)
C=C_{0}=\exp (-1.5)
C=C0=exp(−1.5)时,椭圆的等高线刚刚好能够切到旋转框上,也就是如下图中
(
c
)
(c)
(c)所示。随着
C
C
C的减小,椭圆曲线的范围将扩大。
当C
C
C的范围在
[
C
0
,
1
]
[C_0,1]
[C0,1]直接时,就是一个缩放的椭圆核,这个椭圆核不超过边界框的范围
C
=
1
C=1
C=1时就是中心点。此时不再采用图
(
a
)
(a)
(a)中的方式来确定正样本,而是通过判断点是否在椭圆内,在椭圆内的话就是正样本,不在椭圆内的话就是负样本。
接着解决第二个问题,长宽比较大时,二维高斯核的长边部分会距离图像中心很远,此时样本的可信度也比较小,通过调整长边高斯核方差来实现椭圆在长边方向上的收缩,也就是如上图中的(
d
)
(d)
(d)所示。这里通过调整协方差矩阵来实现对长边的收缩:
Σ
0
=
min
(
w
,
h
)
12
[
w
0
0
h
]
\Sigma_{0}=\frac{\min (w, h)}{12}\left[\begin{array}{ll} w & 0 \\ 0 & h \end{array}\right]
Σ0=12min(w,h)[w00h]
也就是将椭圆的长轴收缩成w
h
\sqrt{wh}
wh
,短边保持不变。博主认为这个椭圆中心采样方法就是TTFNet中的一种特例。
3.3 Fuzzy sample label assignment
FCOS中将不同尺度的目标分配给具有不同步长的特征图来减少ambiguous样本。对于尺度相近的目标,FCOS将ambiguous样本标签设置成smaller targets,也就是较小的目标(这里的大小说的是面积),但是这种方式很难处理航空场景。这里将二维高斯分布的值看成是采样点到目标中心的距离度量,中心距离的度量通过下式表示:
J
(
X
)
=
w
h
⋅
f
(
X
)
J(X)=\sqrt{w h} \cdot f(X)
J(X)=wh
⋅f(X)
对于任何一个采样点,计算每一个采样点的J
(
X
)
J(X)
J(X)值,这个值越大表示越接近目标。按照当前的分配方式可以表述成:
3.4 多阶段采样
对于大长宽比目标,按照上述方式,采样数量主要受短边的影响,当feature map的步长比采样区域更大时(受短边影响,虽然边界框很大,但是采样区域面积比较小,当比特征图的步长还小时就没法分配到特征点来回归边界框了),为了解决这个问题,本文通过比较短边和步长来决定是否在低层特征图中分配标签,满足下面两个条件的话就分配:
- 目标的短边同feature map步长的比值小于2,也就是在特征图上不超过4个点来回归目标。
- 旋转框最小的外界轴对齐矩形的长边超过了特征图的范围。
Multi-level sampling strategy允许我们将一些无法有效采样的目标添加到底层特征图上。在底层特征图上进行密集采样。
这里没说明是怎么将分配到下面的特征图上的,只说了什么情况下分配给下面的特征图。
3.5 损失函数
在分类损失中使用QFL,同时引入IoU来关联类别和边界框的质量:
Q
F
L
(
σ
)
=
−
∣
y
−
σ
∣
β
(
(
1
−
y
)
log
(
1
−
σ
)
+
y
log
(
σ
)
)
Q F L(\sigma)=-|y-\sigma|^{\beta}((1-y) \log (1-\sigma)+y \log (\sigma))
QFL(σ)=−∣y−σ∣β((1−y)log(1−σ)+ylog(σ))
上式中y
y
y表示IoU
回归损失使用ProbIoU loss。总损失表示为:
L
o
s
s
=
1
N
p
o
s
∑
z
Q
F
L
+
1
∑
z
1
{
c
z
∗
>
0
}
I
o
U
⋅
∑
z
1
{
c
z
∗
>
0
}
I
o
U
⋅
Loss
P
r
o
b
l
o
U
\begin{aligned} L o s s &=\frac{1}{N_{p o s}} \sum_{z} Q F L+\\ & \frac{1}{\sum_{z} \mathbf{1}_{\left\{c_{z}^*>0\right\}} I o U} \cdot \sum_{z} \mathbf{1}_{\left\{c_{z}^*>0\right\}} I o U \cdot \operatorname{Loss}_{P r o b l o U} \end{aligned}
Loss=Npos1z∑QFL+∑z1{cz∗>0}IoU1⋅z∑1{cz∗>0}IoU⋅LossProbloU
其中N
p
o
s
N_{pos}
Npos表示正样本数量,
1
{
c
z
∗
>
0
}
\mathbf{1}_{\left\{c_{z}^*>0\right\}}
1{cz∗>0}表示示性函数,博主觉得这里指的应该是在椭圆采样区域内的为1,不在这个区域的为0.
(四) Experiments
4.1 实验设置
- 数据集采用DOTA1.0,DOTA1.5以及HRSC2016,使用随机翻转+随机旋转增强数据。
- 使用ResNext50+FPN作为骨干,在DOTA上训练36个epoch,在HRSC2016上训练40k迭代。DOTA上使用SGD学习器,初始学习率0.01(感觉挺大的啊),学习率在24和33个epoch降低10倍。HRSC2016上使用SGD,学习率0.001在30K和36K学习率下降10倍。动量为0.9,权重衰减为0.0001.
- 提出使用两步旋转,第一步等概率旋转0,90,180,270.第2步以50%的概率旋转30和60度。这种两步旋转相比于随机旋转更好嘛?
4.2 消融实验
4.3 精度和速度
4.5 公开数据集上的对比实验
(五) Conclusions
本文将二维高斯分布引入到FCOS中,主要工作包括 ellipse center sampling, fuzzy sample label assignment, and multi-level sampling。椭圆中心采样为旋转对象提供了更合适的采样区域。模糊样本标签分配方法更合理地划分了重叠目标的采样区域。多层次抽样方法解决了大长宽比目标抽样不足的问题。
(六) Notes
8.1 主流的旋转框目标检测算法
带锚框的方法
ROI transformer:看着像Transformer,但是并不是基于Transformer架构的方法,主要是通过将ROI输出的水平proposals转变成OBB(旋转边界框),提取旋转proposal的特征用于后续的分类和回归。
ReDet中引入了一个rotation invariant卷积(e2cnn)到整个模型中,并且通过RiROI alignment提取了rotation invariant features
Oriented R-CNN中将ROI Transformer中的RROI learning 模块用一个轻量化,简单的oriented region proposal network(orientation RPN)进行替换
R3Det中通过Feature innovation module(FRM)模块水平的anchor进行微调得到旋转anchor
S2ANet由feature Alignment module(FAM)模块以及Oriented detection module(ODM)模块组成。FAM用于生成高质量的旋转anchor。ODM采用active filters来产生方向敏感和方向不变的特征,缓解分类分数同localization精度不一致的问题。
CSL将角度预测转换成分类任务,解决了discontinuous rotation angles的问题。
DCL中在CSL的基础上采用了密集编码来提高训练速度,同时采用角度距离和长宽比加权来改善性能。
无锚框方法
IENet采用了一个带有注意力机制的branch interactive module,能够融合分类和回归分支的特征。
GWD,KLD,ProbIoU使用两个二维高斯分布之间的距离度量来表示损失,给基于anchor-free的方式提供了一种新的回归损失方案。这个需要后面看看
PIoU定义了用于旋转框的能够梯度反向传播的损失函数
BBAVectors和PolarDet分别使用bbav vector以及polar coordinates定义旋转框
CenterRot使用可变形卷积来融合多尺度特征。
AROA采用了注意力机制。
版权声明:本文为CSDN博主「不知道叫啥好一点」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/A_A666/article/details/121564556
暂无评论