RIS 系列 MARIS: Referring Image Segmentation via Mutual-Aware Attention Features 论文阅读笔记
写在前面
马上一周又结束了,12月来了,不知道大家的论文成果咋样了乜?桀桀桀桀桀桀
这是一篇 Arivx 11月份的文章,应该是投的某个会议吧,建立在 SAM 模型的基础上。
- 论文地址:MARIS: Referring Image Segmentation via Mutual-Aware Attention Features
- 代码地址:出版后公开
- 预计投稿于:某个会议
- Ps:2023 年每周一篇博文阅读笔记,主页 更多干货,欢迎关注呀,期待 6 千粉丝有你的参与呦~
一、Abstract
首先指出指代图像分割 Referring image segmentation (RIS) 的定义,现有方法的缺陷:可能会分割出显著性的区域,而非正确的区域。本文提出 MARIS,基于 Segment Anything Model (SAM),引入一个交互感知的注意力来增强两个并行分支的跨模态融合。具体来说,这一机制由视觉引导的注意力和语言引导的注意力(老演员了,多次出现的名词)双向建模视觉和语言特征的关系。相应地设计了一个 Mask 解码器进行分割。提出一个多模态 query token 来整合语言信息,同时进行视觉信息的交互。在三个数据集上的效果很好。
二、引言
指出指代图像分割 Referring image segmentation (RIS) 的定义,应用。现有的方法存在一些限制:首先,当前的方法利用非双向注意力机制来融合不同模态的特征,其中仅考虑语言对视觉特征的引导,而忽视了视觉对语言的引导;现有的方法采用一个 mask 解码器来生成最终的 mask,其中用于生成 mask 的融合特征仍然包含了太多的视觉属性,在没有语言信息的引导下,mask 编码器往往会关注于那些显著性区域;现有的方法需要微调编码器以适应 RIS 数据集,减小了预训练在大规模数据集上的编码器的泛化能力。
本文提出利用交互感知的注意力机制,将 SAM 的知识迁移到 RIS 中。首先,引入交互感知注意力块 Mutual-Aware Attention block 双向建模视觉和语言特征的关系。Mutual-Aware Attention block 由两个并行分支组成:视觉引导的注意力和语言引导的注意力。
如图 1 所示,视觉引导的注意力赋值不同的权重给表达式中的每个单词,并生成语言感知的视觉特征。类似的,语言引导的注意力将探索图像区域和单词间的关联,并生成视觉感知的语言特征。将语言感知的视觉特征和视觉感知的语言特征作为交互感知的注意力特征。其次,设计了一个 Mask 解码器用于显式的语言引导。具体来说,引入一个多模态 query token 整合视觉和语言的属性。最后冻结 SAM 的图像编码器以保留其泛化能力。为了迁移 SAM 的知识到 RIS,引入一个特征增强模块整合全局和局部的视觉特征。
下面是一组比较图:
本文的工作是第一个迁移 SAM 到 RIS 的。本文贡献总结如下:
- 提出一个 RIS 方法,名为 MARIS。利用 SAM 和交互感知注意力机制双向建模视觉和语言特征的关系。
- 引入交互感知注意力 block,通过对每个句子的单词以及每个视觉特征的区域进行加权来生成语言感知的视觉特征和视觉感知的语言特征。
- 设计一个 Mask 解码器来利用显式地语言引导,得到与语言表达式一致的分割 Mask。此外,还引入了一个 query token 来整合视觉和语言属性。
- 提出的方法达到了 SOTA 的效果,且泛化能力强。
三、相关工作
Referring Image Segmentation
Referring image segmentation (RIS) 的定义。早期的方法直接拼接视觉和语言特征生成多模态特征,然后送入到全卷积网络生成 mask。之后是两阶段的方法。最近注意力机制的兴起,也使得在 RIS 上发光发热。随后就是 Transformer 的架构:VLT、CRIS、ReLA。然而这些方法未能生成和利用 mask 解码器中的视觉感知的语言特征。
Attention Mechanism
注意力机制在很多多模态任务中采用,其中基于 Transformer 的解码器架构同样也用于融合视觉和语言特征。例如 BLIP-2、GLIP 等。本文则提出一种交互感知注意力机制生成语言感知的视觉特征和视觉感知的语言特征,其中后者用于指导前者在 Mask 解码器中生成精确的 mask。
Powerful Foundation Models in Computer Vision
在大规模数据集上训练的基础模型能够应用于多种下游任务,一些视觉 Transformer 能够应用在很多任务上,例如图像分类,语义/实例分割,目标检测等。其中的一些代表方法如 CLIP、本文要应用的 SAM 等。
四、方法
MARIS 的整体结构如上图所示。首先输入的图像和语言表达式通过预训练的图像编码器和文本编码器投影到视觉特征和语言特征空间,
F
v
1
F_{v1}
Fv1、
F
v
2
F_{v2}
Fv2、
F
v
2
F_{v2}
Fv2,
F
l
F_{l}
Fl。其中图像和文本编码器的参数都是冻结的。其次,本文设计了一种特征增强模块 Feature Enhancement (FE) module,用于融合不同层的特征,得到增强后的视觉特征
F
v
F_{v}
Fv。将
F
v
F_v
Fv 和
F
l
F_l
Fl 送入交互感知注意力块 Mutual-Aware Attention (MA) block 得到交互感知的注意力特征。最后引入一个多模态 query token 到 Mask Decoder (DE) 中利用语言的引导生成与语言一致的 mask。
图像编码器和文本编码器
图像编码器为 SAM,是一个基于 VIT 的 Backbone,输入图像尺寸 1024 × 1024 1024\times1024 1024×1024,产生分辨率为 64 × 64 64\times64 64×64 的视觉特征图。具体来说,SAM 使用一个窗口尺寸为 14 × 14 14\times14 14×14 的 VIT-H 以及四个扁平的全局注意力块。对于输入的图像来说,利用第 2~4 层全局注意力块输出的视觉特征 F v 1 ∈ R H × W × C F_{v1}\in\mathbb{R}^{H\times W\times C} Fv1∈RH×W×C、 F v 2 ∈ R H × W × C F_{v2}\in\mathbb{R}^{H\times W\times C} Fv2∈RH×W×C、 F v 3 ∈ R H × W × C F_{v3}\in\mathbb{R}^{H\times W\times C} Fv3∈RH×W×C, H H H、 W W W 分别为特征图的高和宽, C C C 是通道尺寸。
对于语言表达式,采用预训练的 BERT 作为文本编码器提取语言特征 F l ∈ R L t × C ′ F_{l}\in\mathbb{R}^{L_t\times C^{\prime}} Fl∈RLt×C′,其中 L t L_t Lt 表示语言特征的长度, C ′ C^{\prime} C′ 为语言特征的通道尺寸。注意,图像和文本编码器在训练过程中冻结。
特征增强
首先融合浅层和中层的视觉特征:
F
^
=
C
B
A
(
[
M
L
P
(
F
v
1
)
,
M
L
P
(
F
v
2
)
]
)
\hat{F}=\mathrm{CBA}([\mathrm{MLP}(F_{v_1}),\mathrm{MLP}(F_{v_2})])
F^=CBA([MLP(Fv1),MLP(Fv2)])其中
F
^
\hat{F}
F^ 表示早期增强的特征,
C
B
A
(
⋅
)
\mathrm{CBA}(\cdot)
CBA(⋅) 为一组序列操作,包含一个
3
×
3
3\times3
3×3 的卷积,一个 batch-norm 层,一个 GeLu 激活函数。
MLP
(
⋅
)
\text{MLP}(\cdot)
MLP(⋅) 表示多层感知机。
[
⋅
]
[\cdot]
[⋅] 为拼接操作。
接下来融合增强的特征
F
^
\hat F
F^ 和
F
v
3
F_{v3}
Fv3 得到最终的视觉特征:
F
v
=
C
B
A
(
[
M
L
P
(
F
^
)
,
M
L
P
(
F
v
3
)
]
)
F_{v}=\mathrm{CBA}([\mathrm{MLP}(\hat{F}),\mathrm{MLP}(F_{v_{3}})])
Fv=CBA([MLP(F^),MLP(Fv3)])其中
F
v
∈
R
H
×
W
×
C
F_{v}\in\mathbb{R}^{H\times W\times C}
Fv∈RH×W×C ,将其展平为一个 2D 向量
F
v
∈
R
L
v
×
C
F_{v}\in\mathbb{R}^{L_v\times C}
Fv∈RLv×C,其中
L
v
=
H
×
W
L_v=H\times W
Lv=H×W。
交互感知注意力
如上图所示,交互感知注意力块由两个平行分支组成。具体来说,第一个分支名为视觉引导的注意力,其用于衡量不同的单词对应视觉特征中每个像素的权重。相应的,第二个分支为语言引导的注意力,其用于衡量不同的图像对应句子中每个单词的权重。
首先,建模语言特征和视觉特征的关联:
Z
v
=
F
v
W
v
,
Z
l
=
F
l
W
l
A
=
S
o
f
t
m
a
x
(
Z
v
Z
l
⊤
+
M
)
\begin{aligned} &Z_{v}=F_{v}W_{v},Z_{l}=F_{l}W_{l}\\ &A=\mathrm{Softmax}(Z_{v}Z_{l}^{\top}+\mathcal{M}) \end{aligned}
Zv=FvWv,Zl=FlWlA=Softmax(ZvZl⊤+M)其中
A
∈
×
R
L
v
×
L
t
A\in \times{R}^{L_v\times L_t}
A∈×RLv×Lt 为注意力权重,
W
v
W_v
Wv 和
W
l
W_l
Wl 为科学系的权重,尺寸分别为
C
×
C
C\times C
C×C、
C
′
×
C
C^{\prime}\times C
C′×C,旨在将
F
v
F_v
Fv 和
F
l
F_l
Fl 转化为相同的特征维度。
M
\mathcal{M}
M 为注意力 mask,计算如下:
M
(
i
,
j
)
=
{
0
i
f
M
(
i
,
j
)
<
τ
−
∞
o
t
h
e
r
w
i
s
e
\left.\mathcal{M}(i,j)=\left\{\begin{matrix}0&\quad\mathrm{if}M(i,j)<\tau\\-\infty&\quad\mathrm{otherwise}\end{matrix}\right.\right.
M(i,j)={0−∞ifM(i,j)<τotherwise其中
M
=
1
/
(
1
+
e
−
Z
v
Z
l
T
)
M=1/(1+e^{-Z_vZ_l^{T}})
M=1/(1+e−ZvZlT),表示视觉和语言的相关性得分。
τ
\tau
τ 为阈值,其值将在补充材料中讨论。
之后,得到交互感知的注意力特征,包含语言感知的视觉特征
F
l
a
v
∈
×
R
L
v
×
C
F_\mathrm{lav}\in\times{R}^{L_v\times C}
Flav∈×RLv×C 和视觉感知的语言特征
F
v
a
l
∈
×
R
L
t
×
C
F_\mathrm{val}\in\times{R}^{L_t\times C}
Fval∈×RLt×C:
F
l
a
v
=
L
a
y
e
r
N
o
r
m
(
A
Z
l
+
Z
v
)
F
v
a
l
=
L
a
y
e
r
N
o
r
m
(
A
⊤
Z
v
+
Z
l
)
\begin{gathered} F_{\mathrm{lav}}= \mathrm{Layer}\mathrm{Norm}(AZ_l+Z_v)\\ F_{\mathrm{val}}= \mathrm{LayerNorm}(A^\top Z_v+Z_l) \end{gathered}
Flav=LayerNorm(AZl+Zv)Fval=LayerNorm(A⊤Zv+Zl)其中
LayerNorm
(
⋅
)
\text{LayerNorm}(\cdot)
LayerNorm(⋅) 为层归一化。
实验中采用两组交互感知的注意力块。
Mask 解码器
由于多模态特征中包含大量的视觉属性,于是 mask 解码器可能会在没有语言引导的情况下分割出主导视觉的显著性目标,于是基于 mask 分类框架建立一个 Mask 解码器。具体来说,采用单个多模态 query token,将其与视觉感知的语言特征求和作为解码器的输入。具体流程如下:
首先将语言感知的视觉特征
F
l
a
v
F_\mathrm{lav}
Flav 送入一个多头自注意力层提取上下文信息:
F
^
l
a
v
=
M
H
S
A
(
F
l
a
v
)
+
F
l
a
v
\hat{F}_{\mathrm{lav}}=\mathrm{MHSA}(F_{\mathrm{lav}})+F_{\mathrm{lav}}
F^lav=MHSA(Flav)+Flav其中
M
H
S
A
\mathrm{MHSA}
MHSA 表示多头自注意力层。
然后多头 query token F m ∈ × R 1 × C F_m\in\times{R}^{1\times C} Fm∈×R1×C 与 F v a l ∈ × R L t × C F_\mathrm{val}\in\times{R}^{L_t\times C} Fval∈×RLt×C 送入到多头自注意力层来聚合视觉感知的语言特征。
定义
F
c
:
=
[
F
m
,
F
v
a
l
]
F_c:=[F_m,F_{val}]
Fc:=[Fm,Fval],聚合过程如下:
F
^
c
:
=
[
F
^
m
,
F
^
v
a
l
]
=
M
H
S
A
(
F
c
)
+
F
c
\hat{F}_{c}:=[\hat{F}_{m},\hat{F}_{\mathrm{val}}]=\mathrm{MHSA}(F_{c})+F_{c}
F^c:=[F^m,F^val]=MHSA(Fc)+Fc 其中
F
^
c
\hat{F}_{c}
F^c 表示聚合后的特征。
接下来,通过多头跨模态注意力层交互
F
^
l
a
v
\hat F_{\mathrm{lav}}
F^lav 和
F
^
c
\hat F_c
F^c,得到进化后的语言感知的视觉特征
F
‾
l
a
v
\overline F_{\mathrm{lav}}
Flav:
F
‾
l
a
v
=
M
H
C
A
(
F
^
l
a
v
,
F
^
c
,
F
^
c
)
+
F
^
l
a
v
\overline{F}_{\mathrm{lav}}=\mathrm{MHCA}(\hat{F}_{\mathrm{lav}},\hat{F}_{c},\hat{F}_{c})+\hat{F}_{\mathrm{lav}}
Flav=MHCA(F^lav,F^c,F^c)+F^lav其中
M
H
C
A
\mathrm{MHCA}
MHCA 为多头跨模态注意力层。下一个解码器块采用上一层输出的语言感知视觉特征
F
‾
l
a
v
\overline{F}_{\mathrm{lav}}
Flav 和
F
^
c
\hat F_c
F^c 为输入。
之后,进化的语言感知的视觉特征 F ‾ l a v \overline{F}_{\mathrm{lav}} Flav 再经过两个序列块的上采样。其中每个序列块由一个卷积层和一个上采样操作组成。从 F ^ c \hat F_c F^c 中从提取出多模态 query token F ^ m \hat F_m F^m,送入一个 MLP 层。最后将 MLP 层的输出与上采样的视觉特征相乘得到分割 mask。
Losses
采用 Focal loss
L
f
\mathcal{L}_{f}
Lf和 Dice loss
L
d
\mathcal{L}_{d}
Ld的线性组合:
L
=
L
f
+
L
d
\mathcal{L}=\mathcal{L}_{f}+\mathcal{L}_{d}
L=Lf+Ld
五、实验
数据集
RefCOCO、RefCOCO+、G-Ref。
指标
mask Intersection-over-Union (IoU)、Precision with thresholds (Pr@X)。
与 SOTA 方法的比较
消融研究
交互感知注意力块
Mask Decoder
特征增强
泛化能力
六、结论
本文提出 MARIS 用于 RIS,使用交互感知的注意力特征以及整合了 SAM 的知识到 RIS 中。模型包含三个部分:特征增强模块、交互感知注意力块,Mask 解码器。具体来说,特征增强模块整合了全局的和局部的特征,并将知识从 SAM 模块中转移出来。接下来,通过对句子中的每个单词和视觉特征中的每个区域加权,得到交互感知的注意力块生成语言感知的视觉特征和视觉感知的语言特征。最后,设计了一个 Mask 解码器来利用语言的指导。具体来说,引入多模态 query token 来整合视觉和语言的属性。实验表明 MARIS 达到了 SOTA 且具有很强的泛化能力。
写在后面
附录的补充材料还未提供,不清楚其它信息。但这个结论算是个反面素材了,写的过于拖沓,不通顺,稀烂。很明显,结论结论,是总结的,不是让你再把模型啥的再啰嗦说一遍的。然后论文的新意,在我看来是要打一点折扣,跟不上顶会,因为用的是冻结的 SAM 特征,明显决定了模型的上限。另外,作者的写作稍显得有些啰嗦与不搭边,也就是上句不搭下句,值得注意下。再吐槽一点,冻结主干特征,不就是 Parameter-Effective,参数高效微调的方法嘛。