通过接地段扩展 IDM-VTON 的多功能性
介绍
过去几年,我们一直生活在文本到图像生成的黄金时代。自从稳定扩散最初向开源社区发布以来,该技术的能力已经爆炸式增长,因为它已经集成到越来越广泛的管道中,以利用创新的计算机视觉模型。从 ControlNets 到 LoRAs,再到高斯泼溅,再到瞬时风格捕捉,很明显,我们的这项创新只会在范围上继续爆炸式增长。
在本文中,我们将了解令人兴奋的新项目“改进真实虚拟试穿的扩散模型”或 IDM-VTON。该项目是基于稳定扩散的最新、最伟大的管道之一,旨在为创意模型创建现实世界的实用程序:试穿服装。凭借令人难以置信的管道,现在可以用几乎任何可以想象到的衣服来装饰任何人物。在不久的将来,我们可以期望在各地的零售网站上看到这项技术,因为购物是由令人难以置信的人工智能进化而来的。
更进一步,在我们粗略地介绍了管道之后,我们还想介绍一下我们通过将 Grounded Segment Anything 添加到掩蔽管道中对管道所做的新颖改进。
先决条件
- 基本机器学习知识:了解分割和边界框等计算机视觉概念。
- Python 和 PyTorch:熟悉 Python 编程和 PyTorch 进行模型实现。
- 依赖项:安装
torch
、torchvision
和segment-anything
等库(如果提供)。 - 数据集准备:访问标记或未标记的图像数据集以执行分割任务。
- 硬件:支持 GPU 的系统,用于高效训练和推理。
什么是IDM-VTON?
IDM-VTON 的核心是一个使用两个图像虚拟地为人物穿上衣服的管道。用他们自己的话说,虚拟试穿“呈现一个穿着精选服装的人的图像,给出一对分别描绘该人和衣服的图像”(来源)。
我们可以看到上图中的模型架构。它由两个定制的 Diffusion UNet(TyonNet 和 GarmentNet)的并行管道以及图像提示适配器(IP-Adapter)模块组成。 TryonNet 是处理人物图像的主要 UNet。同时,IP 适配器对服装图像的高级语义进行编码,以便稍后与 TryonNet 一起使用。同时,GarmentNet 对服装图像的低级特征进行编码。
作为 TryonNet UNet 的输入,该模型将人类模型的噪声潜伏与从服装中提取的掩模和 DensePose 表示连接起来。 TryonNet 使用现在连接的潜在变量与用户提供的详细服装标题 [V] 作为 TryonNet 的输入。与此同时,GarmentNet 单独将详细的标题作为输入。
为了实现最终输出,在 TryonNet 中的扩散步骤进行到一半时,管道将 TryonNet 和 GarmentNet 的中间特征连接起来,将它们传递到自注意力层。将文本编码器和 IP 适配器的特征与交叉注意力层融合后,收到最终输出。
IDM-VTON 让我们做什么?
简而言之,IDM-VTON 让我们虚拟试穿衣服。这个过程非常强大且用途广泛,并且基本上能够将任何上身服装(衬衫、衬衫等)应用于任何身材。由于我们上面描述的复杂流程,输入对象的原始姿势和一般特征被保留在新衣服下面。虽然由于扩散建模的计算要求,这个过程仍然相当缓慢,但这仍然为物理试穿衣服提供了令人印象深刻的替代方案。随着运行成本随着时间的推移而下降,我们预计这项技术将在零售文化中得到普及。
改进IDM-VTON
在此演示中,我们希望展示我们在 IDM-VTON Gradio 应用程序中添加的一些小改进。具体来说,我们已经将模型的能力从演员的上半身扩展到整个身体,不包括鞋子和帽子。
为了实现这一点,我们将 IDM-VTON 与令人难以置信的 Grounded Segment Anything 项目集成。该项目使用 GroundingDINO 和 Segment Anything 来仅使用文本提示来分割、屏蔽和检测任何图像中的任何内容。
在实践中,Grounded Segment Anything 让我们通过将自动遮蔽的覆盖范围扩展到身体上的所有衣服来自动为人们的下半身穿上衣服。 IDM-VTON 中使用的原始遮蔽方法仅遮蔽上半身,并且在与人物轮廓的匹配程度方面有相当大的损失。接地段任何掩蔽对身体的保真度和准确度明显更高。
在演示中,我们添加了 Grounded Segment Anything 以与原始屏蔽方法配合使用。运行演示时,使用应用程序左下角的“Grounded Segment Anything”开关将其打开。
IDM-VTON 演示
设置
一旦您的机器启动,我们就可以开始设置环境。首先,将以下单元格中的每一行单独复制并粘贴到终端中。这是设置环境变量所必需的。
export AM_I_DOCKER=False
export BUILD_WITH_CUDA=True
export CUDA_HOME=/usr/local/cuda-11.6/
之后,我们可以复制以下整个代码块,然后粘贴到终端中。这将安装该应用程序运行所需的所有库,并下载一些必要的检查点。
## Install packages
pip uninstall -y jax jaxlib tensorflow
git clone https://github.com/IDEA-Research/Grounded-Segment-Anything
cp -r Grounded-Segment-Anything/segment_anything ./
cp -r Grounded-Segment-Anything/GroundingDino ./
python -m pip install -e segment_anything
pip install --no-build-isolation -e GroundingDINO
pip install -r requirements.txt
## Get models
wget https://huggingface.co/spaces/abhishek/StableSAM/resolve/main/sam_vit_h_4b8939.pth
wget -qq -O ckpt/densepose/model_final_162be9.pkl https://huggingface.co/spaces/yisol/IDM-VTON/resolve/main/ckpt/densepose/model_final_162be9.pkl
wget -qq -O ckpt/humanparsing/parsing_atr.onnx https://huggingface.co/spaces/yisol/IDM-VTON/resolve/main/ckpt/humanparsing/parsing_atr.onnx
wget -qq -O ckpt/humanparsing/parsing_lip.onnx https://huggingface.co/spaces/yisol/IDM-VTON/resolve/main/ckpt/humanparsing/parsing_lip.onnx
wget -O ckpt/openpose/ckpts/body_pose_model.pth https://huggingface.co/spaces/yisol/IDM-VTON/resolve/main/ckpt/openpose/ckpts/body_pose_model.pth
一旦这些完成运行,我们就可以开始运行应用程序。
IDM-VTON 应用演示
可以在代码单元或我们一直使用的同一终端中使用以下调用来运行演示。笔记本中的代码单元已为我们填写,因此我们可以运行它来继续。
!python app.py
单击共享的 Gradio 链接可在网页中打开该应用程序。从这里,我们现在可以将服装和人物图像上传到页面以运行 IDM-VTON!需要注意的一件事是,我们对原始版本的默认设置进行了一些更改,特别是降低了推理步骤并添加了“Grounded Segment Anything”选项,并在身体上寻找其他位置进行绘制。 Grounded Segment Anything 会将模型的功能扩展到对象的整个身体,并允许我们为他们穿上更多种类的衣服。这是我们使用原始演示提供的示例图像制作的示例,并试图找到一种荒谬的服装选择,即小丑服装:
使用 IDM-VTON 和接地段 Anything 制作的示例库
请务必尝试各种姿势和体型!它的用途非常广泛。
结束语
IDM-VTON 的巨大潜力显而易见。我们几乎可以在购买前试穿任何服装的日子很快就要到来,这项技术代表了朝着这一发展迈出的显着一步。我们期待看到未来在类似项目上开展更多工作!