个人阅读见解,欢迎大家交流讨论指正~
虽然近些年语义分割有了很大的进步,但是应用到现实世界下游任务还是有局限,无法处理未定义类别。基于文本的实例分割(Referring image segmentation) 就是作者为了解决此问题而提出的任务,Referring image segmentation是一个目标类别没有预定义但在自然语言被描述的前沿的图像分割任务,通过一段自然语言表述(query)分割出实例。这个任务在人机交互、照片编辑等场景广泛应用。
语义分割:FCN,CNN。但是只能对预先定义类别进行分割。
基于文本的实例分割:CNN,RNN,ConvLSTM。卷积很难获取语言表达中实体之间的长期依赖关系,并且不够灵活,无法对两种不同模式之间的交互进行建模。
Vision Transformer:对原始图片进行分块,展平成序列,输入进原始Transformer模型的编码器Encoder部分,最后接入一个全连接层对图片进行分类。
为了捕捉每个模态的远程交互,ReSTR首先通过Transformer Encoder(Fig.2.a)独立地提取视觉和语言特征。然后,它将视觉和语言特征平行输入到多模融合编码器(Fig.2.b),以捕捉这两种模态之间的细微关系。最后,用于从粗到细分割的高效解码器(Fig.2.c) 将patch-level预测转换为高分辨pixel-level预测。
Transformer encoder由M个连续的Transformer组成,每个Transformer由Multi-headed Self-Attention (MSA), Layer Normalization (LN), and Multilayer Perceptron (MLP) blocks组成,公式为:
z ‾ i + 1 = MSA ( LN ( z i ) ) + z i z i + 1 = MLP ( LN ( z ‾ i + 1 ) ) + z ‾ i + 1 其中, Z i 是 i 层 t r a n s f o r m e r 的输出 \begin{gathered} \overline{\mathbf{z}}_{i+1}=\operatorname{MSA}\left(\operatorname{LN}\left(\mathbf{z}_{i}\right)\right)+\mathbf{z}_{i} \\ \mathbf{z}_{i+1}=\operatorname{MLP}\left(\operatorname{LN}\left(\overline{\mathbf{z}}_{i+1}\right)\right)+\overline{\mathbf{z}}_{i+1} \end{gathered}\\ 其中,\mathbf{Z}_{i}是i层transformer的输出 zi+1=MSA(LN(zi))+zizi+1=MLP(LN(zi+1))+zi+1其中,Zi是i层transformer的输出
MSA由k个 Self-Attention (SA) 组成,公式为:
MSA ( z ) = [ S A 1 ( z ) , S A 1 ( z ) , ⋯ , S A k ( z ) ] W M S A SA ( z ) = A v A = softmax ( q k ⊤ / D h ) 其中, W M S A 是一个线性映射 \begin{gathered} \operatorname{MSA}(\mathbf{z})=\left[\mathrm{SA}_{1}(\mathbf{z}), \mathrm{SA}_{1}(\mathbf{z}), \cdots, \mathrm{SA}_{k}(\mathbf{z})\right] \mathbf{W}_{\mathrm{MSA}} \\ \operatorname{SA}(\mathbf{z})=A \mathbf{v} \\ A=\operatorname{softmax}\left(\mathbf{q k}^{\top} / \sqrt{D_{h}}\right) \end{gathered} 其中,\mathrm{W}_{MSA}是一个线性映射 MSA(z)=[SA1(z),SA1(z),⋯,SAk(z)]WMSASA(z)=AvA=softmax(qk⊤/Dh)其中,WMSA是一个线性映射
作者分别用Transformer提取Vision和Language特征:
Vision encoder: 采用了ViT的思想,将图片分成P×P个小patches加上位置编码输入到Transformers,得到输出。
Language encoder: 将 word embeddings加上位置编码,输入到Transformers。
上述提到的Vision encoder和Language encoder都利用了Transformer encoder,并没做出改进,可以说是本文中的别名。
由两个Transformer encoder构成(visual-linguistic encoder and linguistic-seed encoder)
输入: z v ∈ R N v × D v , z l ∈ R N l × D l , e s ∈ R 1 × D ( N v = H / P × W / P , P 是 p a t c h _ s i z e ) 首先,用不同的线性层调整 z v 和 z l 的通道维度至和 c l a s s _ s e e d _ e m b e d d i n g e s 一样的 D 维 ( e s 是可训练参数,随机初始化 ) ; 然后, v i s u a l − l i n g u i s t i c e n c o d e r 将 z v 和 z l 作为输入,得到 p a t c h 的多模特征 Z v ′ ∈ R N v × D 和视觉关注( V i s i o n − a t t e n d e d )语言特征 Z l ′ ∈ R N l × D : [ z v ′ , z l ′ ] = Transformers ( [ z v , z l ] ; θ v l ) 最后, Z l ′ 和 e s 输入到 l i n g u i s t i c − s e e d e n c o d e r : e s ′ = Transformers ( [ z l ′ , e s ] ; θ l s ) \begin{aligned} &输入:\mathbf{z}_{v} \in \mathbb{R}^{N_{v} \times D_{v}},\mathbf{z}_{l} \in \mathbb{R}^{N_{l} \times D_{l}},\mathbf{e}_{s} \in \mathbb{R}^{1 \times D}(N_{v}=H/P \times W/P,P是patch\_size)\\ &首先,用不同的线性层调整\mathbf{z}_{v}和\mathbf{z}_{l}的通道维度至和 class\_seed\_embedding\ \mathbf{e}_{s}一样的D维(\mathbf{e}_{s}是可训练参数,随机初始化);\\ &然后,visual-linguistic encoder将\mathbf{z}_{v}和\mathbf{z}_{l}作为输入,得到patch的多模特征\mathbf{Z}_{v}^{\prime} \in \mathbb{R}^{N_{v} \times D}和视觉关注(Vision-attended)语言特征\mathbf{Z}_{l}^{\prime} \in \mathbb{R}^{N_{l} \times D}:\\ & \hspace{1cm}\left[\mathbf{z}_{v}^{\prime}, \mathbf{z}_{l}^{\prime}\right]=\operatorname{Transformers}\left(\left[\mathbf{z}_{v}, \mathbf{z}_{l}\right] ; \boldsymbol{\theta}_{v l}\right)\\ &最后,\mathbf{Z}_{l}^{\prime}和\mathbf{e}_{s}输入到linguistic-seed encoder: \\& \hspace{1cm}\mathbf{e}_{s}^{\prime}=\operatorname{Transformers}\left(\left[\mathbf{z}_{l}^{\prime}, \mathbf{e}_{s}\right] ; \boldsymbol{\theta}_{l s}\right)\\ \end{aligned} 输入:zv∈RNv×Dv,zl∈RNl×Dl,es∈R1×D(Nv=H/P×W/P,P是patch_size)首先,用不同的线性层调整zv和zl的通道维度至和class_seed_embedding es一样的D维(es是可训练参数,随机初始化);然后,visual−linguisticencoder将zv和zl作为输入,得到patch的多模特征Zv′∈RNv×D和视觉关注(Vision−attended)语言特征Zl′∈RNl×D:[zv′,zl′]=Transformers([zv,zl];θvl)最后,Zl′和es输入到linguistic−seedencoder:es′=Transformers([zl′,es];θls)
因为一个固定的分类器无法满足根据文本表达分割出不同目标mask,所以用 e s ′ \mathbf{e}_{s}^{\prime} es′ 自适应的分类器代替固定分类器,检测每一个patch是否包含一部分的目标实体。
多模融合编码器的目的就是产生自适应分类器,以满足基于文本图像分割中的以下两个需求:
计算 p a t c h − l e v e l 的预测 y ^ p ∈ R N v × 1 : y ^ p = σ ( z v ′ e s ′ ⊤ D ) 其中, σ 是 s i g m o i d 函数, D 是标准化项 分割解码器对低分辨率的 p a t c h − l e v e l 的预测 y ^ p 做补偿 : 首先,计算 m a s k e d 多模特征 z masked ∈ R N v × D : z masked = z v ′ ⊗ y ^ p 其中, ⊗ 为对通道维度 D 做哈达玛积(矩阵相同位置相乘),得到维度 z masked ∈ R N v × D 然后,在前向传播到分割解码器之前,将上述得到的特征进行拼接 [ z v , z masked ] ∈ R N v × 2 D 得到视觉语义,去指导分割解码器。分割解码器由 K ( K = l o g P ) 个序列块构成,每个序列快在上采样的同时,将 c h a n n e l 进行线性投影减少一半。 最后,从解码器的输出经过线性和 r e s h a p e 生成 p i x e l − l e v e l 的预测结果 Y ^ m ∈ R H × W × 1 。在推断模型中,这就是最后的分割结果。 \begin{aligned} &计算patch-level的预测 \hat{\mathbf{y}}_{p} \in \mathbb{R}^{N_{v} \times 1}: \\&\hspace{2cm}\hat{\mathbf{y}}_{p}=\sigma\left(\frac{\mathbf{z}_{v}^{\prime} \mathbf{e}_{s}^{\prime \top}}{\sqrt{D}}\right) \hspace{1cm}其中,\sigma是sigmoid函数,\sqrt{D}是标准化项 \\&分割解码器对低分辨率的patch-level的预测\hat{\mathbf{y}}_{p}做补偿: \\&\hspace{1cm}首先,计算masked多模特征 \mathbf{z}_{\text {masked }} \in \mathbb{R}^{N_{v} \times D}: \\&\hspace{2cm}\mathbf{z}_{\text {masked }}=\mathbf{z}_{v}^{\prime} \otimes \hat{\mathbf{y}}_{p} \hspace{1cm}其中,\otimes为对通道维度D做哈达玛积(矩阵相同位置相乘),得到维度\mathbf{z}_{\text {masked }} \in \mathbb{R}^{N_{v} \times D} \\&\hspace{1cm}然后,在前向传播到分割解码器之前,将上述得到的特征进行拼接\left[\mathbf{z}_{v}, \mathbf{z}_{\text {masked }}\right] \in \mathbb{R}^{N_{v} \times 2 D}得到视觉语义,去指导分割解码器。 分割解码器由K(K=logP)个序列块构成,每个序列快在上采样的同时,将channel进行线性投影减少一半。 \\&\hspace{1cm}最后,从解码器的输出经过线性和reshape生成pixel-level的预测结果\hat{Y}_{m} \in \mathbb{R}^{H \times W \times 1}。在推断模型中,这就是最后的分割结果。 \end{aligned} 计算patch−level的预测y^p∈RNv×1:y^p=σ(Dzv′es′⊤)其中,σ是sigmoid函数,D是标准化项分割解码器对低分辨率的patch−level的预测y^p做补偿:首先,计算masked多模特征zmasked ∈RNv×D:zmasked =zv′⊗y^p其中,⊗为对通道维度D做哈达玛积(矩阵相同位置相乘),得到维度zmasked ∈RNv×D然后,在前向传播到分割解码器之前,将上述得到的特征进行拼接[zv,zmasked ]∈RNv×2D得到视觉语义,去指导分割解码器。分割解码器由K(K=logP)个序列块构成,每个序列快在上采样的同时,将channel进行线性投影减少一半。最后,从解码器的输出经过线性和reshape生成pixel−level的预测结果Y^m∈RH×W×1。在推断模型中,这就是最后的分割结果。
训练的损失函数由patch-level损失和pixel-level损失两部分构成:
L ( y ^ p , y p , Y ^ m , Y m ) = λ L b ( y ^ p , y p ) + L b ( Y ^ m , Y m ) \mathcal{L}\left(\hat{\mathbf{y}}_{p}, \mathbf{y}_{p}, \hat{Y}_{m}, Y_{m}\right)=\lambda \mathcal{L}_{b}\left(\hat{\mathbf{y}}_{p}, \mathbf{y}_{p}\right)+\mathcal{L}_{b}\left(\hat{Y}_{m}, Y_{m}\right) L(y^p,yp,Y^m,Ym)=λLb(y^p,yp)+Lb(Y^m,Ym)
数据集:ReferIt , UNC, UNC+ , and Gref
评估指标:实验选用了IoU作为评估指标,计算真实值和预测值两个集合的交集和并集之比。最后评估在IoU阈值在{0.5,0.6,0.7,0.8,0.9} 时的准确性
根据实验结果,ReSTR在当前任务上有着优异的表现。
作者提出了三种多模融合编码器:VME(FIg.3.a)、IME(FIg.3.b)、CME(FIg.3.c)
将多模融合编码器的4层Transformer记作{ f 1 , f 2 , f 3 , f 4 f_1,f_2,f_3,f_4 f1,f2,f3,f4},表格3(a)的实验数据表明:对于class-seed embedding的注意力更加偏向视觉特征(这里实验多模融合编码器采用的是VME),这样会造成不平衡,自适应分类器不能很好捕捉语言表达。而CME就较好的优化了这一缺陷。 C M E † \mathrm{CME}^{\dagger} CME†是CME的权重共享高效精简版。
ReSTR是第一个用于基于文本图像分割的无卷积模型。ReSTR采用视觉和语言的Transformer,从特征提取中捕获全局上下文。它还包括由Transformer组成的多模融合编码器,用于对两种模态之间的精细和灵活交互进行编码。此外,多模融合编码器还计算了一个自适应分类器,用于patch级分类。此外,还提出了一种分割解码器,以从粗到精的方式将面片级预测细化为像素级预测。ReSTR在所有公共基准上都优于现有的基于文本图像分割技术。随着patch大小的减小,计算成本呈二次增长,这是我们工作的潜在局限性。 由于密集预测任务的性能在很大程度上取决于使用视觉Transformer时的patch大小,因此它在性能和计算成本之间引入了一种不希望的权衡。为了缓解这种情况,集成线性复杂Transformer架构将是一个很有前途的研究方向,将其留给未来的工作。