根据文字生成图像,是近几年大模型领域和多模态比较热门的研究。以NovelAI,waifu等为代表的二次元模型极大地拓展了 stable diffusion [5][24]模型和生态的想象空间。例如原本做AIGC生成小说的NovelAI推出了自己的二次元图像生成模型,基于 SD 算法框架和 Danbooru 二次元图库数据集进行训练和优化。像 NovelAI 这类的二次元模型对于用户输入的描述词的专业程度要求较高,也由社区自发整理了大量的魔典(prompt).精确控制图像的生成也是AI绘画的一个发展方向,各种可以控制人物动作,位置的方法[10][13][19]被提出.最近openai也开源了他们最新的研究Consistency Models[20] ,可以1s内生成多张图片。此外,stable diffusion也被用在了3d模型的生成方面,例如 dreamfusion[25],Point-E[26] 等。
hypernetwork是一种神经网络的处理方法[21] 主要方法是通过一个神经网络影响另一个神经网络的参数,其中最具有代表性的就是GAN[22][23] 了.
扩散模型第一次在[1] 中被提出,被称为Diffusion Probabilistic Model,之后提出的DDPM[2]中被改进。之后DDPM也衍生出了诸多版本。发布在CVPR2022的LDM[5]将图片放到隐空间上实现了图片高质量合成并提出了内容引导机制,可以通过prompt让图片生成特定内容。一年后LDM衍生除了stable diffusion[24][5],掀起了ai画图的热潮。
DDPM分为前向过程和反向过程。DDPM假定整个过程都是一个参数化的马尔科夫链,在前向过程中对数据逐步增加高斯噪声直到数据变成一个高斯噪声,反向过程中使用U-Net[4] 预测反向添加的噪声进行去噪。
从 \(\mathbf{X}_{T}\to\mathbf{X}_{o}\) 是扩散模型的逆过程,这是在生成数据的时候是从一个随机的高斯分布采样一个信号,逐步通过去噪声恢复目标信号, \(q(\mathbf{x}_{t-1}|\mathbf{x}_{t})\) 这个过程的解析式是未知的。前向过程是从 \(\mathbf{X}_{0}\rightarrow\mathbf{X}_{T}\) ,对一个真实信号逐步加噪声,通过选取合适的噪声尺度,理论上在一定步数以后真实信号也会变成高斯信号,可以把这个过程表示为 \(q(\mathbf{x}_{t}|\mathbf{x}_{t-1})\) 。
利用重参数化技术,我们可以得到从0到t的直接采样可以得到\(q(\mathbf{x}_t|\mathbf{x}_0)=\mathcal{N}(\mathbf{x}_t;\sqrt{\bar{\alpha}}\mathbf{x}_0,(1-\bar{\alpha})\mathbf{I})\) ,其中 \(\alpha_{t}=1-\beta_{t},\bar{\alpha}t=\prod i=1^{t}\alpha_{i}\,\beta_{t}\) 表示前向过程每一步的方差。这样在训练的时候我们就可以随机采样一个时刻,然后计算处这个时刻的 \(\mathbf{X}_t\)。\[\mathbf{x}_t(\mathbf{x}_0,\epsilon_t)=\sqrt{\bar{\alpha}_t}\mathbf{x}_0+\sqrt{1-\bar{\alpha}_t}\epsilon_t,\epsilon_t\sim\mathcal{N}(\mathbf{0},\mathbf{I})\] \(q(\mathbf{x}_{t-1}|\mathbf{x}_t)\) 是未知的,但是可以求出\(q(\mathbf{x}_{t-1}|\mathbf{x}_{t},\mathbf{x}_{0})\) 的解析解\[q(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0)=\mathcal{N}(\mathbf{x}_{t-1};\tilde{\mu}(\mathbf{x}_t,\mathbf{x}_0),\tilde{\beta}_t\mathbf{I})\] \[\tilde{\mu}_t\bigl(\mathbf{x}_t,\mathbf{x}_0\bigr)=\frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t}\mathbf{x}_t+\frac{\sqrt{\bar{\alpha}_{t-1}}\beta_t}{1-\bar{\alpha}_t}\mathbf{x}_0,\tilde{\beta}=\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t}\beta_t\] DDPM中推导出了基于噪声误差的损失函数,即通过网络估计噪声,而不是直接估计 \(\mathbf{X}_t\) ,损失函数是\[\begin{aligned}L_t^{\text{simple}}&=\mathbb{E}_{t\sim[1,T],\mathbf{x}_0,\epsilon_t}\left[\|\boldsymbol{\epsilon}_t-\boldsymbol{\epsilon}_\theta(\mathbf{x}_t,t)\|^2\right]\\ &=\mathbb{E}_{t\sim[1,T]\mathbf{x}_0,\epsilon_t}\left[\|\boldsymbol{\epsilon}_t-\boldsymbol{\epsilon}_\theta(\sqrt{\boldsymbol{\alpha}_t}\mathbf{x}_0+\sqrt{1-\overline{\alpha}_t}\boldsymbol{\epsilon}_t,t)\|^2\right]\end{aligned}\]
image.png
DDPM也有几个改进版本,例如DDIM[3] . DDIM采用更小的采样步数来加速生成过程。
为了降低训练模型时所需要的训练资源,使用latent space的LDM[5]被提出.尽管允许通过对相应损失项的低采样忽略感知上无关的细节,但这一步仍然需要在像素空间中进行昂贵的函数计算,这导致了巨大的计算时间和能源需求。
横轴是隐变量每个维度压缩的bit率,纵坐标是模型的损失。模型在学习的过程中,随着压缩率变大,刚开始模型的损失下降很快,后面下降很慢,但仍然在优化。模型首先学习到的是semantic部分的压缩/转换(大框架),这一阶段是人物semantic部分转变,然后学习到的是细节部分的压缩/转换,这是perceptual细节处的转变。
LDM将图像从变换到latent space上,采用了encoder-decoder的机制,图像生成又回到了以前的架构上,并引入了自注意力机制,将扩散模型转换为更有效的图像生成器。给定图像\(x\in\mathbb{R}^{H\times W\times3}\) ,编码器\(\mathcal{E}\) 会将图片编码到\(z=\mathcal{E}(x)\) ,解码器\(\mathcal{D}\) 会从latent space中重建图像。给定\(\quad\tilde{x}=\mathcal{D}(z)=\mathcal{D}(\mathcal{E}(x))\) ,\(z\in\mathbb{R}^{h\times w\times c}\) 。更重要的是下采样倍数\({f}={H/h}=W/w\) ,作者采用的是\(f=2^m,m \in N\)
Conditioning Mechanisms,这里的条件可以是文字、图像等。将不同模态不同大小的条件转换为一个中间表达空间。通过这种方法可以实现prompt指导图象生成。
Consistency Models[20] 是openai提出的最新的一种图片生成方法
diffusion[2] 的采样过程,从先验分布\(\left(x_{t_N},t_N\right)\) 出发,推导采样过程\(\left(x_{t_N},t_N\right)\to\left(x_{t_{N-1}},t_{N-1}\right)\to...\to\left(x_{t_0},t_0\right)\) .
Consistency Models 假设存在一个函数\(f\),对于上述过程中的每个点,\(f\)都能输出一个相同的值,即\[\begin{aligned}\boldsymbol{f}(\mathbf{x}_t,t)=\boldsymbol{f}(\mathbf{x}_{t'},t')\text{for all}t,t'\in[\epsilon,T]\end{aligned}\] 对于轨迹起点\(x_0=\epsilon\) ,有\(\boldsymbol{f}(\mathbf{x}_{\boldsymbol{\epsilon}},\epsilon)=\mathbf{x}_{\boldsymbol{\epsilon}}\) .那么对于轨迹中任意一点,我们代入先验分布, 即可得到 \(f(x_{T},T)=x_{\epsilon}\) 。这样也就完成了一步采样。
文字生成图片一个重要的前提条件是建立文字和图片的联系。CLIP首先通过对比学习的方式实现了文字图片联系。FLIP和A-CLIP对CLIP进行了改进。DALLE,GLIDE,DALLE2是OPENAI发布的文生图模型,GLIDE实现了无分类器引导的图片生成,DALLE2引入CLIP进行图片生成。Imagen主要使用文字内容进行训练,图片则先生成小图再超分放大。
OPENAI提出的CLIP[6]通过对比学习的方式建立了文字和图片的联系.在训练过程文字和图像分别经过一个文字编码器和图像编码器得到一个对应的向量,将对应的文字向量和图像向量作为正样本,不对应的向量作为负样本进行对比学习。
考虑到大部分的数据集的标签都是以单词的形式存在的,比如“bird”,“cat”等等,然而在预训练阶段的文本描述大多都是某个短句,为了填补这种数据分布上的差别,作者考虑用“指示上下文”(guide context)对标签进行扩展。可以用a photo of a {object}
作为文本端的输入。推理过程先给定一个提示A photo of a {object}
,这里的object可以填入任意的内容,然后通过一个文字编码器得到与输入内容分别对应的一组向量。同时图片经过一个图像编码器得到一个向量,将图片得到的向量分别和填入内容得到的向量计算余弦相似度,相似度最大的则是目标的描述。
何凯明团队提出的FLIP[7]通过对图片加入mask有效提升了CLIP的推理速度,同期的A-CLIP[8]通过加入注意力机制保留了图像中具有语义信息的部分,避免随意加入mask对模型的训练造成影响。如图左侧是A-CLIP的过程,右侧是FLIP的结果。
GLIDE[9]采用无分类器指导的扩散模型实现了图片生成。GLIDE, Guided Language to Image Diffusion for Generation and Editing,是 OpenAI 推出的文本引导图像生成模型,,但受到的关注相对较少。它甚至在 OpenAI 网站上也没有专门的帖子。GLIDE 生成分辨率为 256×256 像素的图像。实际上在论文中DALLE2被称为unCLIP。参数量上5B的GLIDE的FID得分超过了12B的DALLE
DALL·E2[11]的架构加入了CLIP[6],通过锁住CLIP的文本编码器和图像编码器可以建立文字和图像的联系,加入prior和img decoder两个先验, 训练prior,使文本编码可以转换为图像编码,并训练decoder生成最终图像。
谷歌的 Imagen[12]的语言模型替换成了谷歌自家的T5-XXL,图像生成部分则是先生成小图像再上采样生成大图像,这是因为纯文本训练数据要比高质量图文对数据容易获取的多.
Low-Rank Adaptation of Large Language Models (LoRA)[29] 是一种训练方法,可以加速大型模型的训练,同时消耗更少的内存。最初是被用在语言模型上的,在文本理解,文本生成上都取得了不错的效果
image.png
做法是在原模型旁边增加一个旁路,通过低秩分解(先降维再升维)来模拟参数的更新量。训练时,原模型固定,只训练降维矩阵A和升维矩阵B,推理时,可将BA加到原参数上,不引入额外的推理延迟。此外这还是一个可拔插的模块,可以根据需要选择不同的rank
LoRA 的应用包括文字生成图片和图片生成图片.[31] 是第一个使用LoRA微调扩散模型的项目。Chinese-alpaca-lora[30] 是一个由华中师范大学同学维护的中文语言模型,使用LoRA进行微调。
DreamBooth[32] 也可以与LoRA结合进行微调[33]
图像编辑也是文字生成图片的重要应用。Imagic输入一个文本图像和目标文本,通过多阶段的方法对齐文本和图像编辑图像。ControlNet通过复制参数为锁住的和可训练的,使模型可以为特定任务进行微调。同时ControlNet可以传入openpose人的位姿图,canny边缘图,深度图,Hough变换生成的图等各种图片可控得生成图片。Google的DreamBooth[32] 提出了一种使用少量图片进行微调的方式,提供一种用户训练自己模型的方法。prompt2prompt通过更改图片对应的map的方式特定更改图片。
Imagic[10]提出的方法只需要一个输入图像和一个目标文本(所需的编辑)。它生成一个与输入图像和目标文本一致的文本嵌入,同时微调扩散模型以捕获特定于图像的外观。Imagic通过多阶段的方法实现了图片编辑,分为优化文本嵌入,微调扩散模型。在优化的嵌入和目标文本嵌入之间进行线性插值三个过程。首先优化文本嵌入,使其生成与输入图像相似的图像。然后,对预训练的生成扩散模型(以优化的嵌入为条件)进行微调,以更好地重建输入图像。最后,在目标文本嵌入和优化后的文本之间进行线性插值,得到一个结合了输入图像和目标文本的表示。然后将这种表示传递给带有微调模型的生成扩散过程,输出最终编辑的图像。
ControlNet[13]通过对参数复制,将参数分为锁住的和可训练的。锁着的参数从大量的图片文本对中学习更通用的信息,可学习的参数在特定的任务上进行微调,让模型在个人电脑和大型计算集群上都可以获得很好的训练效果。
以2D图像为例,给定一张图像(特征图)\(\boldsymbol{x}\in\mathbb{R}^{h\times w\times c}\) ,\(h,w,c\) 分别代表高度,宽度,深度。一个将x转换为y的神经网络我们可以以将他记作\(\mathcal{F(\cdot;\Theta)}\) 我们把zero convolution(就是1 \(*\) 1卷积)记作\(\mathcal{Z}(\cdot;\cdot)\) ,那么ControlNet就可以记作\[\begin{matrix}\boldsymbol{y_c}=\mathcal{F}(\boldsymbol{x};\Theta)+\mathcal{Z}(\boldsymbol{F}(\boldsymbol{x}+\mathcal{Z}(\boldsymbol{c};\Theta_{\text{z1}});\Theta_{\text{z2}})\end{matrix}\] 由于zero convolution的权重初始为0,那么就有\[\begin{cases}\mathcal{Z}(c;\Theta_{\text{z1}})=\mathbf{0}\\ \mathcal{F}(\boldsymbol{x}+\mathcal{Z}(\boldsymbol{c};\Theta_{\text{z1}});\Theta_{\text{c}})=\mathcal{F}(\boldsymbol{x};\Theta_{\text{c}})=\mathcal{F}(\boldsymbol{x};\Theta_{\text{c}})\\ \mathcal{Z}(\mathcal{F}(\boldsymbol{x}+\mathcal{Z}(\boldsymbol{c};\Theta_{\text{z1}});\Theta_{\text{c}});\Theta_{\text{z2}})=\mathcal{Z}(\mathcal{F}(\boldsymbol{x};\Theta_{\text{c}});\Theta_{\text{z2}})=\mathbf{0}\end{cases}\] 可以得出\(y_c=y\),即当ControlNet被应用到任何一个网络上时,不会对这个网络的效果产生任何影响。它完美保留了任何神经网络块的能力、功能和结果质量,任何进一步优化都将随着微调而变得很快。
在训练过程中,作者随机的将50%的prompt换成了空的prompt,作者认为这可以增强模型从文本内容识别语义信息的能力。这主要是因为当 stable diffusion 模型看不到提示时,decoder倾向于从输入控制图中学习更多的语义作为提示的替代品。
ControlNet还给出了在个人电脑和大型计算集群上进行训练的方式。当计算设备有限时,作者发现部分打破ControlNet与stable diffusion之间的联系可以加速收敛。默认情况下是将ControlNet连接到“SD Middle Block”和“SD Decoder Block 1,2,3,4”(stable diffuion的模块)。作者发现,只连接Middle Block而不连接Decoder Block 1,2,3,4可以将训练速度提高1.6倍(在RTX 3070TI笔记本电脑GPU上测试)。当模型在结果和条件之间表现出合理的关联时,这些断开连接的链接可以在持续训练中再次连接,以促进精确控制。
openai在论文还比较了在不同的数据集上不同的编码器的效果
MutilDiffusion[14] 将图片分为几个部分分别进行diffusion,然后将他们拼在一起通过一个全局去噪网络可以更好的控制生成图片中物体的位置。
DreamBooth[32] 是Google提出的一个通过少量图片微调diffusion model 的方法。
要训练自己数据最直观的方法,就是把自己的图片加入模型迭代时一起训练。但会带来两个问题,一个是过拟合,另一个是语义漂移(language drift)。总的来说DreamBooth的贡献在两方面,一方面是给定主题可以生成特定的主题的图片,一方面给定少数镜头微调diffusion model的方法同时保留输入图片的语义信息。 而Dreambooth的优势就在于能避免上述的两个问题。主要方法就是使用一个具有特殊含义而且比较少见的词,训练的图片最好有不同角度和光线下的图片。下图是DreamBooth论文给出的不同模型效果的对比图
Cascade EF-GAN[28] 是一种级联式的人脸编辑方式,可以更好地保留与身份相关的特征和细节,特别是在眼睛、鼻子和嘴巴周围,进一步帮助减少生成的面部图像中的伪影和模糊。
作者设计了一种级联式网络,同原本对一张人脸做更改变成了对一张人脸和脸上几个部分同时做更改。因为对一个人类来说分辨一个人的方式就是看人的眼睛,鼻子和嘴巴。Cascade EF-GAN能够识别面部表情编辑中局部重点的重要性,并通过几个局部重点捕捉身份相关特征,有效地减轻编辑产生的伪影和模糊。
Cascade EF-GAN中的生成模型由一个Expression Transformer和一个Refiner组成。Expression Transformer执行带有局部焦点的表情编辑,Refiner融合表情转换器的输出并细化最终编辑。
Expression Transformer通过在全局和局部分支中处理面部图像来解决这个问题,其中全局分支捕获全局面部结构,局部分支专注于更详细的面部特征。Transformer将面部图像和目标表情标签作为输入。所有分支共享相似的网络架构,但不共享权重
此外注意力被引入到全局和局部分支,以更好地捕捉细节和抑制伪影。在GANimation [32]中,使用视觉注意力来引导网络集中于转换与表情相关的区域。然而,在单个全局图像中应用注意力往往会引入模糊的注意力响应,如图3的第4列所示。这是因为全局注意力倾向于关注最显著的变化,例如图3中的嘴部区域,而眼睛和鼻子周围的细微变化则没有受到足够的关注。前面提到的局部分支中的独占式注意力有助于在局部区域实现更锐利的响应,如图3的第3列所示。
每个分支输出颜色特征图M_C和注意图M_A。对于原始输入图像I_in,每个分支的初始输出通过以下方式生成 \[\mathcal{I}_{init}=M_A\otimes M_C+(1-M_A)\otimes I_{in}\]
Refiner负责融合表情转换器不同分支的输出,生成最终的表情编辑。如图2所示,三个局部分支的输出首先根据它们在面部图像中的各自位置缝合成单个图像。缝合的图像然后与全局分支的输出连接,并馈送到细化器以生成最终的表情编辑。
prompt2prompt[19] 是Google提出的一种基于Imagen的图像编辑方法,相比于直接text2image生成,文本引导图片生成要求原来图像绝大部分区变化不大,先前的方法需要用户指定mask来引导生成。prompt2prompt的主要方法是将交叉注意力机制引入diffusion中,得到每个token对应的attention map,一种有三种操作的方式 1. token换词,那么直接替换attention map即可。 2. 加词,则是直接在对应位置加入新的attention map。 3. token增强——直接提高对应的map的权重。
但这种方法也有一些局限,例如需要用户给一个合理的prompt,细节的生成不太好,不能对图中的物体进行移位操作。
InstructPix2Pix[27] 是一种无需微调就可以快速编辑图像的方法,结合了两个大型预训练模型的知识——语言模型和文本到图像模型——生成了大量的图像编辑示例数据集。通过在这些数据上进行训练,并在推理时能够适用于真实图像和用户编写的指令。但也有一些局限例如数据带来的偏差,能会对图像进行不必要的过度更改。
多模态学习是指从多个模态表达或感知事物。 多模态可归类为同质性的模态,例如从两台相机中分别拍摄的图片,异质性的模态,例如图片与文本语言的关系。Jeff Dean在2019年年底NeurIPS大会上的一个采访报道,讲到了2020年机器学习趋势:多任务和多模态学习将成为突破口。
CLIP[6] 是openai关于文本和图像的一片工作,采用对比学习实现了图片的理解。
AudioCLIP 在原本的CLIP架构中加入了声音的模态。
I3D[34] 是一个视频理解模型,采用双流网络的架构,他的核心贡献是提出了如何对2d网络进行膨胀操作,同时提出了一个新的数据集 Kinetics
这篇文章提出的模型被称为 Two-Stream Inflated 3D ConvNets
Inflate 是模型的核心操作,含义是将一个2d模型"膨胀"成3d模型,做法很简单,就是把一个\(N*N\) 的层变成\(N*N*N\) ,同时也将参数复制了\(N\) 遍。
Segement anything[15] 是meta最近一篇图像分割的工作,使用一个SOTA的zero-shot目标检测器提取物体box和类别,然后输入给SAM模型出mask,使得模型可以根据文本输入检测和分割任意物体。
在社区的努力下,实现了Segement anything和stable diffusion的协同[36]
ImageBind[35] 是meta 的最新工作,是一个学习六种不同模态的方法-图像、文本、音频、深度、温度和IMU数据。此外在学习过程中不需要提供所有模态的信息,作者发现只要将每个模态的嵌入对齐到图像嵌入,就会导致所有模态的emergent alignment(涌现现象)。
ImageBind的目标是通过使用图像将所有模态绑定在一起,学习所有模态的单一联合嵌入空间。通过使用 Web 数据将每个模态的嵌入与图像嵌入对齐,例如使用带有 IMU 的自我中心相机捕获的视频数据将文本对齐到图像,将 IMU 对齐到视频,最后可以获得zero-shot的能力。然而,一个模态的不能直接应用于其他两个模态的组合,例如视频不能直接在图片-IMU上使用。
IMAGEBIND使用模态对\((I,M)\) , 其中\(I\)代表图像,\(M\)是另一种模态,来学习单个联合嵌入.作者使用包含广泛语义概念的(图像,文本)配对的大规模网络数据集。也使用其他模态本身的自我监督配对,如音频、深度、热和惯性测量单元(IMU)与图像。使用InfoNCE[38]损失优化嵌入和编码器。\[L_{\mathcal{I},\mathcal{M}}=-\log\frac{\exp(\mathbf{q}_i^{\text{T}}\mathbf{k}_i/\tau)}{\exp(\mathbf{q}_i^{\text{T}}\mathbf{k}_i/\tau)+\sum_{j\neq i}\exp(\mathbf{q}_i^{\text{T}}\mathbf{k}_j/\tau)}\]
尽管ImageBind只是用了六种模态进行训练,但是未来可以使用更多的数据和模态进行训练,将实现更丰富的以人为中心的 AI 模型。
prompt提示可以给文字生成图片提供语义信息。
CLIP[6] 使用了A photo of a {object}
作为prompt,object
是推理过程中的选择项,作者也讨论了大量的prompt相关的问题。一个常见的问题是一词多义。当一个类的名称是提供给CLIP文本编码器的唯一信息时,由于缺乏上下文,它无法区分哪个词的含义。在某些情况下,同一个单词的多个含义可能作为不同的类包含在同一个数据集中。另一个问题是,在我们的预训练数据集中,与图像配对的文本只是一个单词的情况相对较少。通常文本是一个完整的句子,以某种方式描述图像。通过使用A photo of a {object}
就可以使ImageNet的准确率提高1.3%。作者还发现在不同的数据集上使用不同的prompt可以取得不同的结果。
在 ControlNet[13] 模型采取了三种 prompt 1. No prompt:也就是"" 2. Default prompt:由于stable diffusion本质上是使用prompt进行训练的,因此空字符串可能是模型的意外输入,如果没有提供提示,SD 往往会生成随机纹理图。更好的设置是使用无意义的提示,"an image", "a nice image", "a professional image",etc。在作者的设置中,使用"a professional, detailed, high-quality image"作为default prompt。 3. Automatic prompt:为了测试fully automatic pipeline的SOTA,作者还尝试使用fully automatic pipeline(例如,BLIP)使用“default prompt”模式获得的结果生成prompts。作者会使用生成的提示再次扩散。 4. User prompt:用户自定义的输入
prompt2prompt[19]的操作就是通过prompt进行的。
在背景图生成这个任务下有一个可能需要的步骤,从给出的人物图得到一些prompt生成图片,CLIP-interrogator 就是为了这样的任务而生的,开源的有CLIP-Interrogator[16][18] 和CLIP-Interrogator2[17] .模型主要通过CLIP对以后数据集进行匹配获取prompt、而通过BLIP获得图像最直观的理解。Code底层也是需要CLIP和BLIP作为核心完成后面的工作。
openai 在CLIP[6] 提到他们构建了一个新的数据集,从互联网上各种公开可用的资源中收集了4亿(图像,文本)对。为了尝试覆盖尽可能广泛的视觉内容,对每一类都有大概有2000对对整个数据集进行平衡。结果数据集的总字数与用于训练GPT-2的WebText数据集相似。这个数据集称为WebImageText的WIT。
作者团队从直接与摄影师一起工作的提供商那里获得了一组新的高分辨率的11M图像。即使在下采样之后,这些图像的分辨率也明显高于许多现有的视觉数据集。
segment anything[15] 是Meta最新提出的一个用于目标分割的方法,他们为了更好的训练模型制作了一个迄今为止最大的分割数据集,1100万张在10亿次授权且尊重隐私的图像上的数据集,同时开源了他们的数据集,此外还有一种Data engine 的方法来快速生成数据集。
Data engine 分为三个阶段:(1)模型辅助手动注释阶段,(2)混合自动预测掩码和模型辅助注释的半自动阶段,以及(3)全自动阶段,
在第一阶段,类似于经典的交互式分割,一组专业注释者通过使用由 SAM 驱动的基于浏览器的交互分割工具点击前景/背景对象点来标记掩码。可以使用像素精确的“刷”和“擦除”工具来细化掩码。模型辅助注释直接在浏览器内实时运行(使用预先计算的图像嵌入),从而实现真正的交互体验。标注不受语义约束,可以自由地标注"stuff" and "things"
注释者被要求按突出顺序标记对象,一旦掩码需要超过 30 秒进行注释,便鼓励继续下一个图像。
在SOTA之后,SAM就开始使用公共数据集进行训练,在经过了足够多的数据标注后,就用新标注的数据重新训练。随着收集更多的掩码,图像使用了ViT-H作为编码器。这样的模型训练一共进行了六次。随着模型的改进,每个掩码的平均注释时间从 34 秒减少到 14 秒。随着SAM的改进,每张图像的平均掩码数从20个掩码增加到44个掩码。总体而言,作者在这个阶段从 120k 张图像收集了 4.3M 掩码。
这个阶段的目标是增加mask的多样性。为了将标记集中在不太突出的对象上,首先自动检测confident masks。然后向注释者展示了用这些掩码预先填充的图像,并要求他们注释任何额外的未注释对象。为了检测confident masks,作者使用通用的“对象”类别在所有第一阶段掩码上训练了一个边界框检测器。在这个阶段,作者在 180k 图像中收集了一个额外的 5.9M 掩码(总共 10.2M 掩码)。在第一阶段,在新收集的数据(5 次)上定期重新训练模型。每个掩码的平均注释时间可以回到了到 34 秒(不包括自动掩码),因为这些对象对标签更具挑战性。每张图像的平均掩码数从 44 个掩码到 72 个掩码(包括自动掩码)。
这个阶段的主要目的是解决歧义
这个过程作者使用\(32*32\)网格的点对图像进行预测,并为每个点预测一组可能对应于有效对象的掩码。如果说一个点位于一个部件或子部件上,我们的模型将返回子部分,部分和整个对象(subpart, part, and whole object)。利用模型中的IoU预测模块来选择confident mask,IOU阈值是0.7,那么这个掩码就被认为是是稳定的。为了进一步提高小mask的质量,还处理了多个重叠的放大mask。
Kinetics 是[34] 提出的一个视频理解数据集,Kinetics 有400个人体动作类,每个类有400多个例子,每个都来自一个独特的 YouTube 视频。