目录
前言
OSFormer是华科发表在ECCV 2022的一篇伪装实例分割的文章,提出了一种新的位置感知的一段式(one-stage)Transformer框架,采用了一种高效的位置感知Transformer来捕获全局特征,并动态回归伪装实例的位置和主干。OSFormer还进一步设计了多尺度特征融合,来整合从粗到细的多尺度特征,从而突出伪装实例的边缘,产生全局特征。
大量实验结果表明,OSFormer效果优于其他一直模型。此外,OSFormer只需要大约3000张图像进行训练,并且能快速收敛。因此,可以很容易的扩展到其他训练样本较小的下游视觉任务。
1. 模型的特点
OSFormer主要有以下三个特点:
- 基于Transformer的一段式框架。对比二段式的Fast-RCNN(先寻找前景及调整边界框,再进行分类),OSFormer可以直接生成分类结果。
- 位置感知Transformer(LST),可以动态获取不同位置的实例线索,使得模型在有限数据集的情况下(大约3000张图像),快速收敛。
- 由粗到细的特征融合(CFF)。融合主干网络和LST的多尺度低级和高级特征来获得高分辨率的掩码特征。还嵌入反向额边缘注意力模块(REA)来突出伪装实例的边缘信息。
2. 模型结构
OSFormer主要包含四个基本部分:
- 用于提取特征的CNN backbone
- 位置感知Transformer(LST),利用全局特征和位置引导Query来生成实例感知向量
- 由粗到细的特征融合(CFF),融合多尺度高层和低层特征,产生高分辨率的掩码特征
- 用于预测最终分割掩码的动态伪装实例归一化(DCIN)
2.1 CNN backbone
给定一个输入图像 I ∈ R H × W × 3 I \in \mathbb R^{H \times W \times 3} I∈RH×W×3,使用ResNet-50作为backbone提取特征。为了减少计算量,将最后三个特征图( C 3 , C 4 , C 5 C_3,C_4,C_5 C3,C4,C5)直接展平并相互连接成具有256个通道的序列 X m X_m Xm,将 X m X_m Xm作为LST的输入。
将 C 2 C_2 C2特征图输入到CFF模块中,作为底层特征以捕获更多伪装实例线索。
2.2 位置感知Transformer(LST)
Transformer可以通过自注意力模块很好地提取全局特征,但是它需要大量的训练样本和计算成本支持。由于伪装实例分割的数据集有限,所以要在保证性能的同时,使模型更快地收敛。
- LST Encoder
与仅具有单一尺度低分辨率的特征输入的DETR不同,LST encoder的输入是多尺度特征
X
m
X_m
Xm。
与Deformable DETR不同,在可变形自注意力层之后,为了更好的捕获局部信息并增强相邻token之间的相关性,将卷积操作引入前馈网络,称为混合前馈网络(BC-FFN)。
首先,根据
C
i
C_i
Ci的形状将特征向量恢复到空间维度。然后,使用
3
×
3
3 \times 3
3×3卷积来学习归纳偏置。最后,用组归一化(GN)和GELU激活函数来形成前馈网络。再经过一个
3
×
3
3 \times 3
3×3卷积,将特征图展平为序列。
与SegFormer中的mix-FFN相比,BC-FFN不包含MLP操作和残差连接。
与CvT在每个stage开始时都加一个卷积token向量不同。OSFormer只在BC-FFN中引入两个卷积层。
假设输入特征表示为
X
b
X_b
Xb,BC-FFN的数学表示如下:
X
b
′
=
C
o
n
v
3
(
G
E
L
U
(
G
N
(
C
o
n
v
3
(
X
b
)
)
)
)
X_b^{'}=Conv^{3}(GELU(GN(Conv^{3}(X_b))))
Xb′=Conv3(GELU(GN(Conv3(Xb))))
其中,
C
o
n
v
3
Conv^{3}
Conv3为
3
×
3
3 \times 3
3×3卷积操作。
整个LST encoder的数学表示如下:
X
e
=
B
C
−
F
F
N
(
L
N
(
(
X
m
+
P
m
)
+
M
D
A
t
t
n
(
X
m
+
P
m
)
)
)
X_e = BC-FFN(LN((X_m+P_m)+MDAttn(X_m+P_m)))
Xe=BC−FFN(LN((Xm+Pm)+MDAttn(Xm+Pm)))
其中,
P
m
P_m
Pm表示位置编码,LN表示层归一化,MDAttn表示多头可变形自注意力。
- 位置引导 Queries
Object Queries在Transformer结构中发挥关键作用,它可以作为Decoder的输入,通过Decoder得到输出向量。但是,DETR收敛缓慢的原因之一就是Object Queries 全部初始化为零。因此,OSFormer提出了位置引导Queries。
受到SOLO的启发,OSFormer首先将恢复的特征图 T3-T5 重新调整大小为 S i × S i × D , i = 1 , 2 , 3 S_i \times S_i \times D,i=1,2,3 Si×Si×D,i=1,2,3。( T 3 ∈ R H 8 × W 8 × D , T 4 ∈ R H 16 × W 16 × D , T 5 ∈ R H 32 × W 32 × D T3 \in \mathbb{R}^{\frac{H}{8} \times \frac{W}{8} \times D},T4 \in \mathbb{R}^{\frac{H}{16} \times \frac{W}{16} \times D},T5 \in \mathbb{R}^{\frac{H}{32} \times \frac{W}{32} \times D} T3∈R8H×8W×D,T4∈R16H×16W×D,T5∈R32H×32W×D)然后,将调整大小后的特征图划分为 S i × S i S_i \times S_i Si×Si的网格。并将其展平以产生位置引导Query, Q ∈ R L × D , L = ∑ i = 1 3 S i 2 Q \in \mathbb{R}^{L \times D},L=\sum_{i=1}^{3}S_i^{2} Q∈RL×D,L=∑i=13Si2。
这样位置引导Query可以利用不同位置的可学习局部特征来优化初始化,并有效聚合伪装区域中的特征。与DETR中的零初始化,或者Deformable DETR中的随机初始化相比,这种Query生成策略可以提高Transformer Decoder中Query迭代的效率,加快训练的收敛速度。
- LST Decoder
LST Decoder将LST encoder产生的全局特征与位置引导Query进行交互,这对产生实例感知特征向量至关重要。
将空间位置编码
P
s
P_s
Ps和
P
m
P_m
Pm分别添加到位置引导查询
Q
L
Q_L
QL和encoder输出
X
e
X_e
Xe中。然后用交叉注意力对二者融合。这里与一般的交叉注意力不同。因为所提出的Query中已经包含可学习的全局特征,这里使用的是没有自注意力的交叉注意力。
与LST encoder相似,在可变形注意操作之后也使用了BC-FFN。假设位置引导Quary为
Q
L
Q_L
QL,LST decoder的流程总结为:
X
d
=
B
C
−
F
F
N
(
L
N
(
(
Q
L
+
P
s
)
+
M
D
C
A
t
t
n
(
(
Q
L
+
P
s
)
,
(
X
e
+
P
m
)
)
)
)
X_d=BC-FFN(LN((Q_L+P_s)+MDCAttn((Q_L+P_s),(X_e+P_m))))
Xd=BC−FFN(LN((QL+Ps)+MDCAttn((QL+Ps),(Xe+Pm))))
其中,
P
s
P_s
Ps表示基于特征网格的位置编码。MDCAttn表示多头可变形交叉注意力操作。
X
d
X_d
Xd是实例感知表示的输出向量。最后,将
X
d
X_d
Xd送到DPIN模块中以预测掩码。
2.3 粗细特征融合(CFF)
如图所示,将多级特征C2、T3、T4和T5作为级联融合的输入。从输入比例
1
32
\frac{1}{32}
321的T5开始,进行
3
×
3
3 \times 3
3×3卷积、GN和2倍双线性插值上采样。然后,加入更高分辨率的特征(
1
16
\frac{1}{16}
161比例的T4)。以此类推,最后将特征图C2与
1
4
\frac{1}{4}
41比例特征图进行融合,再将融合后的特征通过
1
×
1
1 \times 1
1×1卷积、GN和RELU运算生成用于分割的特征
F
F
F。注意:每个输入特征在第一次卷积后将通道数从256减少到128,然后在最终输出时增加到256个通道。
考虑到伪装实例的边缘特征更难捕捉,设计了一个包含在CFF中的反向边缘注意(REA)模块,用于在迭代过程中监督边缘特征。受卷积块注意力模块启发,输入特征图同时经过平均池化和最大池化处理,然后将二者拼接起来,经过
7
×
7
7 \times 7
7×7卷积和Sigmoid激活,这样特征图中的数值变换到了o与1之间。反转注意力权重,将其与融合特征
F
f
F_f
Ff进行元素乘法。最后经过
3
×
3
3 \times 3
3×3卷积来预测边缘特征。
假设输入特征为
T
i
T_i
Ti,每个REA模块可以表示为下式:
F
e
=
C
o
n
v
3
(
F
f
⊗
(
1
−
S
i
g
m
o
i
d
(
C
o
n
v
7
(
[
A
v
g
P
o
o
l
(
T
i
)
;
M
a
x
P
o
o
l
(
T
i
)
]
)
)
)
)
F_e=Conv^{3}(F_f \otimes (1-Sigmoid(Conv^{7}([AvgPool(T_i);MaxPool(T_i)]))))
Fe=Conv3(Ff⊗(1−Sigmoid(Conv7([AvgPool(Ti);MaxPool(Ti)]))))
其中,
C
o
n
v
7
Conv^{7}
Conv7代表
7
×
7
7 \times 7
7×7卷积,“;”代表在通道维度上进行拼接。
总之,CFF为DCIN提供了一个融合掩码特征F,以最终预测每个伪装实例的掩码。
2.4 动态伪装实例归一化(DCIN)
借鉴风格迁移模型(如AdaptIS等),作者采用动态网络的思路,将动态伪装实例归一化引入到最终掩码的预测中。结构如下图。
DCIN的输入是来自LST decoder的输出
X
d
∈
R
S
2
×
D
X_d \in \mathbb{R}^{S^2 \times D}
Xd∈RS2×D,将其通过全连接层训练得到位置标签。同时,将
X
d
X_d
Xd通过多层感知机(MLP)来获得维度为256的实例感知参数。在训练阶段,通过GT来分配正、负位置标签。使用正位置标签的实例感知参数来生成分割掩码。
在测试阶段,在suppress抑制中使用位置标签的threshold > 0.5来过滤小的参数。随后,将过滤后的位置感知参数通过两个线性层获得放射权重
w
∈
R
N
×
D
w \in \mathbb{R}^{N \times D}
w∈RN×D和偏置
β
∈
R
N
×
1
\beta \in \mathbb{R}^{N \times 1}
β∈RN×1。
最终,
w
w
w和
β
\beta
β与融合掩码特征
F
F
F共同用来预测伪装实例。数学表示为:
P
=
U
×
4
(
w
F
+
β
)
P=U_{\times 4}(wF+\beta)
P=U×4(wF+β)
其中,
P
∈
R
H
×
W
×
N
P \in \mathbb{R}^{H \times W \times N}
P∈RH×W×N是预测掩码。
N
N
N代表预测实例的数量。
U
×
4
U_{\times 4}
U×4是4倍上采样。最后,使用SOLOv2中提出的NMS矩阵得到最终实例。
2.5 损失函数
训练过程中总体损失函数可以表示为下式:
L
t
o
t
a
l
=
λ
e
d
g
e
L
e
d
g
e
+
λ
l
o
c
L
l
o
c
+
λ
m
a
s
k
L
m
a
s
k
L_{total}=\lambda_{edge}L_{edge}+\lambda_{loc}L_{loc}+\lambda_{mask}L_{mask}
Ltotal=λedgeLedge+λlocLloc+λmaskLmask
其中,
L
e
d
g
e
L_{edge}
Ledge代表边缘损失,用以监督CFF中不同层级特征图的边缘。边缘损失可以定义为
L
e
d
g
e
=
∑
j
=
1
J
L
d
i
c
e
(
j
)
L_{edge}=\sum_{j=1}^{J}L_{dice}^{(j)}
Ledge=∑j=1JLdice(j),
J
J
J是CFF中监督边缘特征的总层数。
λ
\lambda
λ是边缘损失的权重,默认设置为1。
由于伪装实例分割任务中类别个数是未知的,因此我们使用每个位置(
L
l
o
c
L_{loc}
Lloc)存在伪装目标的置信度,而不是通常实例分割中的分类置信度。为了实现分割任务,
L
l
o
c
L_{loc}
Lloc是通过Focal loss(2017年CCF-A论文)进行计算的,
L
m
a
s
k
L_{mask}
Lmask是通过Dice loss进行计算的。为了对总损失函数
L
t
o
t
a
l
L_{total}
Ltotal平衡,
λ
l
o
c
\lambda_{loc}
λloc默认设置为1,
λ
m
a
s
k
\lambda_{mask}
λmask默认设置为3。
3. 可视化分析
对CFF模块中每个尺度的输入特征图和最终的CFF输出特征
F
F
F进行了可视化。
图(a)是输入图像重叠真实标签;图(b)到(e)是输入到CFF中的CNN backbone和LST encoder产生的特征图。图(f)是CFF的最终掩码特征输出
F
F
F。
将OSFormer与Mask R-CNN和SOLOv2进行定性比较,如下图。从第一行可以看出,OSFormer可以在多个实例的情况下轻松区分伪装。从第二行可以看出,OSFormer在捕获细长边界方面表现出色,这归因于REA反向边缘注意力模块对边缘特征的增强。