基于图像的虚拟穿衣是一种流行且前景广阔的图像合成技术,能够显著改善消费者的购物体验,并降低服装商家的广告成本。顾名思义,虚拟穿衣任务旨在生成目标人穿着给定服装的图像。
OOTDiffusion简述
图1 虚拟换衣
基于图像的虚拟穿衣目前面临两个主要挑战:
首先,生成的图像应足够逼真和自然,以避免不和谐感。大多数最近关于虚拟试穿的研究利用生成对抗网络(GANs)或潜在扩散模型(LDMs)进行图像生成。先前基于GAN的方法通常难以生成正确的服装褶皱、自然的光影或逼真的人体。因此,更多近期的工作倾向于基于LDM的方法,这些方法有效提高了试穿图像的逼真度。
第二个关键挑战是尽可能保留服装的细节特征,如复杂的文本、纹理、颜色、图案和线条等。先前的研究执行显式的变形过程,将服装特征与目标人体对齐,然后将变形后的服装输入到生成模型(即GANs和LDMs等)中。因此,这种方法的性能极大地依赖于独立变形过程的有效性,而这一过程容易对训练数据过拟合。
图2 OOTDiffusion模型
鉴于上述问题的前景和挑战,一种新颖的基于LDM的虚拟试穿方法,称为Outfitting over Try-on Diffusion(OOTDiffusion;见图2)被提出。
-
首先,充分利用预训练的潜在扩散模型的优势,确保生成图像的高逼真度和自然的试穿效果,并设计了一种装配UNet模型,以在潜在空间中进一步学习服装的细节特征。
-
然后,OOTDiffusion提出了一种装配融合过程,以在去噪UNet的自注意力层中精确对齐服装特征与噪声人体。通过这种方式,服装特征能够顺利适应各种目标人体类型和姿势,而不会因独立变形过程而导致信息丢失或特征扭曲。
图3 OOTDiffusion 丢弃操作
-
此外,OOTDiffusion执行了一种装配丢弃操作,在训练中随机丢弃少量服装潜变量,以启用关于服装特征的无分类器。通过这种方法,可以简单地通过指导尺度调整服装控制对生成结果的影响,从而进一步增强OOTDiffusion方法的可控性。
-
OOTDiffusion模型左侧部分,服装图像被编码到潜在空间,并输入到装配UNet中进行单步处理。由CLIP编码器生成的条件输入,服装特征通过装配融合被引入到去噪UNet模型中。特别是在训练过程中,对服装潜变量执行装配丢弃操作,以启用无分类器指导操作。右侧部分,输入的人体图像根据目标区域进行遮罩,并与高斯噪声拼接,作为去噪UNet的输入进行多次采样。去噪后,特征图被解码回图像空间,作为模型的试穿结果进行输出。
OOTDiffusion模型生成的效果与其他模型对比,有了较大的提升,可以从对比图可以看出,OOTDiffusion模型生成的效果并没有改变服装的特性,而其他的模型多多少少更改了服装的特性,给人的感觉并没有换上合适的衣服。
图4 模型对比
OOTDiffusion实战
OOTDiffusion是一个开源的项目,且提供了预训练模型,大家可以在GitHub上面找到相关的下载链接,下载预训练权重,然后复制整个模型空间的代码就可以实现虚拟换衣操作了。当然在实现虚拟换衣代码前,需要安装相关的第三方库以及相关的torch环境。最后可以直接使用cmd窗口中进行代码的实现。
git clone https://github.com/levihsu/OOTDiffusion
conda create -n ootd python==3.10
conda activate ootd
pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2
pip install -r requirements.txt
# 只换半身衣服
cd OOTDiffusion/run
python run_ootd.py --model_path <model-image-path> --cloth_path <cloth-image-path> --scale 2.0 --sample 4
#换全身衣服
cd OOTDiffusion/run
python run_ootd.py --model_path <model-image-path> --cloth_path <cloth-image-path> --model_type dc --category 2 --scale 2.0 --sample 4
OOTDiffusion提供了2种预训练模型,半身模型与全身模型。本身模型可以换上半身服装,而全身模型,不仅可以换上半身的衣服,还可以换下半身的服装。代码执行时,需要指定模型与换的衣服。
图5 OOTDiffusion更换下半身服装
当然代码实现,需要一定的技术手段,需要稍微懂一些编程技术,而OOTDiffusion模型已经上架到了hugging face上,其hugging face提供免费使用的GUI使用界面。只需要在GUI界面上,选择或者上传自己的图片,并选择或者上传需要换的服装,点击run即可,等待一段时间后,模型会自动生成对应的换衣效果。
图6 hugging face 体验界面
图7 hugging face体验界面
当然hugging face也提供全身换衣服的模型,可以在GUI界面选择上身服装与下身服装进行换衣,或者选择一个裙子进行整体服装更换。
图8 OOTDiffusion更换裙子
图9 OOTDiffusion更换上半身服装
https://github.com/levihsu/OOTDiffusion?tab=readme-ov-file
https://arxiv.org/abs/2403.01779
https://huggingface.co/spaces/levihsu/OOTDiffusion