文章地址:2203.16768.pdf (arxiv.org)

个人阅读见解,欢迎大家交流讨论指正~

一、研究背景

虽然近些年语义分割有了很大的进步,但是应用到现实世界下游任务还是有局限,无法处理未定义类别。基于文本的实例分割(Referring image segmentation) 就是作者为了解决此问题而提出的任务,Referring image segmentation是一个目标类别没有预定义但在自然语言被描述的前沿的图像分割任务,通过一段自然语言表述(query)分割出实例。这个任务在人机交互、照片编辑等场景广泛应用。

二、相关工作

语义分割:FCN,CNN。但是只能对预先定义类别进行分割。

基于文本的实例分割:CNN,RNN,ConvLSTM。卷积很难获取语言表达中实体之间的长期依赖关系,并且不够灵活,无法对两种不同模式之间的交互进行建模。

Vision Transformer:对原始图片进行分块,展平成序列,输入进原始Transformer模型的编码器Encoder部分,最后接入一个全连接层对图片进行分类。

三、ReSTR

为了捕捉每个模态的远程交互,ReSTR首先通过Transformer Encoder(Fig.2.a)独立地提取视觉和语言特征。然后,它将视觉和语言特征平行输入到多模融合编码器(Fig.2.b),以捕捉这两种模态之间的细微关系。最后,用于从粗到细分割的高效解码器(Fig.2.c) 将patch-level预测转换为高分辨pixel-level预测。

3.1视觉和语言特征提取

Transformer encoder由M个连续的Transformer组成,每个Transformer由Multi-headed Self-Attention (MSA), Layer Normalization (LN), and Multilayer Perceptron (MLP) blocks组成,公式为:
z‾i+1=MSA⁡(LN⁡(zi))+zizi+1=MLP⁡(LN⁡(z‾i+1))+z‾i+1其中,Zi是i层transformer的输出\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其中,Ziitransformer的输出

MSA由k个 Self-Attention (SA) 组成,公式为:

MSA⁡(z)=[SA1(z),SA1(z),⋯,SAk(z)]WMSASA⁡(z)=AvA=softmax⁡(qk⊤/Dh)其中,WMSA是一个线性映射\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,并没做出改进,可以说是本文中的别名。

3.2多模融合编码器

由两个Transformer encoder构成(visual-linguistic encoder and linguistic-seed encoder

输入:zv∈RNv×Dv,zl∈RNl×Dl,es∈R1×D(Nv=H/P×W/P,P是patch_size)首先,用不同的线性层调整zv和zl的通道维度至和class_seed_embeddinges一样的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)\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} 输入:zvRNv×Dv,zlRNl×Dl,esR1×DNv=H/P×W/P,Ppatch_size首先,用不同的线性层调整zvzl的通道维度至和class_seed_embeddinges一样的D(es是可训练参数,随机初始化)然后,visuallinguisticencoderzvzl作为输入,得到patch的多模特征ZvRNv×D和视觉关注(Visionattended)语言特征ZlRNl×D:[zv,zl]=Transformers([zv,zl];θvl)最后,Zles输入到linguisticseedencoderes=Transformers([zl,es];θls)

因为一个固定的分类器无法满足根据文本表达分割出不同目标mask,所以用 es′\mathbf{e}_{s}^{\prime}es 自适应的分类器代替固定分类器,检测每一个patch是否包含一部分的目标实体。

多模融合编码器的目的就是产生自适应分类器,以满足基于文本图像分割中的以下两个需求:

  1. 由于参考图像分割的目的是分割与语言表达相对应的区域,因此自适应分类器应该理解语言表达的精细关系
  2. 由于输入图像具有与语言表达无关的区域(例如背景),直接关注视觉信息的类种子(class seed)嵌入可能会导致被无关区域损坏的自适应分类器。然而,由于语言表达式中描述的目标实体的外观可能因图像而异,因此使用视觉语言特征生成自适应分类器是有益的。

3.3由粗到精的分割解码器

计算patch−level的预测y^p∈RNv×1:y^p=σ(zv′es′⊤D)其中,σ是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。在推断模型中,这就是最后的分割结果。\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} 计算patchlevel的预测y^pRNv×1:y^p=σ(D

zves′⊤)其中,σsigmoid函数,D

是标准化项分割解码器对低分辨率的patchlevel的预测y^p做补偿:首先,计算masked多模特征zmaskedRNv×Dzmasked=zvy^p其中,为对通道维度D做哈达玛积(矩阵相同位置相乘),得到维度zmaskedRNv×D然后,在前向传播到分割解码器之前,将上述得到的特征进行拼接[zv,zmasked]RNv×2D得到视觉语义,去指导分割解码器。分割解码器由K(K=logP)个序列块构成,每个序列快在上采样的同时,将channel进行线性投影减少一半。最后,从解码器的输出经过线性和reshape生成pixellevel的预测结果Y^mRH×W×1。在推断模型中,这就是最后的分割结果。

训练的损失函数由patch-level损失pixel-level损失两部分构成:

L(y^p,yp,Y^m,Ym)=λLb(y^p,yp)+Lb(Y^m,Ym)\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)

四、实验

4.1实验设置

数据集:ReferIt , UNC, UNC+ , and Gref

评估指标:实验选用了IoU作为评估指标,计算真实值和预测值两个集合的交集和并集之比。最后评估在IoU阈值在{0.5,0.6,0.7,0.8,0.9} 时的准确性

4.2和SoTA的比较

根据实验结果,ReSTR在当前任务上有着优异的表现。

4.3融合编码器的变体分析

作者提出了三种多模融合编码器:VME(FIg.3.a)、IME(FIg.3.b)、CME(FIg.3.c)

将多模融合编码器的4层Transformer记作{f1,f2,f3,f4f_1,f_2,f_3,f_4f1,f2,f3,f4},表格3(a)的实验数据表明:对于class-seed embedding的注意力更加偏向视觉特征(这里实验多模融合编码器采用的是VME),这样会造成不平衡,自适应分类器不能很好捕捉语言表达。而CME就较好的优化了这一缺陷CME†\mathrm{CME}^{\dagger}CME是CME的权重共享高效精简版。

五、结论

ReSTR是第一个用于基于文本图像分割的无卷积模型。ReSTR采用视觉和语言的Transformer,从特征提取中捕获全局上下文。它还包括由Transformer组成的多模融合编码器,用于对两种模态之间的精细和灵活交互进行编码。此外,多模融合编码器还计算了一个自适应分类器,用于patch级分类。此外,还提出了一种分割解码器,以从粗到精的方式将面片级预测细化为像素级预测。ReSTR在所有公共基准上都优于现有的基于文本图像分割技术。随着patch大小的减小,计算成本呈二次增长,这是我们工作的潜在局限性。 由于密集预测任务的性能在很大程度上取决于使用视觉Transformer时的patch大小,因此它在性能和计算成本之间引入了一种不希望的权衡。为了缓解这种情况,集成线性复杂Transformer架构将是一个很有前途的研究方向,将其留给未来的工作。















[CVPR2022|基于文本实例分割]ReSTR: Convolution-free Referring Image Segmentation Using Transformers相关推荐

  1. 语义分割和实例分割_一文读懂语义分割与实例分割

    以人工智能为导向的现代计算机视觉技术,在过去的十年中发生了巨大的变化.今天,它被广泛用于图像分类.人脸识别.物体检测.视频分析以及机器人及自动驾驶汽车中的图像处理等领域.图像分割技术是目前预测图像领域 ...

  2. 开源论文推荐:含人脸识别、实例分割、跟踪、SR等

    周刊论文分享又来了!本次包含超分辨率.用于实时防暗无人机追踪器.实例分割.人脸识别.图像和谐化等,共计 7 篇.       01       MASA-SR: Matching Accelerati ...

  3. 本周开源论文推荐:含人脸识别、实例分割、跟踪、SR等

    周刊论文分享又来了!本次包含超分辨率.用于实时防暗无人机追踪器.实例分割.人脸识别.图像和谐化等,共计 7 篇.       01       MASA-SR: Matching Accelerati ...

  4. 实例分割最全综述(入坑一载半,退坑止于此)

    自21年年初从语义分割的舒适圈跳入实例分割方向至今,已经一年又半载了. 看过一些文章,跑过一些实验,至今没有产出. 思想挣扎过许多次,要不要继续,最终决定遗憾退场. 写一点东西,记一记往昔,弥补遗憾于 ...

  5. ECCV 2020 论文大盘点-实例分割篇

    本文盘点 ECCV 2020 中所有实例分割(Instance Segmentation)相关论文,其中 oral 2 篇, 9 篇论文开源或将开源. 下载包含这些论文的 ECCV 2020 所有论文 ...

  6. 遮挡场景下视频实例分割怎么做?牛津阿里最新开源OVIS数据集!

    点击上方"CVer",选择加"星标"置顶 重磅干货,第一时间送达 本文系CVer粉丝投稿,欢迎大家分享优质的工作 本文介绍一下我们最近公开的视频实例分割数据集O ...

  7. ECCV 2020 实例分割+全景分割论文大盘点(14篇论文)

    前言 计算机视觉Daily 正式系列整理 ECCV 2020的大盘点工作,本文为第三篇:实例分割和全景分割方向. 前两篇详见: ECCV 2020 目标检测论文大盘点(49篇论文) ECCV 2020 ...

  8. Query Generation Module-NTU用多样性的query生成,涨点基于文本的实例分割(已开源)...

    关注公众号,发现CV技术之美 ▊ 写在前面 在本文中,作者解决的任务是基于文本的实例分割(referring segmentation,RES).在这个任务中,作为query的文本通常描述了实例之间的 ...

  9. 基于轮廓调整的SOTA实例分割方法,速度达32.3fps | CVPR 2020

    作者 | VincentLee 来源 | 晓飞的算法工程笔记 介绍 实例分割是许多计算机视觉任务中的重要手段,目前大多数的算法都采用在给定的bbox中进行pixel-wise分割的方法.受snake算 ...

  10. 腾讯ARC、华中科大联合提出QueryInst,开启基于Query的实例分割新思路

    视学算法专栏 机器之心编辑部 实例分割(Instance Segmentation)任务有着广阔的应用和发展前景.来自腾讯 PCG 应用研究中心 (ARC)和华中科技大学的研究者们通过充分挖掘并利用Q ...

最新文章

  1. 附录3:Pandas实例记录
  2. SAP MM 盘点凭证上的posting block
  3. 学会分析网站空间日志
  4. python 自然语言处理(二) jieba 分词
  5. 数据指标有哪些?什么是好的数据指标?
  6. VHD安装的Win7 X64系统迁移到VMware虚拟机(P2V)...
  7. iOS开发(7)通过uiimageView浅谈UIView
  8. python django django-debug-toolbar 加载缓慢,不能使用。
  9. HDR:为用户打造的视觉盛宴
  10. Java基础学习总结(60)——Java常用的八种排序算法
  11. java虚拟机之内存模型
  12. 云计算分布式架构简介
  13. 当我们做实验的时候,我们在做什么?
  14. plc顺序控制设计法是什么?
  15. 睡觉计算机主机在身旁好么,笔记本电脑的睡眠和休眠之间有什么区别
  16. 黑苹果音频卡顿_DXOMARK 公布无线音箱音质基准:苹果华为 Sonos 上榜
  17. TOC制约理论的本质及其在生产、项…
  18. [转] alpha、beta、rc各版本区别
  19. word每行字符数上限_word怎么限制每行字数
  20. 【Python】Mincoda安装 | Pycharm安装 | 关联conda环境

热门文章

  1. 6.25考试整理:江城唱晚不老梦棠梨煎雪——题解
  2. 高德足迹地图在哪里_高德地图怎么点亮城市 足迹地图查看方法
  3. python 3d绘图立方体_Python3使用turtle绘制超立方体图形示例
  4. dxdiag windows硬件检测
  5. php 左右分栏,如何设置分栏格式
  6. js用函数找出1 - 1000 之间7的倍数和包含7的数字,放入数组内
  7. vue中使用 minix 混入
  8. WPS表格恢复到指定日期版本(图片详解)
  9. java实现查询Word是否包含批注和修订内容
  10. 获取前N天/月/年的日期