基于Stable Diffusion的AIGC服饰穿搭实践

news2025/2/28 15:27:10

06f62f3fa92dca0e54b18e2edc2eb8a0.gif

本文主要介绍了基于Stable Diffusion技术的虚拟穿搭试衣的研究探索工作。文章展示了使用LoRA、ControlNet、Inpainting、SAM等工具的方法和处理流程,并陈述了部分目前的实践结果。通过阅读这篇文章,读者可以了解到如何运用Stable Diffusion进行实际操作,并提供更优质的服饰虚拟穿搭体验。

19d1f183309e7dc62e28016ecb2e5d77.png

业务背景

随着AI技术的不断创新,AI创作工具已经逐渐成为艺术家、设计师和创作者们的最佳助手。在AI生图领域,Stable Diffusion以其开源、生出图片质量高等众多优势脱颖而出,展现出强大的综合实力。我们希望利用Stable Diffusion作为工具,在虚拟服饰穿搭领域进行一些创新和探索,期待通过AI技术的应用,在线上提供更多样化、个性化的服装选择和搭配方案,为用户提供更好的服饰虚拟穿搭体验。

441474cb7e7f4c8ea3d3d085967ff721.png

现状调研

在虚拟穿搭领域,目前主要有两类主流方法,分别是虚拟试衣VTON和基于Stable Diffusion的AIGC穿搭。

  虚拟试衣VTON

基于图像的虚拟试衣方法的处理流程通常有两个阶段:将试穿的服装扭曲以与目标人物对齐的几何匹配模块(GMM)和将扭曲的服装与目标人物图像混合的Try-On Module (TOM)。

dc6e39b0e29bb45d1d332e6913b6f867.png

为了训练神经网络,理想的数据集应该是:用户身穿自己衣服的照片,要试穿的衣服产品图,用户身着要试穿衣服的照片,在一般情况下获取到这样大量的理想数据集是非常难的。因此,对于VTON而言,大多数虚拟试衣模型神经网络的训练,都建立在一个上万张女模型数据集的基础上,且这上万张模特数据照片以正面视角为主,缺乏多机位多角度的拍摄。样本图片大小固定为256*192,出图的清晰度已经很难满意目前的用户需求。上述原因都限制了VTON实际应用中的效果。

  基于Stable Diffusion的AIGC穿搭

利用Stable Diffusion的大模型生图能力,辅以LoRA、ControlNet、Inpainting等“外挂”手段,增强穿搭出图的可控性与稳定性。

  • LoRA

LoRA,英文全称Low-Rank Adaptation of Large Language Models,直译为大语言模型的低阶适应,是一种参数高效性微调方法。LoRA的基本原理是在冻结预训练好的模型权重参数情况下,通过往模型中加入额外的网络层,并只训练这些新增的网络层参数。由于这些新增参数数量较少,这样不仅 finetune 的成本显著下降,还能获得和全模型微调类似的效果。

412130ccb6bdb27c6ec2685631b5ceae.png

在https://civitai.com/等主流的绘画模型分享网站中,我们可以下载并运用已经finetune好的LoRA模型,用于输出特定风格的人、场景、服饰等。在我们服饰生成的工作中,我们通过对每件服饰准备了十张左右的训练样本图片,经过数据清洗、打标等处理流程后,通过训练生成一个LoRA小模型,这个LoRA模型可以学习到服饰的颜色、纹理等特征,最后应用LoRA模型产出AIGC的服饰穿搭。

  • ControlNet

在完成上述的LoRA训练后,如果我们希望AI生成的图片更易控制,人物姿态更明确,就可以使用ControlNet插件。ControlNet的核心能力是通过设置各种条件来让AI生成的最终图片结果更加可控。这些条件是通过调整预处理器参数实现的,因此我们需要先了解ControlNet各种预处理器模块的功能。下图展示了一些主要预处理器的功能和对应的模型。

8b647f516fc08d5dae85095bf4e3eec2.png

例如,我们可以选择Canny预处理器,再选择对应的模型,对输入的图片进行边缘检测,生成线稿,然后根据Prompt提示词来生成与上传图片同样构图的画面。

eaf8b0caee02d464ca88d196b201f717.png

  • Inpainting

Inpainting模式是Stable Diffusion图生图中的一种特殊模式,用户可以通过上传Mask图,使Stable Diffusion根据其余信息(例如Prompt、LoRA、ControlNet)保留Mask内部的全部细节,重绘其余所有部分。

3cea0f2b86e5c4412b3dc233b70852ae.png

可以通过Mask Mode选择重绘Masked部分或者除Masked外的剩余部分。

  • Segment Anything

Segment Anything如其名分割一切,是一个由Meta开源的图像分割模型,号称图像分割领域的GPT 4.0。网页demo如下:https://segment-anything.com/demo。在Stable Diffusion的Web UI中,我们也可以通过下载安装Segment Anything插件来实现相同的功能。分割方式非常友好,可以通过左键、右键简单地点击来选择或者提出对应物体,物体就会立即被分割出来,可以绘制成Mask图,直接发送至上节的Inpainting模式中使用。

f0de5a88dbee1c400cd95648420a5220.png

5d3812cacdd1aeb36eee854557a811df.png

处理流程

  本地部署

Stable Diffusion Web UI 是一个基于 Stable Diffusion 的基础应用,利用 gradio 模块搭建出交互程序,可以在低代码 GUI 中立即访问 Stable Diffusion,我们在本地部署了Stable Diffusion Web UI ,本地机器显卡配置为RTX3060 12GB。Stable Diffusion Web UI为保持代码整洁和便于管理,逐步将非核心功能解耦并转为插件和拓展脚本形式提供,我们可以根据需要从对应的GitHub仓库中下载插件,并放到Web UI 路径下的extensions文件夹下,启动时Web UI会从中自动加载插件。

Stable Diffusion Web UI 地址:https://github.com/AUTOMATIC1111/stable-diffusion-webui

  LoRA训练

  • 训练样本背景去除、大小裁剪

在进行LoRA训练前,对于每一件服饰,我们批量处理了约10张样本图片,去除了背景并统一裁剪为512*512的尺寸。

  • Tag生成

这里,我们使用Tagger插件,Tagger插件可以批量反推样本图片的Tag标签数据,相比于Stable Diffusion图生图中自带的CLIP和DeepBooru插件效果更好。输入样本图片所在的文件夹信息,并在下方填写Additional/Exclude tags选项,即可预设或者屏蔽某些Tag标签的产出。

Tagger 地址:https://github.com/toriato/stable-diffusion-webui-wd14-tagger

3999f218fa27c27dfbfa1f94ced792dd.png

  • Tag编辑

在tag标签生成后,可以通过Dataset Tag Editor插件,对tag进行编辑。目前插件的tag反推精准度依然有限,时常需要人工介入剔除掉一些不相干或者完全错误的Tag词,以保证训练LoRA模型的精准性和还原性。

ff7b7d5204a4d066cce81b65748a4ec5.png

Dataset Tag Editor 地址:https://github.com/toshiaki1729/stable-diffusion-webui-dataset-tag-editor

  • 本地训练

在完成上述一系列图片、tag标签的预处理后,就正式进入到了LoRA模型的训练阶段,在本机RTX3060 12GB的机器配置下,完成对示例11张样本图片50批次训练的时间成本在30分钟左右。训练完成后,单个LoRA模型的大小在37MB左右。

9beb196ed56ddaf9cb314ef48933047f.png

  ControlNet

在以人物为主的生成图中,最常采用的是openpose系列的预处理器,openpose来对人物全身的骨骼姿态进行检测,使得输出图和上传输入图保留一致的人体骨骼形体,增强输入人物的姿态可控。可以在ControlNet插件中预览人体的骨骼姿态,也可以通过调节Control Weight权重参数来控制骨骼姿态对最终出图结果的影响。

febb0c5de3a89b08c2fe22079a3eabf7.png

9f3e882f790b21b453cfad9382e01981.jpeg

成果展示

  单件试衣

针对于不同类型的服饰采集了训练样本,进行了LoRA的训练,服饰类型包括衬衫、外套、裤子、鞋子等,查看了单一LoRA与模特、虚拟人结合出图的效果。结果发现普通上衣下衣类别的服饰准确率比较高,可以基本还原服饰的颜色、纹理等特征,上身效果也不错。

  • T恤

输入

ee1b2641bab690d991674b71f3d2042e.png

输出

8a0ca5834e2280f838b6ec3a9cc514e2.png

  • 外套

输入

63088a79e4a3e19a1d21aede75d7c3cd.png

输出

71cbf5aa9860be35e479af24e3a850d2.jpeg

  • 夹克

输入

5b3ed72c16eda256e87fc9982acbd7d8.png

输出

aa01584a80dce22465f014d47a2efa4b.png

  • 衬衫

输入

0c7aa50afafd3c230e2649660aec6d8f.png

输出

ae7459e5f9311085f936f5d5e806639c.png

  • 长裙

输入

d24e303f12f6a09df354ef79f0aa4865.png

输出

45d75d6939c1e846d4f462a08b319e48.png


输入

69b3a5b3892851636f64514cae7bddb5.png

输出

d4ba5d805324c61744c23123cbbd4930.png

  季节试衣

在对单一服饰的LoRA训练出图后,我们又对于不同季节的服饰套装进行了风格训练,选取了春秋季、夏季、冬季三个季节的服饰穿搭套装进行了LoRA训练。从产出的图片效果来看,服饰套装的上身效率很不错,搭配比较合理,与季节的关联度比较高。

  • 春秋季

79433175a0ba4b06d9106c269dfcc565.png

  • 夏季

a7afcdbfb70aadcf1d81fbd2fbe9e173.png

  • 冬季

dccac86bed4d308d3122b37523472f60.png

b99211ffb98414277dde5d4b98eb6864.jpeg

总结

我们基于在本地环境搭建的Stable Diffusion,对服饰进行了LoRA小模型微调,学习到服饰自身的特征信息,利用ControlNet插件提升了出图的可靠性与稳定性,初步完成了AIGC的服饰穿搭DEMO实践。从单件服饰的生成穿搭来看,普通类的上下衣主服饰还原度比较高。季节类的套装和人物模特合图效果尚可,上身效果也比较不错。

d46090838c4c4a8568a7178aa69cfd64.jpeg

参考文献

  1. CP-VTON+: Clothing Shape and Texture Preserving Image-Based Virtual Try-On(地址:https://minar09.github.io/cpvtonplus/cvprw20_cpvtonplus.pdf)

  2. Segment Anything(地址:https://segment-anything.com/)

  3. continue-revolution/sd-webui-segment-anything(地址:https://github.com/continue-revolution/sd-webui-segment-anything)

  4. toshiaki1729/stable-diffusion-webui-dataset-tag-editor(地址:https://github.com/toshiaki1729/stable-diffusion-webui-dataset-tag-editor)

  5. 零基础读懂Stable Diffusion(I):怎么组成(地址:https://zhuanlan.zhihu.com/p/597247221)

  6. Stable Diffusion 常用术语(地址:https://www.bilibili.com/read/cv24001275/?from=search)

ef4a53d2d8588d2cf1540d8826124366.jpeg

团队介绍

我们是大淘宝技术-手猫技术-营销&导购团队,我作为一支专注于手机天猫创新的商业化及导购场景探索的团队,我们团队紧密依托淘天集团强大的互联网背景,致力于为手机天猫带来更高效、更具创新性的技术支持和商业化的导购场景。我们的团队成员来自不同的技术领域和营销导购领域,拥有丰富的技术经验和营销经验。我们不断探索并实践新的技术,创新商业化的导购场景,并将这些创新技术应用于手机天猫业务中,提高了用户体验和平台运营效率。作为一支技术创新和商业化的团队,我们致力于为手机天猫带来更广阔的商业化空间和更高效的技术支持,赢得了用户和客户的高度评价和认可。我们团队一直秉承“技术领先、用户至上”的理念,不断探索创新、提升技术水平,为手机天猫的导购场景和商业化发展做出重要贡献。

¤ 拓展阅读 ¤

3DXR技术 | 终端技术 | 音视频技术

服务端技术 | 技术质量 | 数据算法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/965877.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ScreenToGif-动图制作软件实用操作

ScreenToGif官网:ScreenToGif ⭕第一步:启动页面 ⭕第二步:选项 🥝录像机-捕获频率选择手动-播放延迟1000ms(可以任意) ⭕第三步:录像机开始录屏 🥝我们调整录屏的大小后,打开画图&#xff0c…

HK1 RBOX X4,Vontar X4,S905 X4 刷 ATV

准备工作 需要HK1 RBOX X4一个(内存版本不限 通刷),机顶盒电源,USB双公线一条(可以使用两个usb数据线剪开后相同颜色对接使用,最好使用电烙铁焊接一下更稳定),安装 INTEL CPU 运行 w…

Empowering Long-tail Item Recommendation through Cross Decoupling Network (CDN)

Empowering Long-tail Item Recommendation through Cross Decoupling Network (CDN) 来源: KDD’2023Google Research 文章目录 Empowering Long-tail Item Recommendation through Cross Decoupling Network (CDN)长尾问题分析CDNItem Memorization and General…

【算法】leetcode 105 从前序与中序遍历序列构造二叉树

题目 输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 示例 1: Input: preorder [3,9,20,15,7], inorder [9,3,15,20,7] Output: [3,9,20,null,null,15,7]示例 2: Input: pr…

可控生成之GLIGEN原理

🤗关注公众号 funNLPer 快乐白嫖🤗 论文:GLIGEN: Open-Set Grounded Text-to-Image Generation 代码:gligen/GLIGEN 项目地址:GLIGEN demo地址:gligen demo 文章目录 1. 动机2. 模型结构及原理2.1 输入处理2.1.1 Caption Tokens2.1.2 Grounding Tokens2.2 Gated Sel…

应急三维电子沙盘数字孪生系统

一、简介应急三维电子沙盘数字孪生系统是一种基于虚拟现实技术和数字孪生技术的应急管理工具。它通过将真实世界的地理环境与虚拟世界的模拟环境相结合,实现了对应急场景的模拟、分析和决策支持。该系统主要由三维电子沙盘和数字孪生模型两部分组成。三维电子沙盘是…

ROS-5.自定义topic消息格式

自定义topic消息格式 1. 定义消息1.1. 定义msg文件1.2. 在package.xml中添加功能包依赖1.3. 在CMakeList.txt添加编译选项1.4. 编译 2.定义发布者和订阅者2.1 定义发布者2.2. 定义订阅者2.3. 修改CMakeList.txt2.4 编译 3. 使用消息3.1 启动ros主程序3.2. 启动发布者3.3 启动订…

处理时延降低24倍,联通云粒数据引擎优化实践

*作者:郑扬勇,云粒星河数据中台产品负责人 云粒智慧科技有限公司成立于 2018 年 6 月,是中国联通集团混改以来成立的首家合资公司,是中国智慧城市数智化建设者。一直以来,云粒智慧以数字化、智能化、集约化产品为核心&…

[杂谈]-2023年实现M2M的技术有哪些?

2023年实现M2M的技术有哪些? 文章目录 2023年实现M2M的技术有哪些?1、寻找连接2、M2M与IoT3、流行的 M2M 协议 在当今的数字世界中,机器对机器 (M2M) 正在迅速成为标准。 M2M 包括使联网设备能够交换数据或信息的任何技术。 它可以是有线或无…

关于已经安装了TorchCRF,导入时却提示“ModuleNotFoundError: No module named ‘torchcrf‘”的解决办法

应用python时,想导入torchcrf库 from torchcrf import CRF 但系统提示:ModuleNotFoundError: No module named torchcrf 在命令提示符里输入“pip list”检查已安装库,发现torchcrf已经安装 搞了半天,发现是大小写的问题&#x…

2023.9 - java - 浅拷贝

与 js的浅拷贝不同: 在 JavaScript 中, Object.assign() 或 spread 运算符等方法可以实现浅拷贝,但只针对对象的第一层属性进行复制。如果一个对象只包含基本数据类型的属性,那么对浅拷贝出来的对象进行修改不会影响原始对象&…

Spring IOC的理解

总: 控制反转(IOC):理论思想,传统java开发模式,对象是由使用者来进行管理,有了spring后,可以交给spring来帮我们进行管理。依赖注入(DI):把对应的…

React笔记(四)类组件(2)

一、类组件的props属性 组件中的数据,除了组件内部的状态使用state之外,状态也可以来自组件的外部,外部的状态使用类组件实例上另外一个属性来表示props 1、基本的使用 在components下创建UserInfo组件 import React, { Component } from…

OpenCV基本操(IO操作,读取、显示、保存)

图像的IO操作,读取和保存方法 1.1 API cv.imread()参数: 要读取的图像 读取图像的方式: cv.IMREAD*COLOR:以彩色模式加载图像,任何图像的图像的透明度都将被忽略。这是默认参数 标志: 1 cv.IMREAD*GRAYSCALE :以…

【进阶之路】pytest自动化测试框架从0-1精通实战

前言 1、运行方式 命令行模式: pytest -s login.py主函数模式: if __name__ __main__:pytest.main(["-s", "login.py"])pytest.ini运行: 在 pytest.ini 文件中配置 pytest 的运行参数。 注意点: 位置&…

车载监管模块项目需求分析报告

目录 1 文档说明.......................................................................................... 4 2 参考文件.......................................................................................... 4 3 概述.......................................…

真机安装Linux Centos7

准备工具: 8G左右U盘最新版UltraISOCentOS7光盘镜像 操作步骤 下载镜像 地址:http://isoredirect.centos.org/centos/7/isos/x86_64/ 安装刻录工具UltraISO,刻录镜像到U盘 ① 选择ISO镜像文件 ② 写入磁盘镜像,在这里选择你的U盘…

NLP(六十七)BERT模型训练后动态量化(PTDQ)

本文将会介绍BERT模型训练后动态量化(Post Training Dynamic Quantization,PTDQ)。 量化 在深度学习中,量化(Quantization)指的是使用更少的bit来存储原本以浮点数存储的tensor,以及使用更少的…

C#知识点、常见面试题

相关源码 https://github.com/JackYan666/CSharpCode/blob/main/CSharpCode.cs 0.简要概括 1.删除集合元素 1.For循环删除集合元素:从后面往前删除 从前往后删,有可能不能完全删除 #region 01.For循环删除集合元素void Test01_ForDelListElement(){//错误代码 虽然可以跑…

说说你了解的 Nginx

分析&回答 nginx性能数据 高并发连接: 官方称单节点支持5万并发连接数,实际生产环境能够承受2-3万并发。内存消耗少: 在3万并发连接下,开启10个nginx进程仅消耗150M内存 (15M10150M) 1. 正向、反向代理 所谓“代理”,是指在内网边缘 …