虚拟试衣 DCI-VTON 论文阅读笔记

DCI-VTON

ACMMM 2023

Junhong Gou, Siyu Sun, Jianfu Zhang, Jianlou Si, Chen Qian, and Liqing Zhang. 2023. Taming the Power ofDiffusion Models for High-Quality Virtual Try-On with Appearance Flow. In Proceedings ofthe 31st ACM International Conference on Multimedia (MM ’23), October 29–November 3, 2023, Ottawa, ON, Canada. ACM, New York, NY, USA, 9 pages. https://doi.org/10.1145/ 3581783.3612255

上海交通大学、商汤SenseTime Research

《Taming the Power of Diffusion Models for High-Quality Virtual Try-On with Appearance Flow》

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

codes:GitHub - bcmi/DCI-VTON-Virtual-Try-On: [ACM Multimedia 2023] Taming the Power of Diffusion Models for High-Quality Virtual Try-On with Appearance Flow.

摘要

许多现有虚拟试衣方法依赖于生成对抗网络(GAN),这类方法在高分辨率下可能出现缺陷。扩散模型被认为是一种具有潜力的替代方法,然而,简单地将服装作为引导扩散模型进行修复(inpainting)并不足以保持服装的的细节。

为了克服上述问题,我们提出一个基于模板的修复方法,利用变形模块指导扩散模型进行有效生成。这个变形模块对服装进行初始处理,这有助于保持服装的局部细节。然后我们结合变形的服装图和无服装的人体图,并添加噪声作为扩散模型的输入。此外,变形的服装还充当每一个去噪过程的局部条件,从而确保输出能够保留尽可能多的细节。

本文的方法——基于扩散模型的虚拟试穿的有条件修复(Diffusion-based Conditional Inpainting for Virtual Tyr-ON, DCI-VTON),有效利用扩散模型和结合变形模块生成高质量、逼真的虚拟试穿结果。

引言

之前的大部分虚拟试穿方法都是基于GAN,通常采用一个显式的变形模块,将目标服装与人体对齐。得到变形的服装后,将其与无服装人体图一起送进生成器,从而获得最终结果,一些方法还可以将此任务推广至高分辨率的场景。然而,这种框架的可靠性很大程度上依赖于服装变形的结果,糟糕的变形服装会阻碍生成真实自然的结果。此外,基于GAN的生成继承了GAN的缺点——收敛很大程度上取决于超参数的选择和输出分布的模式下降(这是什么?)

扩散模型可以提供期望的质量,包括分布式覆盖(distribution coverage)、固定的训练目标和可扩展性。对于虚拟试穿任务,一种朴素的方法是通过文本描述服装款式,然后使用成熟的文生图扩散模型框架。然而,文本很难准确地描绘复杂的服装纹理团,导致无法产生符合我们期望的效果。

参考文献[44]提供了一种基于模板图片的修复方法,可以实现将参考图像中的对象无缝地填充到源图像的目标区域中,并保持整体真实和谐。类似地,我们将虚拟试穿任务视为修复任务,区别在于是将服装修复到人身上。然而,这种方法不能完全保留服装图像的细节,并且服装样式(颜色、图案)是有偏差的。

基于以上几点,我们提出基于扩散模型的虚拟试穿框架DCI-VTON,它可以充分利用扩散模型强大的生成能力,并提高模型对生成任务的可控性。我们将整个任务分成两个模块,即变形模块和细化模块。首先,在变形模块中预测外观流场(appearance flow field)使服装能够贴合目标人体的姿势。然后直接将变形的服装与躯干和手臂被遮盖的人体图片进行组合得到粗略的结果。对这个粗略的结果添加噪声后输入细化模块,并通过扩散模型去噪得到改进的结果。

这种方法不会像基于GAN的方法那样产生较多伪影。在以粗略结果为指导和以原始服装图像为全局条件指导后,将修补图像(inpaint image)和修补遮罩(inpaint mask)进行相连(concate)作为输入,从而控制扩散模型的生成。将变形的服装作为局部条件指导每一个去噪过程。通过这种方式可以解决无法保留衣服细节的问题。

我们在VITON-HD和DressCode数据集上进行了广泛的实验,与之前的工作相比表现出了更卓越的性能。此外,我们还在DeepFashion数据集上进行实验,此任务涉及各种人体姿势的变换,这是更有挑战性的。

Pipeline

方法概述:

首先,我们有服装图 I_c 和目标人体图 I_p ,获得人体图的分割结果 S_p 、密度姿势 p 和无服装的人体图像 I_a , 通过变形模块获得变形的服装 \tilde{I_c} , 将其粗略的对齐到无服装人体图中得到粗略结果 I_0' ,将其加噪获得 I_t' 作为扩散模型的输入,输出最终的结果 \hat{I} (即去噪后的 I_t')。

变形网络

对于两种输入 I_cS_p \& P ,我们使用两个对称编码器来提取特征金字塔 \{E_c\}^N_{i=1}\{E_p\}^N_{i=1} 。相应的,每一层预测的流 F_i 会被传送到下一层进行细化以输出 F_{i+1} ,直到得到最终输出。在每一层中,前一层的输出流 F_{i-1} 首先被上采样到同样的大小,并对相应特征 E^i_c 进行变形,然后将结果与预测出的流的增量 E^i_p 进行关联。最终的输出 F_N\in \mathbb R^{H \times W \times 2}是一组2D坐标向量,每个坐标向量指示应使用服装图 I_c 中的哪些像素填充人体图 I_p 的给定像素。

损失函数:

外观流是一个高度自由的变量,总变差(total-variation)损失可以解决这个问题,以获得平滑的变形效果:

\mathcal L_{TV}=\displaystyle \sum^N_{i=1}{\rVert \nabla F_i\rVert _1}

此外,还加入了一个二阶光滑约束,其中,F^{t}_i 表示第 t 个点的流图 F_iN_t 表示第 t 个点水平、竖直和两个对角邻域的集合,\mathcal P 是广义 charbonnier 损失函数:

\mathcal L_{sec}=\displaystyle \sum^N_{i=1} \displaystyle \sum_{t} \displaystyle \sum_{\pi \in N_t} \mathcal P(F^{t-\pi}_i + F^{t+\pi}_i - 2F^{t}_i)

对于变形的服装和相应的变形遮罩,使用 L1 损失和感知损失来约束,从而使网络能够变形服装来适应人体姿势,其中,M_cS_c 分别表示服装图 I_c 的遮罩和人体图 I_p 的服装遮罩,\mathcal D 表示下采样函数,\Phi_m 表示在 ImageNet 预训练的 VGG-19 网络的第 m 个特征图:

\mathcal L_{L1}=\displaystyle \sum^{N}_{i=1}\rVert \mathcal W(\mathcal D_i({M_c},F_i)-\mathcal D_i(S_c)\rVert_1

\mathcal L_{VGG}=\displaystyle \sum^{N}_{i=3}\displaystyle \sum^{5}_{m=1} \rVert \Phi_m(\mathcal W(\mathcal D_i({\mathcal I_c},F_i))-\Phi_m(\mathcal D_i(S_c \bigodot I_p) \rVert _1

整个变形模块的总损失函数为:

\mathcal L_w = \mathcal L_{L1} + \lambda_{VGG} \mathcal L_{VGG} + \lambda_{TV}\mathcal L_{TV} + \lambda_{sec}\mathcal L_{sec}

扩散模型

在训练pipeline中有两条支路:上面的重建分支和下面的细化分支。二者主要的不同在于输入对象与优化目标的不同。为了更好的视觉体验,我们展示了对应于潜在空间(latent space)中变量的图像。

使用扩散模型细化粗略的生成结果。为了更好地利用初始的粗略结果,将训练分为两个分支:重建和细化,训练过程同时优化两个分支。

在优化重建分支的过程中,本模型可以依靠全局条件和局部条件生成相应的真实的人体图。细化分支通过控制初始噪声,提高模型预测结果和粗糙结果的相似度。全局条件 c 指使用冻结的预训练CLIP图像编码器从 I_c 提取的条件,由于LDM中的交叉注意力机制,可以很容易使用修复对象(比如形状、图案类别)的全局属性指导扩散模型的生成,但为某些细粒度信息(文字、图案内容和颜色)有效地提供信息却具有挑战性。细节的损失可以通过局部条件来弥补,将变形的衣服添加到修复图像 I_a 中作为扩散模型每个去噪步的输入。

值得注意的是,我们并没有改变修复遮罩 m ,这意味着 I_{lc} 中的衣服只用来提供细节信息,最终的修复结果会重绘全部的遮罩区域,所以最终生成结果中的服装可能与变形的服装不完全一致。这样做的好处是,可以防止某些不好的变形结果的不良影响。此外,还可以更好的连接人体部分和衣服部分。

为了更好的利用包含预先变形的服装的空间信息,并对齐最终生成结果和粗略结果 I_0' ,我们将其作为初始条件,添加噪声输入扩散模型中进行细化。

重建分支

重建分支的执行过程类似于vanilla扩散模型,vanilla扩散模型可以通过学习反向扩散过程生成真实的图片。对于人体图 I_0 ,我们首先对其执行前向的扩散过程 q(\cdot),根据马尔科夫链逐渐加噪声,并将其转化为高斯分布。为了降低计算的复杂度,我们采用潜在扩散模型 LDM ,该模型使用预训练的编码器 \mathcal E 将图片从图片空间编码至潜在空间,并使用解码器 \mathcal D 重建图片。前向过程在任意时间步 t 执行潜在变量 z_0=\mathcal E(I_0)

z_t = \sqrt{\alpha_t}z_0 + \sqrt{1-\alpha_t}\epsilon

其中 \alpha := \Pi^t_{s=1}(1-\beta_s), \epsilon \sim \mathcal N(0, I)) , \beta 是一个预定义的在T步的变量表

然后,将 I_{lc} 送入\mathcal E 获得 z_{lc} ,再将他们与下采样遮罩 m 相连 \{z_t, z_{lc}, m \} 作为输入。再去噪过程中,使用一个增强的扩散 UNet 预测输入的去噪变体。将从 I_c 中提取的全局变量 c 用交叉注意力的方式注入扩散 UNet 。因此,该分支的目标被定义为:

\mathcal L_{simple} = \rVert \epsilon - \epsilon_{\theta}(z_t, z_{lc}, m, c, t) \rVert _2

细化分支

细化分支基于粗略的结果 I_0' 修复人体区域、解决人体与服装接触的部分,也可以消除一些不合适的变形结果带来的负面影响。

虽然经过重建分支的训练,扩散模型在局部条件和全局条件的指导下,可以生成基本还原服装特征的生成图,由于缺乏空间信息的指导,生成图无法还原服装的图案分布。比如条纹服装,全局条件指导模型构建条纹图案,局部条件添加条纹的宽度和颜色等信息,然而这些信息依然不够充分。初始条件可以进一步向模型注入信息,比如条纹的排列和布局。

与重建分支相似,首先使用一个编码器 \mathcal E 从 I_0' 中提取z_0'z_0'=\mathcal E(I_0')),然后执行扩散网络的前向过程(加噪)得到 z_t',再将\{ z_t',z_{lc},m \}送入扩散网络进行去噪。

当获得模型预测出的噪声 \hat\epsilon ,我们可以通过反转等式获得细化后的潜在变量 \hat z ,并且可以恢复最终的图像结果(\hat I=\mathcal D(\hat z))。得到 \hat I 后使用感知损失优化它:

\mathcal L_{VGG} = \displaystyle \sum^5_{m=1} \rVert \phi_m(\hat I)-\phi_m(I_{gt}) \rVert

总之,扩散模型使用下面的目标函数进行端到端训练:

\mathcal L_d = \mathcal L_{simple} + \lambda_{perceptual}\mathcal L_{VGG}

结果

可视化结果

消融实验

  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值