「理解和生成」的大一统 BILP

论文链接:https://arxiv.org/abs/2201.12086

代码连接:https://github.com/salesforce/BLIP

Demo地址:https://huggingface.co/spaces/akhaliq/BLIP

「理解和生成」的大一统!华人一作提出BLIP模型,「视觉+语言」任务多项SOTA

视觉语言预训练(Vision-language pre-training)的相关研究在各种多模态的下游任务中已经证明了其强大的实力。

但目前的模型和方法还存在两个主要的缺陷:

1、从模型角度来看,大多数方法要么采用基于编码器的模型,要么采用编码器-解码器模型。然而,基于编码器的模型不太容易直接迁移到文本生成的任务中,如图像标题(image captioning)等;而编码器-解码器模型还没有被成功用于图像-文本检索任务。

2、从数据角度来看,大多数sota的方法,如CLIP, ALBEF, SimVLM 都是对从网上收集的图像-文本对(image-text pair)进行预训练。尽管可以通过扩大数据集的规模来获得性能上的提高,但研究结果显示,有噪声的网络文本对于视觉语言学习来说只能得到次优的结果。

为此,研究人员提出了一个新的模型BLIP(Bootstrapping Language-Image Pre-training),可以统一视觉语言理解和生成。

BLIP是一个全新的VLP框架,与现有的方法相比,能够覆盖范围更广的下游任务。

BLIP分别从模型和数据的角度引入了两点创新:

1、编码器-解码器的多模态混合(MED, Multimodal mixture of Encoder-Decoder),一个全新的模型架构,能够有效地进行多任务预训练和灵活的迁移学习。一个MED可以作为一个单模态编码器(unimodal encoder),或是基于图像的文本编码器(image-grounded text encoder),或是基于图像的文本解码器(image-grounded text decoder)。

该模型与三个视觉语言目标共同进行预训练,即图像-文本对比学习(image-text contrastive learning)、图像-文本匹配(image-text matching)和图像-条件语言建模(image-conditioned language modeling)。

2、标题和过滤(Captioning and Filtering,CapFilt),一种新的数据集boostrapping方法,可以用于从噪声图像-文本对中学习。将预训练的MED微调为两个模块:一个是给定网络图像产生合成标题的captioner,另一个是去除原始网络文本和合成文本中的噪声标题的Filter。

实验结果表明,通过captioner和filter的协作,BLIP模型能够在各种下游任务上取得了稳定的性能改进,包括图像-文本检索、图像标题、视觉问答、视觉推理和视觉对话。研究人员还发现,更多样化的caption会产生更大的性能收益。

将模型直接迁移到两个视觉语言任务时(文本-视频检索和videoQA),研究人员还实现了sota的zero-shot性能。

模型架构

BLIP采用Visual Transformer作为图像编码器,将输入的图像划分为patch,然后将patches编码为一个embedding序列,并用一个额外的[CLS]标记来代表全局图像特征。与使用预训练的目标检测器进行视觉特征提取相比,使用ViT更便于计算,并且已经逐渐成为主流。

为了预训练一个具有理解和生成能力的统一模型,研究人员提出了多模态混合编码器-解码器(MED),能够用于多任务。

1、单模态编码器(Unimodal encoder),对图像和文本分别进行编码。文本编码器(text encoder)与BERT相同,在文本输入的开头附加一个[CLS]标记,以总结句子。

2、以图像为基础的文本编码器(Image-grounded text encoder),通过在自注意力(SA)层和前馈网络(FFN)之间为文本编码器的每个Transformer块插入一个额外的交叉注意力(CA)层来注入视觉信息。一个特定任务的[Encode]标记被附加到文本上,[Encode]的输出embedding被用作图像-文本对的多模态表示。

3、以图像为基础的文本解码器(Image-grounded text decoder),用因果自注意力层(causal self-attention layer)替代编码器中的双向自注意力层。用[Decode]标记来表示一个序列的开始和结束。

三大损失函数

在预训练期间,BLIP联合优化三个目标,其中两个是基于理解的目标,一个是基于生成的目标。

每个图像-文本对只需要在计算量比较大的ViT中进行一次前向传递,并在text Transformer系统中进行三次前向传递。

1、图像-文本对比损失(Image-Text Contrastive Loss, ITC)激活了单模态编码器,目的是通过促进正向的图像-文本对与负向的图像-文本对有相似的表示,来对齐ViT和text Transformer的特征空间。在以前的研究中已被证明是改善视觉和语言理解的一个有效目标。研究人员遵循前人的ITC损失,引入了一个动量编码器来产生特征,并从动量编码器中创建软标签作为训练目标,以说明negative pairs中的潜在positive。

2、图像-文本匹配损失(Image-Text Matching Loss, ITM)激活了以图像为基础的文本编码器。它的目的是学习图像-文本的多模态表示以捕捉视觉和语言之间的细粒度对齐。ITM是一个二元分类任务,模型根据多模态特征使用一个ITM头(一个线性层)来预测一个图像-文本对是positive(匹配的)还是negative(不匹配的)。

为了找到信息量更大的否定词,研究人员采用了硬否定词挖掘策略,在一个batch中具有更高的对比相似度的否定词对更有可能被选来计算损失。

3、语言建模损失(Language Modeling Loss, LM)激活了以图像为基础的文本解码器,其目的是生成给定图像的文本描述。它优化了交叉熵损失,训练模型以自回归的方式最大化文本的概率。

在计算损失时,研究人员采用0.1的标签平滑度(label smoothing)。与其他用于VLP的MLM损失相比,LM损失使模型具有泛化能力,能够将视觉信息转换为连贯的标题。

CapFlit模块

研究人员使用标题和过滤(Captioning and Filtering, CapFilt)来提高文本语料库的质量。

其中包含了两个模块:一个是给定网络图像生成字幕的Captioner,另一个是去除噪声图像-文本对的Filter。

Captioner和Filter都是从同一个预训练的MED模型初始化的,并在COCO数据集上单独进行微调。微调是一个轻量级的程序。

具体来说,Captioner是一个以图像为基础的文本解码器。它以LM为目标进行微调,对给定的图像进行文本解码。给定网络图片Iw,Captioner生成合成captions,即每张图片一个caption。

Filter是一个以图像为基础的文本编码器。它根据ITC和ITM的目标进行微调,以学习文本是否与图像匹配。该Filter去除原始网络文本和合成文本中的噪音文本,如果ITM头预测一个文本与图像不匹配,则该文本被认为是噪音。

最后,研究人员将过滤后的图像-文本对与人工标注的文本对结合起来,形成一个新的数据集用它来预训练一个新模型。

实验结果

研究人员对比了在不同数据集上预训练的模型以证明CapFilt在下行任务中的有效性,包括图像-文本检索和图像标题任务,并进行了微调和zero-shot测试。

可以看到,CapFilt可以通过更大的数据集和更大vision backbone来进一步提高性能,也证实了它在数据规模和模型大小方面的可扩展性。

在论文中研究人员还进行了更细致的分析,在广泛的视觉语言任务上取得了最先进的结果,如图像文本检索(平均召回率+2.7%@1)、图像标题(CIDEr+2.8%)和VQA(VQA score+1.6%)。

Anything-3D

论文地址:https://arxiv.org/pdf/2304.10261.pdf

github: https://github.com/Anything-of-anything/Anything-3D

2D图像的3D重建一直是CV领域的重头戏。

层出不同的模型被开发出来试图攻克这个难题。

今天,新加坡国立大学的学者共同发表了一篇论文,开发了一个全新的框架Anything-3D来解决这个老大难问题。

借助Meta「分割一切」模型,Anything-3D直接让分割后的任意物体活起来了。

Here we present a project where we combine Segment Anything with a series of 3D models to create a very interesting demo. This is currently a small project, but we plan to continue improving it and creating more exciting demos.

Contributions are highly Welcomed!🤝🙌

Anything-3D! 在现实世界中,各种物体和各类环境既多样又复杂。所以,在不受限制的情况下,从单一RGB图像中进行三维重建面临诸多困难。在此,新加坡国立大学研究人员结合了一系列视觉语言模型和SAM(Segment-Anything)物体分割模型,生成了一个功能多、可靠性强的系统——Anything-3D。目的就是在单视角的条件下,完成3D重建的任务。

他们采用BLIP模型生成纹理描述,用SAM模型提取图像中的物体,然后利用文本→图像的扩散模型Stable Diffusion将物体放置到Nerf(神经辐射场)中。在后续的实验中,Anything-3D展示出了其强大的三维重建的能力。不仅准确,适用面也非常广泛。Anything-3D在解决现有方法的局限这方面,效果明显。研究人员通过对各类数据集的测验和评估,展示了这种新框架的优点。

上图中,我们可以看到,「柯基吐舌头千里奔袭图」、「银翅女神像委身豪车图」,以及「田野棕牛头戴蓝绳图」。这是一个初步展示,Anything-3D框架能够熟练地把在任意的环境中拍摄的单视角图像中恢复成的3D的形态,并生成纹理。尽管相机视角和物体属性有很大的变化,但这种新框架始终能提供准确性较高的结果。要知道,从2D图像中重建3D物体是计算机视觉领域课题的核心,对机器人、自动驾驶、增强现实、虚拟现实,以及三维打印等领域都有巨大影响。虽说这几年来取得了一些不错的进展,但在非结构化环境中进行单图像物体重建的任务仍然是一个具有很大吸引力且亟待解决的问题。目前,研究人员的任务就是从一张单一的二维图像中生成一个或多个物体的三维表示,表示方法包括点云、网格或体积表示。然而,这个问题从根本上来说并不成立。由于二维投影所产生的内在模糊性,不可能明确地确定一个物体的三维结构。再加上形状、大小、纹理和外观的巨大差异,重建自然环境下的物体非常复杂。此外,现实世界图像中的物体经常会被遮挡,这就会阻碍被遮挡部分的精准重建。同时,光照和阴影等变量也会极大地影响物体的外观,而角度和距离的不同也会导致二维投影的明显变化。困难说够了,Anything-3D可以出场了。论文中,研究人员详细介绍了这个开创性的系统框架,将视觉语言模型和物体分割模型融合在一起,轻轻松松就能把2D物体搞成3D的。这样,一个功能强大、自适应能力强的系统就成了。单视图重建?Easy.研究人员表示,将这两种模型结合,就可以检索并确定出给定图像的三维纹理和几何形状。Anything-3D先用SAM模型识别物体的分布区域,在利用BLIP模型(Bootstrapping语言-图像模型)预训练对图像的文本描述。接下来,利用分割出来的物体和文本描述来执行3D重建任务。换句话说,该论文利用预先训练好的2D文本→图像扩散模型来进行图像的3D合成。此外,研究人员用分数蒸馏来训练一个专门用于图像的Nerf.

上图就是生成3D图像的全过程。左上角是2D原图,先经过SAM,分割出柯基,再经过BLIP,生成文本描述,然后再用分数蒸馏搞个Nerf出来。通过对不同数据集的严格实验,研究人员展示了这种方法的有效性和自适应性,同时,在准确性、稳健性和概括能力方面都超过了现有的方法。研究人员还对自然环境中3D物体重建中已有的挑战进行了全面深入地分析,探讨了新框架如何解决此类问题。最终,通过将基础模型中的零距离视觉和语言理解能力相融合,新框架更能从真实世界的各类图像中重建物体,生成精确、复杂、适用面广的3D表示。可以说,Anything-3D是3D物体重建领域的一个重大突破。

这个新框架可以交互式地识别单视角图像中的区域,并用优化的文本嵌入来表示2D物体。最终,使用一个3D感知的分数蒸馏模型有效地生成高质量的3D物体。总之,Anything-3D展示了从单视角图像中重建自然3D物体的潜力。研究者称,新框架3D重建的质量还可以更完美,研究人员正在不断努力提高生成的质量。此外,研究人员表示,目前没有提供3D数据集的定量评估,如新的视图合成和误差重建,但在未来的工作迭代中会纳入这些内容。同时,研究人员的最终目标是扩大这个框架,以适应更多的实际情况,包括稀疏视图下的对象恢复。

AvatarCLIP: Zero-Shot Text-Driven Generation and Animation of 3D Avatars

AvatarCLIP:仅用自然语言驱动实现制作3D avatar动画

1. 论文和代码地址

论文地址:https://arxiv.org/abs/2205.08535

代码地址:https://github.com/hongfz16/AvatarCLIP

2. 动机

3D avatar生成在数字时代有至关重要的作用,一般而言,创建一个3Davatar需要创建一个人物形象、绘制纹理、建立骨架并使用捕捉到的动作对其进行驱动。无论哪一个步骤都需要专业人才、大量时间和昂贵的设备,为了让这项技术面向大众,本文提出了AvatarCLIP,一个zero-shot文本驱动的3Davatar生成和动画化的框架。与专业的制作软件不同,这个模型不需要专业知识,仅仅通过自然语言就可以生成想要的avatar。本文主要是利用了大规模的视觉语言预训练模型CLIP来监督人体的生成,包括几何形状、纹理和动画。使用shapeVAE来初始化人类几何形状,进一步进行体渲染,接着进行几何雕刻和纹理生成,利用motionVAE得到运动先验来生成三维动画

3. 方法

3.1模型概述

下图展示了AvatarCLIP的框架,模型分为两个部分,上面的部分是生成静态的avatar,下面的部分是生成动作。

模型的输入是自然语言描述,body描述、外观描述和动作描述,模型的输出包括一个动画的3Davatar,以及一系列想要的poses。

静态avatar生成分为四步,首先根据SMPL的模板和语言提示初始化Mesh,接下来用NeuS提取mesh的隐式表示,然后使用隐式表示来构建形状和生成纹理,最后进行动画化。motion生成首先生成备选姿势,然后基于备选姿势生成动作序列。最后将动作做序列融入到动画中。

3.2静态avatar生成

3.2.1coarse shape mesh 生成

作为生成虚拟形象的第一步,生成一个粗糙的模板mesh。SMPL 被用作可能的人体形状的来源。如图 3 所示,首先通过对身体形状进行聚类来构建code-book。然后使用CLIP提取code-book和文本中身体形状渲染的特征,以获得最佳匹配的身体形状。

SMPL是通过主成分分析学习的,所以聚类的分布不均衡。通过训练一个shapeVAE,在VAE的隐空间使用K-Means聚类,来实现分类均匀的目的。对于CLIP引导的code-book查询,定义了一个中性状态的身体形状 以及相应的中性状态文本 作为参考。每个条目的得分 在code-book中定义为

最终选择si最大的mesh 作为输出。

3.2.2隐式表达

为了生成高质量的 3D avatar,形状和纹理需要进一步塑造和生成以匹配外观 app 的描述。如前所述,我们选择使用隐式表示,即 Neus,作为此步骤中的基本 3D 表示,因为它在几何和颜色上都具有优势。为了加速优化和控制形状生成,更方便生成动画,所以需要先将生成的粗糙mesh shape转化为隐式表示。

通过使用模板mesh 的多视图渲染{ }优化随机初始化的NeuS 来创建 的等效隐式表示。具体来说,如图4所示,NeuS = { ( ), ( )} 由两个子网组成。SDF网络 ( )以一定点 作为输入,输出与其最近的表面有符号距离。颜色网络 ( )以点 为输入,输出颜色。 ( ) 和 ( ) 都是使用 MLP 实现的。需要注意的是,与NeuS的原始实现相比,这里省略了颜色网络对观看方向的依赖。

视图方向依赖性最初设计用于对视角变化的阴影进行建模。在我们的例子中,对此类阴影效应进行建模是多余的,因为我们的目标是生成具有一致文本的 3D avatar,与原始设计类似, 由三部分损失函数优化:

color是渲染图和ground truth之间的重建损失 reg是SDF正则化的损失 mask是仅仅重建前景的损失

3.2.3形状构建+纹理生成

通过CLIP风格化初始的NeuS N,粗糙的形状 仍应保持,所以通过保留了原来的两个子网络 ( ) 和 ( ) 并引入额外的彩色网络 ( ). 两个颜色网络共享同一SDF网络 ( ) 如图5所示。 ( )和 ( ) 负责模板网格的重建 . ( ) 连同 ( ) 负责风格化部分,并且包括目标隐式3D化身。

形式上,新的NeuS模型 ′ = { ( ), ( ), ( )} 现在由三个子网络组成,其中 ( ) 和 ( ) 由预先培训的 , 和 ( )是随机初始化的颜色网络。

损失函数如下

没有纹理的渲染中颜色是不需要的,我们简单的计算一个灰度的光线通过:

其中A服从一个均匀分布,并随机采样,D= 1-A。通过上面的式子应用到一张图片的每一个像素中,我们可以得到没有纹理渲染的图片。

在实践中,我们发现纹理渲染上的随机着色 有利于生成纹理的均匀性,这将在消融研究中稍后讨论。随机着色打开 类似于无纹理渲染,其正式定义为

上面两种渲染过程的损失函数就损失函数的后两项,定义为:

3.2.4 增强过程

为了增强优化过程的鲁棒性,使用了三种增强手段:背景随机增强;随机相机参数采样;文本提示语义增强。

随机背景增强,使得CLIP能更加focus on 需要生成的对象上,本文采用了图六中展示的背景增强的手段。

为了防止网络找到仅为几个固定相机位置提供合理渲染的捷径解决方案,我们以手动定义的重要性采样方式对每个优化迭代的相机外部参数进行随机采样,以获得更连贯和平滑的结果。我们选择使用相机的“注视”模式,该模式由注视点、相机位置和向上方向组成。

向上的方向一般是人体向上的方向,注视点采用随机采样的方法,相机位置使用半径为 从均匀分布U(1,2)采样,极角 从均匀分布U(0,2 ), 方位角 从高斯分布N(0, /3)采样,使得相机在大多数迭代中指向化身的前方。

到目前为止,在整个优化过程中没有引入人类先验,这可能会导致在错误的身体部位生成纹理或不为重要的身体部位创建纹理,这将在稍后的消融研究中显示。为了防止此类问题,我们建议通过以语义感知的方式增强提示,在优化过程中明确引入人类先验。例如,如图7所示,如果 app=“乔布斯”,我们将增加 应用到两个附加提示 face=“史蒂夫·乔布斯的脸”和 back=“史蒂夫·乔布斯的背影”。对于每四次迭代,相机的注视点被设置为面部的中心,以获得面部的渲染,这将由提示进行监督 面对“面部增强”直接监督面部的生成,这对生成的化身的质量很重要,因为人类对面部更敏感。对于第二增强提示, back被用作相应的文本,以明确地指导化身背部的生成。

3.2.5动画生成

首先,中每个顶点的最近邻居 在模板网格的顶点中检索 . 混合中每个顶点的权重 从中最近的顶点复制 . 其次,使用反向LBS算法来带来avatar的站立姿势 站回零姿势 0。顶点 被转换为 0 . 最后 0可以由任何姿势驱动 使用LBS算法。因此,对于任何姿势,动画avatar都可以正式定义为:

LBS算法是线性混合蒙皮,用户在几何模型给上选择一系列控制单元,并计算几何模型受这些控制单元的影响权重,用户拖动控制单元,几何模型随着控制单元发生对应的变化。

3.3motion 生成

根据经验,CLIP不能直接估计运动序列和自然语言描述之间的相似性。它也缺乏评估运动序列的平滑性或合理性的能力。这两个限制表明,仅使用CLIP监督很难生成运动。因此,必须引入其他模块来提供运动先验。然而,CLIP能够评估渲染的人体姿势和描述之间的相似性。此外,类似的姿势可以被视为预期运动的参考。基于以上观察,我们提出了一个两阶段运动生成过程:1)由CLIP引导的候选姿态生成。2) 使用具有候选姿势作为参考的运动先验来生成运动序列。

3.3.1生成candidate pose

我们首先从AMASS数据集创建code-book。为了减少维度,VPoser用于将姿势编码为 ∈ R ,然乎使用K-Means聚类来建立code-book Bz,每一个Bz然后通过解码器解码为一些列的姿势 。

给定的文本描述 运动,每个姿势特征 从代码本中计算与文本特征的相似度 , 其用于选择Top-K条目作为候选姿势。

3.3.2motion VAE

本文提出了一种双重方法来生成与运动描述匹配的目标运动序列 运动

1) motionVAE被训练以捕获人类运动先验。

2) 我们使用候选姿态优化motion VAE的潜在代码 作为参考。

motion VAE包含encoder、decoder和重参数模块。

encoder模块包括projection layer、positional embedding layer 、几个transformer encoder块和output layer。输出等于

重参数模块生成一个高斯分布,两个全连接层分别计算均值和方差

随机潜在编码z从得到的高斯分布中采样,潜在编码通过decoder解码得到motion序列

训练motion VAE过程中的损失函数定义为:

3.3.3生成运动序列

使用预训练的motion VAE,我们尝试优化其潜在代码 以合成运动序列 Θ = motion ( )。提出了三个优化约束:

Lpose 是解码后的动作序列 Θ 和候选姿势 之间的重构项。给定参考带来 = { 1, 2,., },目标是构建一个与这些姿势足够接近的动作序列。我们建议最小化 与其最近的帧Θ 之间的距离,其中 ∈ {1, 2,., } 和 ∈ {1, 2,., }。形式上,重建损失定义为

根据经验,仅使用重建损失 Lpose,生成的运动往往是过度平滑的。Ldelta 测量运动的范围,以防止运动过于平滑。作为对过度平滑运动的惩罚项。在增加 λ6 时会产生更强烈的运动。

L clips 鼓励运动中的每个单一姿势匹配输入运动描述。缺乏对姿势排序的监督将导致不稳定的生成结果。此外,候选姿势可能只对最终运动序列的一小部分有贡献,这将导致意外的运动片段。为了解决这两个问题,我们设计了一个附加的CLIP引导损失项:

是姿势Θ和文本描述之间的相似度得分。 clip ( ) = 是一个单调递增的函数,因此 L clip 对序列中的后面姿势给予更高的惩罚。通过上述 CLIP 引导的术语,整个运动序列将与运动更加一致。

4.实验

4.1总体结果

上图展示了具有多种身体形状,外观多样,质量高。它们由生成的与输入描述合理且一致的运动序列驱动。在zero-shot style中,AvatarClip 能够生成avatar和动作并且动画化,利用预训练模型中的先验信息。最初需要专业软件专家知识的化身生成和动画的整个过程现在可以在我们提出的模型帮助下简单地由自然语言驱动。

4.2Avatar 生成

4.2.1消融实验

1)背景增强的设计

2)低纹理渲染的监督

3)纹理渲染的随机阴影

4)语义感知提示增强。

图12所示的消融设置是通过随后将上述四种设计添加到baseline中形成的。如图12的前两列所示,背景增强对纹理生成有很大影响,如果没有背景增强,纹理会变得非常暗。比较第二列和第三列,添加对无纹理渲染的监督可以大大提高几何体质量。“消融2”的几何结构有很多随机凸起,这会使表面产生噪音。而“消融3”的几何结构是光滑的,并有详细的衣服褶皱。如“消融3”和“消融4”所示,在纹理渲染图上添加随机阴影有助于生成更均匀的纹理。例如,《消融3》中的“唐纳德·特朗普”上身比下身更亮,这在《消融4》中有所改进。如果没有人体语义的意识,前面的四个设置无法为化身生成正确的面部。最后一列使用语义感知提示增强,在面部生成方面具有最佳结果。

4.2.2coarse shape 生成

对于这一部分,我们设计了两种直观的基线方法,(i)SMPL上的直接优化 (ii)VAE潜在空间上的直接优化。如图13(a)所示,两种优化方法都无法生成与描述文本一致的身体形状。即使是相反的文本指导(例如“kinny”和“overweight”)也会导致相同的优化方向。相比之下,我们的方法稳健地生成与输入文本一致的合理身体形状。我们方法的更多样的定性结果如图13(b)所示。

4.2.3形状雕刻和纹理生成的定性结果

广泛的驾驶文本。在广泛的实验中,我们的方法能够从广泛的外观描述中生成化身,包括三种类型:1)名人,2)虚构人物和3)描述人的一般词语,如图17所示。如图17(a)所示,给定名人姓名作为外观描述,生成了名人最具标志性的服装。由于我们的语义感知提示增强设计,人脸也能正确生成。对于图17(b)所示的虚构角色生成,可以正确生成大多数文本描述的化身。有趣的是,对于具有复杂几何形状的配件的角色(例如“蝙蝠侠”的头盔、“艾尔莎”的服装),优化过程有从模板人体中“生长”出新结构的趋势。至于一般描述,我们的方法可以处理非常广泛的范围,包括常见的工作名称(例如“教授”、“医生”)、描述某个年龄段的人的词语(例如“青少年”、“老年公民”)和其他幻想职业(如“女巫”、“巫师”)。可以观察到,除了化身本身之外,还可以生成它们各自的标志性对象。例如,“园丁”用手抓花和草。

尽管上面实验和演示了大量的生成结果,但在生成宽松服装和配饰时仍存在失败案例。例如,如图17所示,“艾尔莎”的服装和“奇异博士”的斗篷并没有生成。夸张的头发和胡须(如裹着面包的阿甘)的几何形状也很难正确生成。这是由优化过程中的重建损失引起的。不鼓励“生长”,允许对几何结构进行非常有限的更改。

Zero-Shot Controlling Ability:如图18所示,我们可以通过调整语义感知提示增强来控制化身上生成的人脸,例如,比尔·盖茨穿着钢铁侠套装。此外,我们可以通过直接的文本指导来控制化身的服装,例如“穿着白衬衫的史蒂夫·乔布斯”。

Concept Mixing:如图14所示,我们展示了将奇幻元素与名人混合的示例。在保持可识别身份的同时,奇幻元素与avatar自然融合。

Geometry Quality:低纹理渲染监督的关键设计主要有助于几何生成。我们主要将AvatarCLIP与基于NeRF的改编的Dream Field进行比较。如图19所示,我们的方法在几何质量方面始终优于Dream Fields。可以生成详细的肌肉形状、盔甲曲线和布料褶皱。

除了生成质量,我们还研究了我们算法的鲁棒性与baseline Text2Mesh相比。对于每种方法,我们都使用相同的五个随机种子,对同一提示进行五次独立运行。如图20所示,我们的方法能够以高质量和与输入文本一致的方式输出结果。Text2Mesh在大多数运行中失败,这表明网格的表示对于优化是不稳定的,尤其是在监督薄弱的情况下。

4.3 motion生成

4.3.1消融实验

为了评估我们在基于参考的动画模块中的设计选择的有效性(即提出的三个约束项,运动VAE作为运动先验的使用),我们将我们的方法与两个基线方法进行了比较,如图21所示。

对于“刷牙”,(i)生成无序和不相关的姿势序列。(ii)也未能生成合理的运动,这是由于其盲目地关注于重建无序的候选姿势所导致的。通过引入重新加权机制,我们的方法不仅关注重建,还考虑了生成的运动的合理性。

对于“踢足球”,当腿踢出时,(i)(ii)中的动作序列没有剧烈变化。Ldelta在控制运动强度方面起着重要作用。至于“举起双臂”,它应该生成一个从中立姿势到举起手臂的姿势的运动序列。然而,(i)生成与预期结果相反的运动序列。(ii)引入若干不相关的行动。在Lclipm,我们的方法能够以正确的顺序和更好的描述一致性生成运动。

此外,受应聘者姿势多样性的限制,要想做出更复杂的动作,比如“拥抱”、“弹钢琴”和“运球”,是一件很有挑战性的事情。

4.3.2与baseline对比

将三种baseline方法与我们的方法进行比较。baseline(I)直接对SMPL参数θ进行优化。基线(II)直接在VPoser的潜在空间上进行优化。这两种方法都很难产生合理的姿势。Baseline(III)在VPoster中使用了多通道Real NVP,在正太分布和潜在空间分布中得到双向映射,它可以生成相对合理的姿势,但仍然明显比我们的方法差。

如图22(b)展示了广泛的驱动文本。为了证明姿势生成方法的zero-能力,我们用四类运动描述进行了实验:1)抽象的情绪描述(例如“疲惫”和“悲伤”);2) 常见动作描述(如“行走”和“蹲下”);3) 与身体部位相关的运动描述(例如“举起双臂”、“洗手”)4)涉及与物体交互的运动(例如“投篮”)。

5. 总结

为了外行人也可以实现原来复杂的3D avatar创建的目的,本文提出了AvatarCLIP。本文的模型主要依赖于大规模预训练模型VAE——包括了形状和动作先验,以及大型可泛化的视觉语言预训练模型CLIP。并且通过一系列的实验证明了模型的有效性和效率。

但是在形象创建的过程中,受到CLIP的弱监督和低分辨率的影响,生成的结果在放大之后并不是完美的。此外,在给定相同的prompt的,要产生有较大区别的形象是比较困难的。因为,优化方向是相同的,所以导致了不同的提示产生相同的结果。在动作合成阶段,受code-book设计的限制,很难产生分布外的候选姿态,这限制了产生复杂运动的能力。此外,由于缺乏video CLIP,很难生成风格化的运动。

对于预训练模型的使用,会造成许多道德问题,比如,医生对应的生成是男性, 而护士对应的生成是女性,这会造成性别歧视的问题。为了安全地使用zero-shot技术,需要开展关于大规模预训练模型的伦理问题的未来工作。此外,随着头像和动画制作的普及,用户可以很容易地制作出名人的假视频,这可能会被滥用,造成负面的社会影响。

Lama:《Resolution-robust Large Mask Inpainting with Fourier Convolutions》解读及实操

最近任务需求跟图像inpainting相关,因此调研使用了多个较新的开源模型,例如crfill、RePaint、Lama等。综合比较之下Lama的速度、效果都是最佳的,并且支持自定义输入尺寸进行推理(而非必须固定输入尺寸)。因此结合Lama论文进行实操,记录如下。

一、总体方法 & 创新点

1、总体方法流程:

对于输入原图 x ,使用一个二进制掩膜 进行遮罩 x  m ,形成一个四通道的输入tensor :

x′ = stack(x  m, m)

再使用一个前向infer网络(·)(也是一个生成器),以全卷积方式修复获得一个三通道彩色图像。

训练过程也是基于“图像与掩膜”这样的pair数据进行的。

2、创新点:

1)旧有方法都不具备足够广泛的感受野,因此对于大分辨率的图像或是大范围的inpainting而言,很容易会被局部附近的细节或干脆是mask所影响导致效果差。因此Lama考虑让模型在网络初始阶段就拥有更大的感受野,提出了基于快速傅立叶卷积(FFC)构造的网络结构。

2)损失函数:利用预训练分割网络进行特征提取实现损失函数构建,服务于大感受野和大掩膜

3)mask生成方法:动态的生成大掩膜,实现类似数据增强的效果

二、具体方法

1、Baseline:

图像与掩膜组成pair对输入网络并经过下采样后,进入FFC残差块。

在FFC块中,输入tensor被划分为两个分支进行运算。Local分支使用常规卷积;Global分支使用Real FFT进行全局上下文关注。其中在Global分支中经历了Real FFT2d和Inverse Real FFT2d的操作,实现了图像重建,具体张量变化看见论文2.1中的a)、 b)、c)。在FFC的输出中两分支进行结果合并。

2、损失函数

首先需要明确的是,对一个被掩膜遮盖的区域其实可以有多种合理的填充结果,就像口罩下的长相谁也无法准确预测。所以一旦掩膜变大,那么loss就必须被更加合理地设置以避免不符合事物逻辑的生成。

1)高感受野知觉损失 HRFPL

HRFPL

HRFPL是通过预训练的基础网络对输入图像x和生成图像x尖进行特征相似的计算。具体来说是使用空洞卷积或傅立叶卷积构建的HRF进行逐像素计算,然后M代表两阶段均值操作,即先取同层均值再取层间均值。

作者认为选取一个合适的预训练网络对于 HRFPL的效果至关重要。例如分类网络更关注局部的细节纹理,而难以理解全局的结构信息,缺乏对整体的认知。而分割模型则相反,具有更好的效果。

2)对抗损失

作者定义了一个在局部补丁级别上工作的鉴别器Dξ(·),用于区分“真实”和“虚假”补丁。对于输入pair对中的原图和掩膜图片,将原图上被掩膜覆盖的区域标记为“real”标签,将生成图片上对应区域标记为“fake”标签。

对抗损失

3)总体损失

在总体损失中,作者还使用

进行梯度惩罚,和基于识别器的感知实际损失或所谓的特征匹配损失-感知鉴别器网络LDiscPL的特征损失。众所周知,LDiscPL可以稳定训练,在某些情况下性能略有提高。

总体损失

LAdv和LDiscPL负责生成自然外观当地细节,而LHRFPL负责监督全局结构的信号和一致性。

3、训练中的动态掩膜生成

作者认为掩膜的生成类似于数据增强,对模型的效果非常重要。作者采取了多种大掩膜生成方式,但也同时注意避免生成大于原始图像50%的掩膜。

掩膜生成方式

三、实验与数据

训练使用Places和CelebA进行。下图结果中与其他模型在不同大小的掩膜上进行了对比,红色箭头代表表现逊于Lama,绿色则表示优于Lama。可以看到Lama在少参数量的情况下效果基本达到最优。

消融实验也证明了FFC在大掩膜上的效果。

论文还提供了大量实验细节,感兴趣的请查看原文。

四、使用记录

官方开源的模型中提供了一个名为Big-Lama的模型权重,效果最优。因为相比普通Lama,其生成器结构更复杂、训练数据规模更大。该模型是根据来自Places Challenge数据集的4.5M张图像的子集进行训练的,在八台NVidia V100 GPU上接受了约240小时的train。

我在Big-Lama上对infer refine的参数、mask生成方式做了反复测试,直观感受是其修复效果在其较快的infer速度上的确已经相当不错。同时我也尝试在训练中修改了mask的动态生成策略,实现了自定义mask生成来贴合我的任务场景,但考虑到训练成本尚未进行大规模训练,欢迎大家交流。

Inpaint Anything: Segment Anything Meets Image Inpainting

  • 论文链接:http://arxiv.org/abs/2304.06790
  • 代码库链接:https://github.com/geekyutao/Inpaint-Anything

4 月初,Meta 发布了史上首个图像分割基础模型–SAM(Segment Anything Model)。作为分割模型,SAM 的能力强大,操作使用方式也十分友好,比如用户简单地点击来选择对应物体,物体就会立即被分割出来,且分割结果十分精准。截至 4 月 15 号,SAM 的 GitHub 仓库的 Star 数高达 26k。

如何利用好如此强大的「分割一切」模型,并拓展到更加有实际需求的应用场景至关重要。例如,当 SAM 遇上实用的图像修补(Image Inpainting)任务会碰撞出什么样的火花?

来自中国科学技术大学和东方理工高等研究院的研究团队给出了令人惊艳的答案。基于 SAM,他们提出「修补一切」(Inpaint Anything,简称 IA)模型。区别于传统图像修补模型,IA 模型无需精细化操作生成掩码,支持了一键点击标记选定对象,IA 即可实现移除一切物体(Remove Anything)、填补一切内容(Fill Anything)、替换一切场景(Replace Anything),涵盖了包括目标移除、目标填充、背景替换等在内的多种典型图像修补应用场景。

主要功能:

尽管当前图像修补系统取得了重大进展,但它们在选择掩码图和填补空洞方面仍然面临困难。基于 SAM,研究者首次尝试无需掩码(Mask-Free)图像修复,并构建了「点击再填充」(Clicking and Filling) 的图像修补新范式,他们将其称为修补一切 (Inpaint Anything)(IA)。IA 背后的核心思想是结合不同模型的优势,以建立一个功能强大且用户友好的图像修复系统

IA 拥有三个主要功能:(i) 移除一切(Remove Anything):用户只需点击一下想要移除的物体,IA 将无痕地移除该物体,实现高效「魔法消除」;(ii) 填补一切(Fill Anything):同时,用户还可以进一步通过文本提示(Text Prompt)告诉 IA 想要在物体内填充什么,IA 随即通过驱动已嵌入的 AIGC(AI-Generated Content)模型(如 Stable Diffusion )生成相应的内容填充物体,实现随心「内容创作」;(iii) 替换一切(Replace Anything):用户也可以通过点击选择需要保留的物体对象,并用文本提示告诉 IA 想要把物体的背景替换成什么,即可将物体背景替换为指定内容,实现生动「环境转换」。IA 的整体框架如下图所示:

Inpaint Anything(IA)示意图。用户可以通过单击来选择图像中的任何物体。借助强大的视觉模型,如 SAM、LaMa 和 Stable Diffusion (SD) ,IA 能够平滑移除选定物体(即 Remove Anything)。进一步地,通过向 IA 输入文本提示,用户可以用任何想要的内容填充物体(即 Fill Anything)或者任意替换对象的物体(即 Replace Anything)

移除一切(Remove Anything)示意图

 「移除一切」步骤如下:

  • 第 1 步:用户点击想要移除的物体;
  • 第 2 步:SAM 将该物体分割出来;
  • 第 3 步:图像修补模型(LaMa)填补该物体。

填补一切

Text prompt: “a teddy bear on a bench”

image

Click on an object, type in what you want to fill, and Inpaint Anything will fill it!

  • Click on an object;
  • SAM segments the object out;
  • Input a text prompt;
  • Text-prompt-guided inpainting models (e.g., Stable Diffusion) fill the “hole” according to the text.

「填补一切」步骤如下:

  • 第 1 步:用户点击想要移除的物体;
  • 第 2 步:SAM 将该物体分割出来;
  • 第 3 步:用户通过文本示意想要填充的内容;
  • 第 4 步:基于文本提示的图像修补模型(Stable Diffusion)根据用户提供的文本对物体进行填充。

替换一切

替换一切(Replace Anything)示意图,图中使用的文本提示:a man in office

「填补一切」步骤如下:

  • 第 1 步:用户点击想要移除的物体;
  • 第 2 步:SAM 将该物体分割出来;
  • 第 3 步:用户通过文本示意想要替换的背景;
  • 第 4 步:基于文本提示的图像修补模型(Stable Diffusion)根据用户提供的文本对物体的背景进行替换。

Text prompt: “a man in office”

image

Click on an object, type in what background you want to replace, and Inpaint Anything will replace it!

  • Click on an object;
  • SAM segments the object out;
  • Input a text prompt;
  • Text-prompt-guided inpainting models (e.g., Stable Diffusion) replace the background according to the text.

Remove Anything 3D

Remove Anything 3D can remove any object from a 3D scene! We release some results below.

org.gif
mask.gif
result.gif

研究者随后在 COCO 数据集、LaMa 测试数据集和他们自己用手机拍摄的 2K 高清图像上对 Inpaint Anything 进行测试。值得注意的是,研究者的模型还支持 2K 高清图和任意长宽比,这使得 IA 系统在各种集成环境和现有框架中都能够实现高效的迁移应用

Segment Everything Everywhere All at Once

论文链接:https://arxiv.org/pdf/2304.06718.pdf

项目链接:https://github.com/UX-Decoder/Segment-Everything-Everywhere-All-At-Once

试玩地址:https://huggingface.co/spaces/xdecoder/SEEM

Meta 发布「分割一切」AI 模型 ——Segment Anything Model(SAM)。SAM 被认为是一个通用的图像分割基础模型,它学会了关于物体的一般概念,可以为任何图像或视频中的任何物体生成 mask,包括在训练过程中没有遇到过的物体和图像类型。这种「零样本迁移」的能力令人惊叹,甚至有人称 CV 领域迎来了「GPT-3 时刻」。

最近,一篇「一次性分割一切」的新论文《Segment Everything Everywhere All at Once》再次引起关注。在该论文中,来自威斯康星大学麦迪逊分校、微软、香港科技大学的几位华人研究者提出了一种基于 prompt 的新型交互模型 SEEM。SEEM 能够根据用户给出的各种模态的输入(包括文本、图像、涂鸦等等),一次性分割图像或视频中的所有内容,并识别出物体类别。该项目已经开源,并提供了试玩地址供大家体验。

该研究通过全面的实验验证了 SEEM 在各种分割任务上的有效性。即使 SEEM 不具有了解用户意图的能力,但它表现出强大的泛化能力,因为它学会了在统一的表征空间中编写不同类型的 prompt。此外,SEEM 可以通过轻量级的 prompt 解码器有效地处理多轮交互。

大型语言模型 (Large Language Model, LLMs) 的成功,如 ChatGPT,证明了现代人工智能模型在与人类互动中的重要性,并提供了人工通用智能 (AGI) 的一瞥。与人类互动的能力需要一个用户友好的界面,可以接受尽可能多类型的人类输入,并生成人类容易理解的响应。在自然语言处理 (NLP) 领域,这样的通用交互界面已经出现并发展了一段时间,从早期的模型如 GPT 和 T5,到一些更高级的技术,如提示和思维链。在图像生成领域,一些最近的工作尝试将文本提示与其他类型,如草图或布局相结合,以更准确地捕捉用户意图,生成新的提示并支持多轮人工智能交互。

本文提出了一种通用的提示方案,可以通过多种类型的提示(如文本、点击、图像)与用户交互,进而构建一个通用的 “分割一切” 的模型 SEEM。该模型采用 Transformer 编码器-解码器结构,将所有查询作为提示输入到解码器中,并使用图像和文本编码器作为提示编码器来编码所有类型的查询,从而使视觉和文本提示始终保持对齐。

此外,该模型还引入了记忆提示来缩减以前的分割信息,并与其他提示进行通信,以增强互动性。与 SAM 等其他工作不同的是,该模型支持多种提示类型,具有零样本泛化能力。实验结果表明,SEEM 在许多分割任务中具有强大的性能,包括封闭集和开放集全景分割、交互式分割、接地分割以及使用多种提示的分割任务。

在变形金刚的合影中把「擎天柱」分割出来:

图片

还能对一类物体做分割,比如在一张景观图片中分割出所有建筑物:

图片

SEEM 也能轻松分割出视频中移动的物体:

图片

这个分割效果可以说是非常丝滑了。我们来看一下该研究提出的方法。

方法概述

该研究旨在提出一个通用接口,以借助多模态 prompt 进行图像分割。为了实现这一目标,他们提出了一种包含 4 个属性的新方案,包括多功能性(versatility)、组合性(compositionality)、交互性(interactivity)和语义感知能力(semantic-awareness),具体包括

1)多功能性该研究提出将点、掩码、文本、检测框(box)甚至是另一个图像的参考区域(referred region)这些异构的元素,编码成同一个联合视觉语义空间中的 prompt。

2)组合性通过学习视觉和文本 prompt 的联合视觉语义空间来即时编写查询以进行推理。SEEM 可以处理输入 prompt 的任意组合。

3)交互性:该研究引入了通过结合可学习的记忆(memory) prompt,并通过掩码指导的交叉注意力保留对话历史信息。

4)语义感知能力:使用文本编码器对文本查询和掩码标签进行编码,从而为所有输出分割结果提供了开放集语义。

架构方面,SEEM 遵循一个简单的 Transformer 编码器 – 解码器架构,并额外添加了一个文本编码器。在 SEEM 中,解码过程类似于生成式 LLM,但具有多模态输入和多模态输出。所有查询都作为 prompt 反馈到解码器,图像和文本编码器用作 prompt 编码器来编码所有类型的查询。

具体来说,该研究将所有查询(如点、框和掩码)编码为视觉 prompt,同时使用文本编码器将文本查询转换为文本 prompt,这样视觉和文本 prompt 就能保持对齐。5 种不同类型的 prompt 都能都映射到联合视觉语义空间中,通过零样本适应来处理未见过的用户 prompt。通过对不同的分割任务进行训练,模型具有处理各种 prompt 的能力。此外,不同类型的 prompt 可以借助交叉注意力互相辅助。最终,SEEM 模型可以使用各种 prompt 来获得卓越的分割结果。

除了强大的泛化能力,SEEM 在运行方面也很高效。研究人员将 prompt 作为解码器的输入,因此在与人类进行多轮交互时,SEEM 只需要在最开始运行一次特征提取器。在每次迭代中,只需要使用新的 prompt 再次运行一个轻量级的解码器。因此,在部署模型时,参数量大运行负担重的特征提取器可以在服务器上运行,而在用户的机器上仅运行相对轻量级的解码器,以缓解多次远程调用中的网络延迟问题。

如上图 3(b)所示,在多轮交互中,每次交互包含一个人工循环和一个模型循环。在人工循环中,人接收上一次迭代的掩码输出,并通过视觉 prompt 给出下一轮解码的正反馈或负反馈。在模型循环中,模型接收并更新记忆 prompt 供未来的预测。

SEEM 是一种采用通用编码器-解码器架构的模型, 但具有复杂的查询和提示交互, 如图3(a) 所示。给定输入图像 , 首先使用图像编码器提取图像特征 , 然后 SEEM 解码器基于与视觉、文本和记忆提示、 交互的查询输出  来预测掩模  和语义概念 。

在训练期间,  被复制用于全景分割、指代分割和交互分割。

在推断时,可学习的查询从相同的权重集合初始化,从而实现 zero-shot 组合。这种设计受到 X-Decoder 的成功实践的启发,但不同之处是,这允许使用具有以下属性的通用图像分割模型:

多功能

除了文本输入外,SEEM 还引入了视觉提示来处理所有的非文本输入,例如点、框、涂鸦和另一幅图像的区域引用等。

当文本提示无法准确识别正确的分割区域时,非文本提示就能够提供有用的补充信息,帮助准确定位分割区域。 以往的交互式分割方法通常将空间查询转换为掩模,然后将它们馈送到图像骨干网络中,或者针对每种输入类型(点、框)使用不同的提示编码器。然而,这些方法存在重量过大或难以泛化的问题。

为了解决这些问题,SEEM 提出了使用视觉提示来统一所有非文本输入。这些视觉提示以令牌的形式统一表示,并位于同一视觉嵌入空间中,这样就可以使用同一种方法来处理所有非文本输入。 为了提取这些视觉提示的特征,该模型还引入了一个称为“视觉采样器”的方法,用于从输入图像或引用图像的特征映射中提取特定位置的特征。

此外,SEEM 还通过全景和引用分割来持续学习通用的视觉-语义空间,使得视觉提示与文本提示能够自然地对齐,从而更好地指导分割过程。在学习语义标签时,提示特征与文本提示映射到相同的空间以计算相似度矩阵,从而更好地协同完成分割任务。

可组合

用户可以使用不同或组合的输入类型表达其意图,因此在实际应用中,组合式提示方法至关重要。

然而,在模型训练时会遇到两个问题。首先,训练数据通常只涵盖一种交互类型(例如,无、文本、视觉)。其次,虽然我们已经使用视觉提示来统一所有非文本提示并将它们与文本提示对齐,但它们的嵌入空间仍然本质上不同。

为了解决这个问题,本文提出了将不同类型的提示与不同的输出进行匹配的方法。在模型训练后,SEEM 模型变得熟悉了所有提示类型,并支持各种组合方式,例如无提示、单提示类型或同时使用视觉和文本提示。值得注意的是,即使是从未像这样训练过的样本,视觉和文本提示也可以简单地连接并馈送到 SEEM 解码器中。

可交互

SEEM 通过引入记忆提示来进行多轮交互式分割,使得分割结果得到进一步优化。记忆提示是用来传递先前迭代中的分割结果,将历史信息编码到模型中,以在当前轮次中使用。

不同于之前的工作使用一个网络来编码掩模,SEEM 采用掩模引导的交叉注意力机制来编码历史信息,这可以更有效地利用分割历史信息来进行下一轮次的优化。值得注意的是,这种方法也可以扩展到同时进行多个对象的交互式分割。

语义感知

与之前的类别无关的交互式分割方法不同,SEEM 将语义标签应用于来自所有类型提示组合的掩码,因为它的视觉提示特征与文本特征在一个联合视觉-语义空间中是对齐的。

在训练过程中,虽然没有为交互式分割训练任何语义标签,但是由于联合视觉-语义空间的存在,掩膜嵌入(mask embeddings)和 视觉取样器 (visual sampler)之间的相似度矩阵可以被计算出来,从而使得计算出的 logits 可以很好的对齐,如图3(a)所示。

这样,在推理过程中,查询图像就可以汇集多个示例的信息。

实验结果

该研究将 SEEM 模型与 SOTA 交互式分割模型进行了实验比较,结果如下表 1 所示。

作为一个通用模型,SEEM 实现了与 RITM,SimpleClick 等模型相当的性能,并且与 SAM 的性能非常接近,而 SAM 用于训练的分割数据是 SEEM 的 50 倍之多。

与现有的交互式模型不同,SEEM 是第一个不仅支持经典分割任务,还支持各种用户输入类型的通用接口,包括文本、点、涂鸦、框和图像,提供强大的组合功能。如下表 2 所示,通过添加可组合的 prompt,SEEM 在 cIoU,mIoU 等指标上有了显著的分割性能提升。

我们再来看一下交互式图像分割的可视化结果。用户只需要画出一个点或简单涂鸦,SEEM 就能提供非常好的分割结果

也可以输入文本,让 SEEM 进行图像分割

还能直接输入参考图像并指出参考区域,对其他图像进行分割,找出与参考区域一致的物体:

Zero-shot video object segmentation using the first frame plus one stroke:

总结

本文介绍了 SEEM,该模型可以同时对所有语义进行全局分割,并且可以与用户互动,接受来自用户的不同类型的视觉提示,包括点击、框选、多边形、涂鸦、文本和参考图像分割。这些提示 (prompt) 通过提示编码器映射到联合视觉-语义空间中,使我们的模型适用于各种提示,并可以灵活地组合不同的提示。通过大量实验证明,该模型在几个开放和交互分割基准测试上表现出竞争力。

当然,SEEM 并不是完美的,其存在的两个主要限制为:训练数据规模有限SEEM 不支持基于部分的分割。我们通过利用更多的训练数据和监督,可以进一步提高模型性能,而基于部分的分割可以在不改变模型的情况下无缝地从中学习。最后,非常感谢 SAM 提出的分割数据集,这是是非常宝贵的资源,我们应该好好利用起来。

Segment Anything

CV的大模型,而且新数据集+新范式+超强零样本泛化能力。

一直觉得CV的大模型可能会像BERT那样,一个处理全部任务,但是其实在CV上并没有这么好的效果。

SAM的出现统一了分割这个任务(CV任务的一个子集)的下流应用,说明了CV的大模型是可能存在的。

其肯定会对CV的研究带来巨大的变革,很多任务会被统一处理,可能再过不久,检测、分割和追踪也会被all in one了。

paper: https://arxiv.org/abs/2304.02643

Code: https://github.com/facebookresearch/segment-anything

Dataset: https://ai.facebook.com/datasets/segment-anything/

Demo的效果非常惊人: https://segment-anything.com/

1. 解决的问题

在网络规模数据集上预训练的大型语言模型正在通过强大的零样本和少样本泛化能力彻底改变NLP。 这些“基础模型”(foundation models)可以泛化到超出训练期间所见的任务和数据分布。此功能通常通过提示工程(prompt engineering)实现,其中使用手工制作的文本来提示语言模型为手头的任务生成有效的文本响应。 当使用来自网络的大量文本语料库进行缩放和训练时,这些模型的零样本和少样本性能与微调模型相比(在某些情况下甚至匹配)出奇地好。经验趋势表明,这种行为会随着模型规模、数据集大小和总训练计算量的增加而改善。

基础模型也在计算机视觉中进行了探索,尽管程度较小。也许最突出的工作是对齐来自网络的成对文本和图像。例如,CLIP 和 ALIGN 使用对比学习来训练对齐两种模式的文本和图像编码器。一旦经过训练,工程化的文本提示就可以零样本泛化到新颖的视觉概念和数据分布。此类编码器还可以与其他模块有效组合,以支持下游任务,例如图像生成(例如,DALL·E)。虽然在视觉和语言编码器方面取得了很大进展,但计算机视觉包括超出此范围的广泛问题,并且对于其中许多问题,并不存在丰富的训练数据。

在这项工作中,作者的目标是建立图像分割的基础模型。 也就是说,寻求开发一个可提示的模型,并使用能够实现强大泛化的任务在广泛的数据集上对其进行预训练。有了这个模型,其目标是使用提示工程解决新数据分布上的一系列下游分割问题。(基础模型是指即在广泛的数据上进行大规模训练,并且是适应广泛的下游任务)

该计划的成功取决于三个组成部分:任务、模型和数据。 为了开发它们,作者解决了以下有关图像分割的问题:

  1. 什么任务可以实现零样本泛化?
  2. 对应的模型架构是怎样的?
  3. 哪些数据可以为这项任务和模型提供支持?

2. 提出的方法

上述错综复杂,需要综合解决。作者首先定义一个可提示的分割任务,该任务足够通用以提供强大的预训练目标并支持广泛的下游应用程序。这个任务需要一个支持灵活提示的模型,并且可以在提示时实时输出分割掩码,以供交互使用。为了训练合格的模型,更是需要多样化、大规模的数据源。

不幸的是,没有用于分割的超大网络规模数据源; 为了解决这个问题,作者构建了一个“数据引擎”,即,在使用本文提出的高效模型来协助数据收集和使用新收集的数据来改进模型之间进行迭代。

2.1 任务:Segment Anything Task

任务:首先将提示(prompt)的概念从 NLP 转化为分割,其中提示可以是一组前景/背景点、粗略的框或掩码(mask)、自由格式的文本,或者一般来说,任何指示要分割内容的信息。 然后,可提示的分割任务是在给定任何提示的情况下返回有效的分割掩码。 “有效”掩码的仅仅意味着即使提示不明确并且可能引用多个对象(例如,回想一下衬衫与人的例子,如下图),输出也应该是至少一个对象的合理掩码。此要求类似于期望语言模型对模棱两可的提示输出连贯的响应。作者选择这个任务是因为它会产生一个自然的预训练算法和一个通过提示将零样本迁移到下游分割任务的通用方法。

预训练:可提示分割任务提出了一种自然的预训练算法,该算法为每个训练样本模拟一系列提示(例如,点、框、掩码),并将模型的掩码预测与标注进行比较。作者从交互式分割中采用这种方法,尽管与交互式分割的目的是在足够的用户输入后最终预测一个有效掩码不同,本文的目标是始终为任何提示预测一个有效掩码,即使提示是模棱两可的。

零样本迁移:直觉上,所提出的预训练任务赋予模型在推理时对任何提示作出适当响应的能力,因此下游任务可以通过设计适当的提示来解决。例如,如果有一个猫的边界框检测器,则可以通过将检测器的框输出作为提示提供给我们的模型来解决猫实例分割。 一般来说,大量实际应用的分割任务都可以建模为提示的形式。

相关任务:分割是一个广泛的领域:有交互式分割、边缘检测、超像素化、对象候选生成、前景分割、语义分割、实例分割、全景分割等。本文可提示分割任务的目标是生成一个功能广泛的模型,可以通过提示工程适应许多(尽管不是全部)现有的和新的分割任务。 这种能力是任务泛化的一种形式,这与之前关于多任务分割系统的工作不同。 在多任务系统中,单个模型执行一组固定的任务,例如联合语义、实例和全景分割,但训练和测试任务是相同的。本文工作中的一个重要区别是,经过提示分割训练的模型可以在推理时通过充当更大系统中的组件来执行新的、不同的任务,例如,为了执行实例分割,可提示分割模型与现有的物体检测器可以结合。

讨论:提示和组合是强大的工具,可以使单个模型以可扩展的方式使用,有可能完成模型设计时未知的任务。 这种方法类似于其他基础模型的使用方式,例如,CLIP 如何成为 DALL·E 图像生成系统的文本图像对齐组件。作者预计,由提示工程等技术提供支持的可组合系统设计将支持比专门为一组固定任务训练的系统更广泛的应用程序。 从组合的角度比较可提示分割和交互式分割也很有趣:虽然交互式分割模型是为人类用户设计的,但为可提示分割训练的模型也可以组合成更大的算法系统。

2.2 模型:Segment Anything Model

可提示的分割任务和现实世界使用的目标对模型架构施加了约束。具体地说,该模型必须支持灵活的提示,需要分摊实时计算掩码以允许交互式使用,并且必须具有歧义识别能力。作者发现一个简单的设计满足所有三个约束:一个强大的图像编码器计算一个图像嵌入,一个提示编码器嵌入提示,然后这两个信息源被组合在一个轻量级掩码解码器中,预测分割掩码。作者将此模型称为 Segment Anything 模型或 SAM。通过将 SAM 分离成一个图像编码器和一个快速提示编码器/掩码解码器,相同的图像嵌入可以在不同的提示下重复使用(及其成本分摊)。给定一个图像嵌入、提示编码器和掩码解码器在 ~50 毫秒的网络浏览器中根据提示预测掩码。 本文专注于点、框和掩码提示,并且还使用自由格式的文本提示呈现初始结果。为了使 SAM 具有歧义意识, 作者将其设计为预测单个提示的多个掩码,从而使 SAM 能够自然地处理歧义。

图像编码器:在可扩展性和强大的预训练方法的推动下,作者使用 MAE 预训练视觉ViT,最低限度地适应处理高分辨率输入。图像编码器每张图像运行一次,可以在提示模型之前应用。

提示编码器:考虑两组提示:稀疏(点、框、文本)和密集(掩码)。作者通过位置编码和每个提示类型的学习嵌入相加来表示点和框,并使用来自 CLIP 的现成文本编码器来表示自由格式文本。 密集提示(即掩码)使用卷积嵌入,并与图像嵌入逐元素求和。

掩码解码器:掩码解码器有效地将图像嵌入、提示嵌入和输出标记映射到掩码。 该设计受 DETR 和 Maskformer 的启发,采用了 Transformer 解码器块的修改,后跟动态掩码预测头。修改后的解码器块在两个方向(提示图像嵌入和反之亦然)使用提示自注意力和交叉注意力来更新所有嵌入。运行两个块后,我们对图像嵌入进行上采样,MLP 将输出标记映射到动态线性分类器,然后计算每个图像位置的蒙版前景概率。

解决歧义:使用一个输出,如果给定一个具有歧义的提示,模型将平均多个有效掩码。为了解决这个问题,作者修改模型以预测单个提示的多个输出掩码。 实验发现 3 个掩码输出足以解决大多数常见情况(嵌套掩码通常最多三个深度:整体、部分和子部分)。在训练期间,仅反向传播掩码的最小损失。为了对掩模进行排名,该模型预测每个掩模的置信度分数(即估计的 IoU)。

效率:整体模型设计很大程度上受效率驱动。 给定一个预先计算的图像嵌入,提示编码器和掩码解码器在 CPU 上的 Web 浏览器中运行,时间约为 50 毫秒。这种运行时性能使模型能够进行无缝、实时的交互式提示。

损失和训练:我们使用 DETR 中使用的焦点损失和骰子损失的线性组合来监督掩码预测。 我们使用混合的几何提示来训练可提示的分割任务。 我们通过在每个掩码 11 轮中随机抽样提示来模拟交互式设置,从而使 SAM 能够无缝集成到我们的数据引擎中。

2.3 数据集:Segment Anything Dataset

SA-1B,由数据引擎收集的 1100 万张多样化、高分辨率、许可和隐私保护图像和 11亿高质量分割掩码组成。 同时,作者开源了 SA-1B 以帮助未来开发计算机视觉基础模型。注意到,SA-1B 将根据一项有利的许可协议发布,用于某些研究用途并保护研究人员。

图片:从直接与摄影师合作的供应商处获得了一组 1100 万张新图片的许可。 这些图像具有高分辨率(平均 3300×4950 像素),由此产生的数据大小可能会带来可访问性和存储方面的挑战。因此,本文将发布最短边设置为 1500 像素的下采样图像。 即使在下采样之后,我们的图像的分辨率也比许多现有的视觉数据集高得多(例如,COCO 图像约为 480×640 像素)。请注意,当今大多数模型都在低得多的分辨率输入上运行。发布的图像中的面部和车辆牌照已经模糊。

掩码:论文所提出的数据引擎产生了 11亿掩码,其中 99.1% 是全自动生成的。

掩码质量:为了估计掩模质量,作者随机抽取了 500 张图像(~50k 掩模)并要求专业注释者提高这些图像中所有掩模的质量。注释者使用我们的模型和像素精确的“画笔”和“橡皮擦”编辑工具来做到这一点。这个过程产生了一对自动预测和专业校正的掩码。作者计算了每对之间的 IoU,发现 94% 的对具有大于 90% 的 IoU(并且 97% 的对具有大于 75% 的 IoU)。为了进行比较,先前的工作估计注释器间的一致性为 85-91% IoU。 本文的实验通过人类评级证实,相对于各种数据集而言,掩码质量较高,并且在自动掩码上训练SAM几乎与使用数据引擎生成的所有掩码一样好。

3. 实验和效果

作者考虑五个任务,其中四个与用于训练 SAM 的可提示分割任务有很大不同。这些实验在训练期间未见的数据集和任务上评估 SAM(对“零样本迁移”的使用遵循其在 CLIP 中的使用)。数据集可能包括新颖的图像分布,例如水下或以第一视角的图像,这些图像不会出现在 SA-1B 中。

实验首先测试可提示分割的核心目标:从任何提示生成有效的掩码。 本文强调单个前景点提示的挑战性场景,因为它比其他更具体的提示更容易产生歧义。接下来,我们展示了一系列实验,这些实验遍历低、中和高级图像理解,并大致与该领域的历史发展平行。具体来说,提示 SAM:

  1. 执行边缘检测;
  2. 分割所有内容,即对象候选生成;
  3. 分割检测到的对象,即实例分割;
  4. 作为概念验证,以分割来自自由格式文本的对象(根据文本分割)。

这四个任务与 SAM 接受训练并通过提示工程实现的提示分割任务有很大不同。

实施细节:除非另有说明,SAM 使用 MAE 预训练的 ViT-H 图像编码器。SAM 在 SA-1B 上训练,注意该数据集仅包括从数据引擎的最后阶段自动生成的掩码。

3.1 零样本迁移点分割验证

评估从单个前景点分割对象。这个任务是不适定的,因为一个点可以指代多个对象。大多数数据集中的 Ground truth 掩码不会枚举所有可能的掩码,这会使自动度量变得不可靠。 因此,作者用一项人类研究来补充标准的 mIoU 指标(即,预测掩码和真实掩码之间所有 IoU 的平均值),其中注释者将掩码质量从 1(无意义)到 10(像素完美)进行评分。

我们主要与 RITM 进行比较,RITM 是一种强大的交互式分割器,与其他强大的基线相比,它在我们的基准测试中表现最佳。 我们使用了一套新编译的 23 个数据集,这些数据集具有不同的图像分布。下图是对比的实验结果:

SAM 在 23 个数据集中的 16 个上产生了更高的结果,高达 ∼47 IoU。论文还提供了一个“oracle”结果,其中最相关的 SAM 的 3 个掩码是通过将它们与真实注释进行比较来选择的,而不是选择最有信心的掩码。这揭示了歧义对自动评估的影响。 特别是,通过 oracle 执行歧义消解,SAM 在所有数据集上都优于 RITM。

3.2 零样本迁移边缘检测

使用 BSDS500 在边缘检测的经典low-level任务上评估 SAM。我们使用 16×16 的前景点规则网格提示 SAM,从而产生 768 个预测掩码(每个点 3 个)。NMS 删除冗余掩码。然后,使用未阈值掩模概率图的 Sobel 过滤和标准轻量级后处理(包括边缘 NMS)计算边缘图。

定性地,可以观察到即使 SAM 没有接受过边缘检测训练,它也会产生合理的边缘图。 与 ground truth 相比,SAM 预测了更多的边缘,包括 BSDS500 中未注释的敏感边缘。

SAM 自然落后于学习 BSDS500 偏差的最先进方法,即抑制哪些边缘。 尽管如此,与 HED(也在 BSDS500 上训练)等开创性的深度学习方法相比,SAM 表现良好,并且明显优于之前的零样本迁移方法,尽管这已经过时了。

3.3 零样本目标候选生成

目标候选生成在目标检测研究中发挥了重要作用,作为开创性系统的中间步骤。为了生成对象候选,论文运行了一个稍微修改过的自动掩码生成管道版本。数据集使用 LVIS,因为它的大量类别提出了具有挑战性的测试。 SAM与作ViTDet检测器(使用级联 Mask R-CNN ViT-H)实现的强基线进行比较。注意到,这个“基线”对应于向游戏 AR 展示的“检测器伪装成提议生成器”(DMP) 方法,使其成为一个真正苛刻的比较。

在上表中,不出所料地看到使用 ViTDet-H 的检测作为对象候选总体上表现最好。 然而,SAM 在几个指标上表现非常出色。 值得注意的是,它在中型和大型物体以及稀有和常见物体上的表现优于 ViTDet-H。 事实上,SAM 仅在小对象和频繁对象上表现不如 ViTDet-H,而 ViTDet-H 可以轻松学习 LVIS 特定的注释偏差,因为它是在 LVIS 上训练的,与 SAM 不同。 作者还与 SAM 的消除歧义无意识版本(“单挑”)进行了比较,后者在所有 AR 指标上的表现都明显低于 SAM。

3.4 零样本迁移实例分割

转向更高层次的愿景,使用 SAM 作为实例分割器的分割模块。 实现很简单:运行对象检测器(之前使用的 ViTDet)并使用其输出框提示 SAM。 这说明了在更大的系统中编写 SAM。

观察到两个数据集上的差距,其中 SAM 相当接近,但肯定落后于 ViTDet。假设在 COCO 上,mask AP 间隙较大且标注质量相对较低(正如人类研究所证实的那样),ViTDet 学习了 COCO masks 的特定偏差。SAM 作为一种零样本方法,无法利用这些(通常不受欢迎的)偏差。LVIS 数据集具有更高质量的 ground truth,但仍然存在特定的特性(例如,masks 不包含孔,它们是构造简单的多边形)和模态与 amodal masks 的偏差。 同样,SAM 没有接受过学习这些偏差的训练,而 ViTDet 可以利用它们。

3.5 零样本文本引导的掩码生成

考虑一个更高级别的任务:从自由格式文本中分割对象。该实验是 SAM 处理文本提示的能力的概念验证。 虽然在之前的所有实验中都使用了完全相同的 SAM,但对于这个 SAM 的训练过程进行了修改,使其具有文本感知能力,但不需要新的文本注释。 具体来说,对于每个面积大于 100^2 的手动收集掩码,我们提取 CLIP 图像嵌入。 然后,在训练期间,我们使用提取的 CLIP 图像嵌入提示 SAM 作为其第一次交互。这里的关键观察是,因为 CLIP 的图像嵌入经过训练以与其文本嵌入对齐,所以我们可以使用图像嵌入进行训练,但使用文本嵌入进行推理。 也就是说,在推理时,我们通过 CLIP 的文本编码器运行文本,然后将生成的文本嵌入作为 SAM 的提示。

SAM 可以根据简单的文本提示(如“轮子”)和短语(如“海狸齿格栅”)来分割对象。 当 SAM 无法仅从文本提示中选择正确的对象时,一个额外的点通常会修复预测,类似于PhraseClick。

3.5 消融实验

数据引擎阶段、图像编码器缩放和训练数据缩放的消融研究。(左)每个数据引擎阶段都会改进我们的 23 个数据集套件,并且仅使用自动数据进行训练会产生与使用所有三个阶段的数据相似的结果。 (中)用约 10% 的 SA-1B 和完整的 SA-1B 训练的 SAM 具有可比性。默认使用所有 1100 万张图像进行训练,但使用 100 万张图像是一个合理的实际设置。(右)缩放 SAM 的图像编码器显示出有意义但饱和的增益。 然而,在某些设置中可能更喜欢较小的图像编码器。

4. 总结和不足

Segment Anything 项目试图将图像分割提升到基础模型时代,这篇论文试图使这一飞跃成为可能的新任务(可提示分割)、模型(SAM)和数据集(SA-1B)。

限制:虽然 SAM 总体上表现良好,但并不完美。它可能会错过精细的结构,有时会产生不连贯的小组件的幻觉,并且不会像“放大”的计算密集型方法那样清晰地产生边界。一般来说,专用的交互式分割方法在提供许多点时优于 SAM。与这些方法不同,SAM 是为通用性和使用广度而不是高 IoU 交互式分割而设计的。 此外,SAM 可以实时处理提示,但是当使用重型图像编码器时,SAM 的整体性能并不是实时的。 本文中对 text-to-mask 任务的尝试是探索性的,并不完全可靠,尽管可以相信它可以通过更多的努力得到改进。 虽然 SAM 可以执行许多任务,但尚不清楚如何设计实现语义和全景分割的简单提示

未来:预训练模型可以提供新功能,甚至超出训练时的想象(涌现现象)。一个突出的例子是 CLIP如何用作更大系统中的一个组件,例如 DALL·E。本文的目标是使用 SAM 使这种组合变得简单明了,通过要求 SAM 为广泛的分割提示预测有效掩码来实现这一目标。 效果是在 SAM 和其他组件之间创建可靠的接口。 例如,MCC可以轻松地使用 SAM 来分割感兴趣的对象,并实现对未见对象的强泛化,以便从单个 RGB-D 图像进行 3D 重建。在另一个示例中,SAM 可以通过可穿戴设备检测到的注视点进行提示,从而启用新的应用程序。 由于 SAM 能够泛化到第一视角的图像等新领域,这样的系统无需额外培训即可工作。

AdaMPI:单图新视点合成

Single-View View Synthesis in the Wild with Learned Adaptive Multiplane Images, SIGGRAPH 2022.

Yuxuan Han, Ruicheng Wang and Jiaolong Yang

Project Page | Video | Paper

Multiplane Images(MPI)是一种场景表示方法,其在先前的工作中已经证明具有出色的表示能力。MPI通常由多个平面组成,每个平面都具有不同的颜色、密度和深度值。以前的方法通常将平面设置在固定位置,并通过卷积神经网络(CNN)预测纹理。然而,MPI是一种高度过参数化的表示方法,对于神经网络来说很难学习,因为需要大量输出通道。因此,当平面数量增加时,性能甚至可能会降低。

该网络旨在从输入图像和其深度图中预测N个平面,每个平面都有颜色通道ci、密度通道σi和深度di。该网络由两个子网络组成:平面调整网络Fd和颜色预测网络Fr。首先,使用现成的单目深度估计网络[Ranftl et al. 2021]获取深度图。然后,将Fd应用于推断平面深度{di}N_i=1,并将Fr应用于预测每个di处的颜色和密度{ci, σi}N_i=1。因此,该网络可以生成多平面图像,其中每个平面都具有不同的颜色、密度和深度值。

Figure 2显示了使用该方法在每个平面上预测的颜色掩码。该图中展示了16个平面,每个平面都有不同的颜色和密度值。这些颜色掩码是通过网络预测得出的,用于生成多平面图像。

该方法包括两个子网络:平面深度调整网络和深度感知颜色预测网络。 平面深度调整网络由三个主要部分组成:RGBD上下文特征提取器、平面位置调整器和注意力机制。该网络的输入是RGBD图像,其中包含彩色图像和深度图像。首先,RGBD上下文特征提取器从输入中提取特征,并将其传递给平面位置调整器。然后,平面位置调整器使用这些特征来推断每个平面的深度,并将其与初始估计值进行比较。最后,注意力机制用于确定哪些区域需要更多的细节,并在这些区域上进行更精细的调整。 深度感知颜色预测网络由两个主要部分组成:颜色掩码生成器和MPI合成器。该网络的输入是RGBD图像和一个表示目标视角的向量。首先,颜色掩码生成器使用输入来预测每个平面处的颜色掩码。然后,MPI合成器使用这些颜色掩码以及每个平面处的深度值来合成MPI表示,并将其渲染为新视点图片。 总体而言,该方法采用了一种端到端的学习方法,通过联合训练两个子网络来实现多平面图像的生成。

训练方法:

Fig. 3是有关视角合成训练对生成的示意图。该图显示了如何在训练过程中生成立体图像对。首先,从深度图中采样一个图像Is,并生成一个合理的内部参数K和相机运动(R,t)。然后,渲染目标彩色图像It和深度图Dt,并应用已经训练好的修补程序G来填充空洞,从而产生̄It和̄Dt。为了确保网络接收到来自真实图像分布的监督信号,我们将(̄It,̄Dt)作为F的输入,并将(Is,Ds)作为目标视角的地面真实值。

Enforcing Temporal Consistency in Video Depth Estimation–视频深度估计

code:https://github.com/yu-li/TCMonoDepth

在视频估计领域,现有的单眼深度估计方法利用单张图像和差强人意的时间稳定性。这通常意味着需要后处理手段。一些基于深度的视频估计利用重建框架如SFM、序列建模。这些方法在某些方面做了系列假设,因此真实应用时具有一定的局限性。

文章提出一种简单的方法,旨在提高视频深度估计时的时间一致性。没有任何后处理和额外计算成本的情况。
具体:从视频数据中学习了一个先验,这个先验可以直接施加到任何单一图像的单目深度方法。
测试时只是逐帧进行端到端的正向推理,没有任何顺序模块或多帧模块。
此外提出了一个评估指标,定量衡量时间一致性的视频深度预测。它不需要标记深度地面真相,只评估连续帧之间的闪烁。一份主观研究表明,提出的度量标准与用户的视觉感知是一致的,一致性得分较高的结果确实是首选。
这些特点使文章方法成为一种实用的视频深度估计器,可以预测真实场景的密集深度,并支持多种基于视频深度的应用。

作者介绍了一种简单而有效的方法来加强视频深度估计的时间一致性。一个基本假设:如果连续帧中对应的像素漂移很多,闪烁就会出现。通过对这种对应下的预测进行约束和对齐,引导模型在单帧推理下产生具有强一致性的深度估计。同时,定义了一个度量来公平地评估深度估计结果随时间的稳定性,其不需要标记的地面真值进行处理。

一种新的评估指标,测量视频深度估计结果的稳定性。实验表明,该指标是OK的,并与人类视觉判断深度一致。提出了一种有效的方法在训练过程中施加时间限制。然后学习该模型,只有单一帧输入的情况下,产生稳定的深度预测。将该方法扩展到没有深度地面真值的动态视频。展示了可以很容易地使用未标记的视频强制约束和规范模型。主观研究表明,作者方法提供了更好的一致性值和可察觉的较少闪烁的结果。

时间一致性度量:

强制一致的模型应该在整个周期内,得到不包含明显闪烁的深度估计结果。两个连续的深度图的变化通常来自几个方面:

1、场景中物体的移动
2、镜头的变换和旋转
3、同一区域意外频繁的漂移
对于高帧率的视频,帧与帧之间的变化较小,连续两帧之间的深度值在对应像素上应该几乎相同。基于单图像的方法通常对帧间的这种变化没有任何限制,因此会出现闪烁现象,使得在三维坐标中属于同一单位的像素深度值在时间轴上发生频繁而随机的漂移。

为了测量连续深度结果的稳定性,需要在每对连续帧中识别相应的像素,并确定这些像素在整个视频中如何波动。在前人对语义分割一致性评估的基础上,很容易提出用光流搜索对应像素点的思想。

度量指标

本文模型建立在单张图像深度估计,旨在将学习时间一致性强加到原始深度网络上。

训练阶段:

将两个相邻帧,分别进行相应的深度估计,遵循单张图像深度估计方法,可以测量深度估计与地面真实深度的差,这只是传统的深度预测精度的损失,在训练中被最小化。前向传递、损失计算和后向传递分别适用于两帧。

时间一致性损失-目的:减少两个连续帧之间的深度偏移。 由于两个坐标系之间存在运动,需要在测量距离之前对其进行补偿。

关于数据集的标签:

数据集:难以捕获大尺度、多样化的视频深度数据集。作者建议使用从最先进的单眼深度方法中提取的监督。具体来说,使用MiDaS网络作为教师,对来自多个数据集的大量数据进行预训练。MiDaS已被证明具有良好的泛化能力,适合一般深度估计目标。在这种情况下,前面描述的管道仍然适用,但只是将MiDaS网络的输出作为监督信号Dt *。

实验结果:

第一行:来自NYU的输入帧。
第二行:使用BTS生成的深度估计图。
第三行:使用CLSTM生成的深度估计映射。
最后一行:作者方法生成的深度估计图。
为了更好地可视化视频稳定性,将不同帧和深度估计的相同区域放大并拼接在最后一列上。
视频深度估计和数字条纹的视觉比较是从连续的帧中裁剪出来的。
最先进的基于单图像的方法MiDaS[32]可以产生帧级高质量的深度图,
但随着时间的推移会有明显的闪烁。
将时间一致性引入深度估计模型后,作者方法可以预测时间上更稳定的深度预测。

总结:

在这项工作中,作者介绍了一种简单而有效的方法来提高单帧深度估计下视频深度估计的时间一致性。同时还提出了一种时间一致性度量,该度量与人类对视频稳定性的感知相一致。实验表明,作者方法可以表现出更稳定的深度估计,并且可以推广到动态真实世界的视频中,而不需要相应的深度地面真值。