谷歌的新 AI 模型,直接解决了 AI 换装的两大难题 —— 既保留衣服细节,又能随意换姿势。以后再剁手,恐怕要更容易了!

一键换装,被谷歌给实现了!

这个 AI 试衣模型 TryOnDiffusion,你只要给它一张自己的全身照,和服装模特的照片,就能知道自己穿上这件衣服之后是什么样子了。

主打的就是一个真实。所以,是真人版奇迹暖暖吧?

按说,各种换装的 AI 早就有不少了,谷歌的这个 AI 模型究竟有何突破呢?

关键就在于,他们提出了一种基于扩散的框架,把两个 Parallel-Unet 统一了起来。

在以前,这种模型的关键挑战就在于,如何既保留衣服细节,又能将衣服变形,同时还能适应不同主体的姿势和形状,让人感觉不违和。

以前的方法无法同时做到这两点,要么只能保留衣服细节,但无法处理姿势和形状的变化,要么就是可以换姿势,但服装细节会缺失。

而 TryOnDiffusion 因为统一了两个 UNet,就能够在单个网络中保留衣服细节,并且对衣服进行重要的姿势和身体变化。

可以看到,衣服在人物上的变形极其自然,并且衣服的细节也还原得非常到位。

话不多说,让我们直接看看,谷歌的这个「AI 试穿」到底有多厉害!

用 AI 生成试穿图像

具体来说,Virtual Try-On可以向顾客展示衣服在不同体型和尺寸的真实模特身上的效果。

虚拟服装试穿中,有许多微妙但对于来说至关重要的细节,比如衣服的垂坠、折叠、紧贴、伸展和起皱的效果。

此前已有的技术,比如 geometric warping,可以对服装图像进行剪切和粘贴,然后对其进行变形以适配身体的轮廓。

但这些功能,很难让衣服妥帖地适应身体,并且会存在一些视觉缺陷,比如错位的褶皱,会让衣服看起来畸形和不自然。

因此,谷歌的研究者致力于从头开始生成服装的每个像素,以生成高质量、逼真的图像。

他们采用的技术是一种全新的基于 Diffusion 的 AI 模型,TryOnDiffusion。

扩散是逐渐向图像添加额外像素,直到它变得无法识别,然后完全消除噪声,直到原始图像以完美的质量重建。

像 Imagen 这样的文本到图像模型,就是使用的来自大语言模型 LLM 的扩散加文本,可以仅根据输入的文本,就能生成逼真的图像。

Diffusion 是逐渐向图像添加额外像素,直到它变得无法识别,然后再完全消除噪声,直到原始图像以完美的质量重建。

这种基于图像的 Diffusion 和交叉注意力的结合技术,构成了这个 AI 模型的核心。

VOT 功能让用户可以在符合自己身材的模特身上渲染展示上衣效果。
海量高质量数据训练

谷歌为了使 VTO 功能尽可能提供真实的效果并且真的能帮助用户挑选衣服,对这个 AI 模型进行了大量的训练。

但是,谷歌没有使用大语言模型来训练它,而是利用了谷歌的购物图。

这个数据集拥有全世界最全面,同时也是最新的产品、卖家、品牌、评论和库存数据。

谷歌使用了多对图像训练模型,每对图像由两种不同姿势的穿着衣服的模特图组成。

比如,一个穿着衬衫的人侧身站立的图像和另一个向前站立的图像。

谷歌专门的扩散模型将图像输入到他们自己的神经网络来生成输出:穿着这件衣服的模特的逼真图像。

在这对训练图像中,模型学习将侧身姿势的衬衫形状与面朝前姿势的图相匹配。

反过来也一样,直到它可以从各个角度生成该人穿着衬衫的逼真图像。

为了追求更好的效果,谷歌使用数百万不同服装和人物的随机图像对多次重复了这个过程。

总之,TryOnDiffusion 既保留了衣服的细节效果,也适配了新模特的身材和姿势,谷歌的技术做到了二者兼得,效果相当逼真。

技术细节

解决这个问题最关键的难点在于,保持服装细节逼真的同时,将服装进行适当的变形以适应不同模特之间的姿势和体型的变化。

先前的方法要么着重于保留服装细节,但无法有效处理姿势和形状的变化。

要么允许根据期望的体型和姿势呈现出了试穿效果,但缺乏服装的细节。

谷歌提出了一种基于 Diffusion 的架构,将两个 UNet合二为一,谷歌能够在单个网络中保留服装细节并对服装的试穿效果进行明显的姿势和身体变化。

Parallel-UNet 的关键思想包括:

1)通过交叉注意机制隐式地为服装制作褶皱;

2)服装的褶皱和人物的融合作为一个统一的过程,而不是两个独立任务的序列。

实验结果表明,TryOnDiffusion 在定性和定量上均达到了最先进的性能水平。

具体的实现方式如下图所示。

在预处理步骤中,目标人物从人物图像中被分割出来,创建「无服装 RGB」图像,目标服装从服装图像中分割出来,并为人物和服装图像计算姿势。

这些信息输入被带入 128×128 Parallel-UNet以创建 128x128 的试穿图像,该图像与试穿条件的输入一起作为输入进一步发送到 256×256 Parallel-UNet 中。

再把 256×256 Parallel-UNet 的输出内容被发送到标准超分辨率扩散来创建 1024×1024 的图像。

而在上面整个流程中最为重要的 128×128 Parallel-UNet 的构架和处理过程,如下图所示。

将与服装无关的 RGB 和噪声图像输入顶部的 person-UNet 中。

由于两个输入内容都是按像素对齐的,在 UNet 处理开始时直接沿着通道维度将两个图像连接起来。

由于两个输入都是按像素对齐的,我们在 UNet 处理开始时直接沿着通道维度将它们连接起来。

将分割后的服装图像输入位于底部的 garment-UNet。

服装的特征通过交叉注意融合到目标图像之中。

为了保存模型参数,谷歌研究人员在 32×32 上采样之后提前停止了 garment-UNet,此时 person-UNet 中的最终交叉注意力模块(final cross attention module)已经完成。

人和衣服的姿势首先被送入线性层以分别计算姿势嵌入。

然后通过注意力机制将姿势嵌入融合到 person-UNet 中。

此外,它们被用在使用 FiLM 在所有规模上调制两个 UNet 的特征。

与主流技术的对比

下图从左到右依次是「输入,TryOnGAN,SDAFN,HR-VITON,谷歌的方法」。

局限性

不过 TryOnDiffusion 存在一些局限性。

首先,在预处理过程中,如果分割图和姿势估计存在错误,谷歌的方法可能会出现服装泄漏的瑕疵。

幸运的是,近年来这方面的准确性已经大大提高,这种情况并不经常发生。

其次,不包括关服装的 RGB 来显示身体的效果并不理想,因为有时它可能只能保留身份的一部分。

例如纹身在这种情况下会不可见,某些的肌肉结构也会不可见。

第三,我们的训练和测试数据集通常都会具有干净统一的背景,因此无法确定该方法在更复杂的背景下的表现如何。

第四,我们不能保证服装在模特身上是否真的合身,只关注试穿的视觉效果。

最后,本研究侧重于上半身的服装,谷歌还没有对全身试穿效果进行实验,未来会进一步对全身效果进行研究。

参考资料: