RIS 系列 Locate Then Segment: A Strong Pipeline for Referring Image Segmentation 论文阅读笔记
写在前面
一篇 21 年的文章,为啥还要继续写篇博客呢,因为 21 年基本上都是在搞大模型,这篇文章还算正常点。
- 论文地址:Locate then Segment: A Strong Pipeline for Referring Image Segmentation
- 代码地址:原文暂未提供
- 收录于:CVPR 2021
- Ps:2023 年每周一篇博文阅读笔记,主页 更多干货,欢迎关注呀,期待 6 千粉丝有你的参与呦~
一、Abstract
Referring image segmentation (RIS) 的定义。之前的方法未能显式地建模指代实例的定位信息,而通常聚焦于设计隐式的特征交互机制,融合视觉特征从而直接生成最后的分割 mask。本文通过另外一个角度,将其解耦合为 “Locate-Then-Segment” (LTS) 定位-分割” 的计划。LTS 首先提取和融合视觉-文本特征,得到一个跨模态表示。然后在视觉-文本特征上应用一个跨模特交互来定位到指代目标,最后采用一个轻量化的分割网络生成 mask。实验结果表明本文提出的方法很有效。
二、引言
本文研究语言引导的目标分割任务,旨在根据一个自然语言表达式分割出图像上特定目标的 mask。应用很广泛。接下来是一些难点的介绍。
给定图像和指代句子,有两个影响模型性能的关键因素:首先模型必须突出图像上最显著的关联目标;模型必须生成一个最好的分割结果。现有的方法大致总结如下:利用一个 CNN 和 RNN 来表示图像特征和文本特征;利用跨模态注意力和循环的 LSTM 来融合生成一个粗糙的 mask,利用 Dense CRF (DCRF) 进一步后处理从而得到最终精炼 mask。
之前的工作主要关注如何融合图像和语言特征,直接的解决方法是利用拼接-卷积的方法,然而未能有效对齐视觉-语言模态。于是一些方法提出跨模特注意力机制,自适应地融合图像中的重要区域以及语言表达式中的关键词。最近一些工作利用不同类型的信息词来学习对齐的多模态表示,要么通过表达式感知所有的实体,要么利用语言结构作为一个引导来分割指代目标。相应的问题就是:算法越来越复杂,使得算法分析和比较更加困难。此外,这些方法未能显式地定位到由语言表达式引导的目标,仅仅利用耗时的后处理操作来生成最终分割的 mask。
于是本文从其它维度来解决这一问题,将 RIS 任务划分为两个子任务:指代目标位置预测+目标分割 mask 的生成。具体来说,首先融合视觉和语言特征得到跨模态特征,然后提出一个定位模块来直接获得与表达式相关的视觉内容,这一目标先验可以用于后续分割模块的视觉位置引导。接下来拼接目标先验与跨模态特征,然后应用一个轻量化的 ConvNets 得到最终的分割 mask。
三、相关工作
3.1 目标分割
基于全卷积的分割网络:DeepLab、PSPNet,以及 Mask R-CNN、FCNs 系列。
3.2 指代定位与分割
指代定位是指用 bounding box 定位到语言表达式所指图像中的特定目标,然后是一些工作的列举。
3.3 跨模态交互
最近,注意力机制表明在提取与语言表达式相关的视觉内容时效果很好。
相关滤波算法可以视为注意力机制的一种简单方式,在计算机视觉任务中被广泛使用,目标追踪用的比较多,目标分类任务也使用这个。而在本文,利用基于语言的条件相关滤波来得到相关的热力图,其中高回应值被视为相关的目标先验。
除滤波外,很多跨模态注意力模型提出自适应地关注图像中的重要区域,和语言表达式中的关键词。而本文提出利用统一的基于注意力的 building block Transformer 来得到跨模态相关的注意力,去除了复杂注意力模型的设计。
四、提出的方法
首先,引入视觉和文本表示的提取过程,之后描述下两个包含滤波(或者基于 Transformer 的定位模块)和基于分割的轻量化 ConvNets 网络。最后,给出模型学习过程的细节。
4.1 视觉和语言特征提取
如上图所示,模型的输入由图像
I
I
I 和指代表达式
X
X
X 组成。首先采用 ConvNets 和 GRU 分别提取图像和文本特征。
视觉特征
对于输入的图像 I ∈ R H × W × 3 I\in\mathbb{R}^{H\times W\times 3} I∈RH×W×3,利用视觉 Backbone 提取多层级的视觉特征 F v 1 ∈ R H 32 × W 32 × d 1 F_{v_{1}}\in\mathbb{R}^{\frac{H}{32}\times\frac{W}{32}\times d_{1}} Fv1∈R32H×32W×d1、 F v 2 ∈ R H 16 × W 16 × d 2 F_{v_{2}}\in\mathbb{R}^{\frac{H}{16}\times\frac{W}{16}\times d_{2}} Fv2∈R16H×16W×d2、 F v 3 ∈ R H 8 × W 8 × d 3 F_{v_{3}}\in\mathbb{R}^{\frac{H}{8}\times\frac{W}{8}\times d_{3}} Fv3∈R8H×8W×d3,其中 d d d 为特征通道的维度, H H H、 W W W 分别是图像的高和宽。
语言特征
给定一个指代句子
X
=
[
x
1
,
x
2
,
…
,
x
m
]
X= [x_1,x_2,\ldots,x_m]
X=[x1,x2,…,xm],其中
x
i
x_i
xi 为第
i
i
i 个 token。首先应用 table lookup(这是啥?)得到词 embedding。通过 Glove,embedding 初始化为一个 300 维的向量。然后使用标准的双向 Gated Recurrent Unit (GRU) 来解决初始的 embedding 文本向量:
h
t
→
=
G
R
U
→
(
x
t
,
h
t
−
→
)
,
h
0
=
0
h
t
⏞
=
G
R
U
←
(
x
t
,
h
t
+
1
←
)
,
h
m
+
1
=
0
\begin{aligned}\overrightarrow{h_t}&=\overrightarrow{GRU}(x_t,\overrightarrow{h_{t-}}),h_0=0\\ \overbrace{h_t}&=\overleftarrow{GRU}(x_t,\overleftarrow{h_{t+1}}),h_{m+1}=0\\\end{aligned}
htht
=GRU(xt,ht−),h0=0=GRU(xt,ht+1),hm+1=0其中
G
R
U
→
\overrightarrow{GRU}
GRU 和
G
R
U
←
\overleftarrow{GRU}
GRU 分别表示前向和后向 GRUs。然后在所有词表示上执行全局平均池化:
f
t
e
x
t
=
a
v
g
(
h
1
,
h
2
,
.
.
.
,
h
m
)
h
t
=
c
o
n
c
a
t
(
h
t
→
,
h
t
←
)
,
t
∈
[
1
,
2
,
.
.
.
,
m
]
\begin{gathered}f_{text}=avg(h_1,h_2,...,h_m)\\h_t=concat(\overrightarrow{h_t},\overleftarrow{h_t}),t\in[1,2,...,m]\end{gathered}
ftext=avg(h1,h2,...,hm)ht=concat(ht,ht),t∈[1,2,...,m]
融合
通过融合
F
v
1
F_{v1}
Fv1 和
f
t
e
x
t
f_{text}
ftext 得到多模态 tensor:
f
m
1
l
=
g
(
f
v
1
l
W
v
1
)
⋅
g
(
f
t
e
x
t
W
t
)
f_{m_1}^l=g(f_{v_1}^lW_{v_1})\cdot g(f_{text}W_t)
fm1l=g(fv1lWv1)⋅g(ftextWt)其中
g
g
g 表示 Leaky ReLU,
f
m
1
l
f_{m_1}^l
fm1l 和
f
v
1
l
f_{v_1}^l
fv1l 为
F
m
1
F_{m_1}
Fm1 和
F
v
1
F_{v_1}
Fv1 的特征向量。
W
v
1
W_{v_1}
Wv1 和
W
t
W_t
Wt 分别是两个变形矩阵,将视觉和文本表示转变为相同的特征维度。然后获得接下来的
F
m
2
F_{m_2}
Fm2 和
F
m
3
F_{m_3}
Fm3:
F
m
i
−
1
′
=
U
p
S
a
m
p
l
e
(
F
m
i
−
1
)
F
m
i
=
c
o
n
c
a
t
(
g
(
F
m
i
−
1
′
W
m
i
−
1
)
,
g
(
F
v
i
W
v
i
)
)
\begin{aligned}F_{m_{i-1}}^{'}&=UpSample(F_{m_{i-1}})\\F_{m_i}&=concat(g(F_{m_{i-1}}^{'}W_{m_{i-1}}),g(F_{v_i}W_{v_i}))\end{aligned}
Fmi−1′Fmi=UpSample(Fmi−1)=concat(g(Fmi−1′Wmi−1),g(FviWvi))其中
i
∈
[
2
,
3
]
i\in[2,3]
i∈[2,3],上采样步长为
2
×
2
2\times2
2×2。在后续过程中,利用
F
m
3
F_{m_3}
Fm3 作为输入来生成分割 mask。之前的工作通常采用循环注意力机制来得到分割结果。本文表明定位-分割的性能更好。
4.2 定位
为了定位到与语言表达式相关的目标,提出两种方式捕捉多模态特征间的上下文,包含相关滤波和统一的注意力 block 块 Transformer,这能避免复杂的注意力模型的设计。
相关滤波
首先生成语言引导的内核
K
=
f
t
e
x
t
W
k
K=f_{text}W_k
K=ftextWk,其中
K
∈
R
d
k
K\in\mathbb {R}^{d_k}
K∈Rdk,然后将其转化为
R
d
k
×
1
×
1
\mathbb{R}^{d_k\times 1\times 1}
Rdk×1×1 对融合的特征
F
m
3
F_{m_3}
Fm3 进行过滤:
H
m
a
s
k
=
c
o
n
v
(
K
,
F
m
3
)
H_{mask}=conv(K,F_{m_3})
Hmask=conv(K,Fm3)其中
H
m
a
s
k
∈
R
H
8
×
W
8
H_{mask}\in \mathbb{R}^{\frac{H}{8}\times\frac{W}{8}}
Hmask∈R8H×8W,
c
o
n
v
conv
conv 表示卷积操作,热力图
H
m
a
s
k
H_{mask}
Hmask 为分割的粗糙 mask,其中具有最高得分的区域意味着最可能对应的语言表达式。
Transformer
为维持与相关滤波的一致性,这里并不使用 Transformer 编码器来提取文本表示,而是将全局文本表示 f t e x t f_{text} ftext 作为编码器的输出。
解码器采用标准的 Transformer 结构,使用多头注意力机制将多模态特征
F
m
3
F_{m_3}
Fm3 的信息转换到激活图
H
m
a
s
k
H_{mask}
Hmask 上:
H
m
a
s
k
=
d
e
c
o
d
e
r
(
F
m
3
,
f
t
e
x
t
)
H_{mask}=decoder(F_{m_3},f_{text})
Hmask=decoder(Fm3,ftext)
解码器将序列作为输入,因此展平
F
m
3
F_{m_3}
Fm3 的空间维度,得到一个形状为
d
×
H
W
64
d\times\frac{HW}{64}
d×64HW 的特征图。由于 Transformer 结构是输入不变的,再添加位置 embedding。
4.3 分割
给定视觉目标先验,分割模块旨在生成最终的分割 mask。首先拼接原始的跨模态特征
F
m
3
F_{m_3}
Fm3 和视觉目标先验
H
m
a
s
k
H_{mask}
Hmask,利用一个分割模块来提炼粗糙的分割结果:
P
m
a
s
k
=
S
e
g
(
c
o
n
c
a
t
(
F
m
3
,
H
m
a
s
k
)
)
P_{\boldsymbol{mas}\boldsymbol{k}}=Seg(concat(F_{\boldsymbol{m}_3},H_{\boldsymbol{mas}\boldsymbol{k}}))
Pmask=Seg(concat(Fm3,Hmask))其中
S
e
g
Seg
Seg 的主体结构为 ASPP,采用可分离卷积,上采样特征图 2 倍。于是预测的 mask 为
P
m
a
s
k
∈
R
H
4
×
W
4
P_{mask}\in\mathbb{R}^{\frac{H}{4}\times\frac{W}{4}}
Pmask∈R4H×4W。
4.4 训练和推理
在训练过程中,采用 Sigmoid Binary Cross Entropy (BCE) 损失训练:
L
s
e
g
=
∑
l=1
H
4
×
W
4
[
y
l
log
(
p
l
)
+
(
1
−
y
l
)
log
(
1
−
p
l
)
]
\begin{aligned} L_{seg}& = \sum_{\text{l=1}}^{\frac{H}{4}\times\frac{W}{4}}[y_l\log(p_l)+(1-y_l)\log(1-p_l)] \end{aligned}
Lseg=l=1∑4H×4W[yllog(pl)+(1−yl)log(1−pl)]其中
y
l
y_l
yl 和
p
l
p_l
pl 分别为下采样 GT mask 的元素以及预测的 mask
P
m
a
s
k
P_{mask}
Pmask。
此外,为确保模型能够关注于相应的图像区域,添加了一个定位损失来监督位置预测:
L
l
o
c
=
∑
l
=
1
H
8
×
W
8
[
y
l
log
(
h
l
)
+
(
1
−
y
l
)
log
(
1
−
h
l
)
]
L_{loc}=\sum_{l=1}^{\frac{H}{8}\times\frac{W}{8}}[y_l\log(h_l)+(1-y_l)\log(1-h_l)]
Lloc=l=1∑8H×8W[yllog(hl)+(1−yl)log(1−hl)]其中
h
l
h_l
hl 为下采样图
H
m
a
s
k
H_{mask}
Hmask 中的元素。最终,定义总损失如下:
L
=
L
s
e
g
+
λ
L
l
o
c
L=L_{seg}+\lambda L_{loc}
L=Lseg+λLloc其中
λ
=
0.1
\lambda=0.1
λ=0.1。
在推理过程中,上采样预测的分割 mask P m a s k P_{mask} Pmask 到原始图像尺寸 H × W H\times W H×W,并以 0.25 的阈值进行二值化得到最终的结果。
五、实验
5.1 实验步骤
数据集和指标
RefCOCO、Ref-COCO+、RefCOCOg
intersectionover-union (IoU)、prec@X
实施细节
Darknet53 作为视觉 Backbone,预训练在 MSCOCO 上。输入图像尺寸 416 × 416 416\times416 416×416。在 RefCOCO 和 RefCOCO+ 数据集上,句子最大长度 15;而在 RefCOOCg 上则为 20。1024 维度的双向 GRU 用于挖掘文本特征。 d k = 1024 d_k=1024 dk=1024。解码器 1 层,4 个头,1024 个隐藏单元。Adam 优化器,初始学习率 0.001 0.001 0.001,在第 30 个 epoch 时,乘 0.1。Batch_size 18,epoch 45。
5.2 主要结果
5.3 定量分析
5.4 消融实验
六、结论
RIS 任务的挑战,文本提出将这一任务划分为两个子任务:指代目标预测和细粒度的目标分割生成。实验表明方法性能很好。
尽管当前的 IoUs 大于之前的工作,但是仍低于 GT,而最近在图像分割的工作可能会带来一些进步。此外,本文仅利用简单的视觉和语言 Backbone,更复杂的结构可能有助于进一步提升性能。
写在后面
这篇文章可以说是没赶上大模型的热潮啊,不然应该中不了的。文章提出的框架非常简单,然后创新点在当时看来也是足够的。实验很充足,就是结论部分略微偏少了。