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

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.mzph.cn/news/64065.shtml

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

相关文章

图:有向无环图(DAG)

1.有向无环图的定义 有向无环图:若一个有向图中不存在环,则称为有向无环图。 简称DAG图(Directed Acyclic Graph) 顶点中不可能出现重复的操作数。 2.有向无环图的应用 1.描述算数表达式 用有向无环图描述算术表达式。 解题步骤: 把各个操作数不重…

【前端入门案例1】HTML + CSS

案例一 <!DOCTYPE html> <html lang"en-US"><head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width"><title>My test page</title> </head><body><…

word6 图文混排

目录 7-1 段落缩进排版7-2 搞定多级列表难题 7-1 段落缩进排版 段落对齐 缩进问题 悬挂缩进&#xff1a;缩进首行以外的段落 段落对齐&#xff1a; 7-2 搞定多级列表难题

【Python从入门到进阶】34、selenium基本概念及安装流程

接上篇《33、使用bs4获取星巴克产品信息》 上一篇我们介绍了如何使用bs4来解析星巴克网站&#xff0c;获取其产品信息。本篇我们来了解selenium技术的基础。 一、什么是selenium&#xff1f; Selenium是一种用于自动化Web浏览器操作的开源工具。它提供了一组API&#xff08;应…

Spring Cloud Foundry上使用通配符模式匹配进行的安全绕过漏洞 CVE-2023-20873

文章目录 0.前言1.参考文档2.基础介绍描述如果满足以下任一条件&#xff0c;应用程序就不会有太大风险&#xff1a;受影响的Spring产品和版本 3.解决方案3.1. 升级版本3.2. 替代方案 0.前言 背景&#xff1a;公司项目扫描到 Spring Cloud Foundry上使用通配符模式匹配进行的安全…

Qt应用开发(基础篇)——进度对话框 QProgressDialog

一、前言 QProgressDialog类继承于QDialog&#xff0c;是Qt设计用来反馈进度的对话框。 对话框QDialog QProgressDialog提供了一个进度条&#xff0c;表示当前程序的某操作的执行进度&#xff0c;让用户知道操作依旧在激活状态&#xff0c;配合按钮&#xff0c;用户就可以随时终…

15.CSS发光按钮的悬停特效

效果 源码 <!DOCTYPE html> <html> <head><title>CSS Modern Button</title><link rel="stylesheet" type="text/css" href="style.css"> </head> <body><a href="#" style=&quo…

Revit SDK:AutoParameter 添加参数

前言 这个例子介绍如果往族文件里添加参数。 内容 Revit 的参数&#xff0c;参考官方文档&#xff1a; 这个例子的关键接口&#xff1a; // 通过 FamilyManager 添加参数 FamilyParameter AddParameter(string parameterName, BuiltInParameterGroup parameterGroup, Categ…

C++ 学习之 构造函数 和 析构函数

前言 总的来说&#xff0c;构造函数负责对象的初始化&#xff0c;而析构函数负责对象的清理和资源释放。它们是C面向对象编程中非常重要的概念&#xff0c;用于管理对象的生命周期&#xff0c;确保对象在创建和销毁时都能够正确地进行初始化和清理。 正文 看代码 class perso…

【Java 基础篇】Java 方法使用详解:让你轻松掌握方法的奥秘

如果你正在学习Java编程&#xff0c;方法是一个不可或缺的重要概念。方法允许你将代码组织成可重用的块&#xff0c;提高了代码的可维护性和可读性。在本篇博客中&#xff0c;我们将深入探讨Java方法的使用&#xff0c;从基础概念开始&#xff0c;逐步介绍如何定义、调用、传递…

深度图相关评测网站

文章目录 1 单目/Stereo相关测评网站介绍12 单目/Stereo相关测评网站介绍23 单目/Stereo相关测评网站介绍3 1 单目/Stereo相关测评网站介绍1 https://vision.middlebury.edu/stereo/eval3/ 2 单目/Stereo相关测评网站介绍2 http://www.cvlibs.net/datasets/kitti/eval_stereo…

[dasctf]misc1

不确定何种加密方式 P7NhnTtPUm/L3rmkP/eAhx5Vnbc2YyatkXCePJ0Wh2NYfqXGZCpZdCesMmEAihhUYI1PjoLq6FedZ7MSclA9h0/Dy4CavBwVg5RHr8XJmfbtuWkxK2Gn3sNTEzQi0p 1t_15_s3cR3t_k3y 也许是密钥

自动化测试(四):pytest结合allure生成测试报告

Allure 报告框架的名称 allure&#xff1a; noun [ U ] 诱惑;魅力;吸引力 文章目录 1. allure下载2. pytest框架使用allure3. 生成allure报告 1. allure下载 下载前需要先安装JDK&#xff0c;这里可以参考自动化测试(二)。 Allure下载路径&#xff1a;https://github.com/allu…

【数据结构】队列---C语言版(详解!!!)

文章目录 &#x1f438;一、队列的概念及结构&#x1f344;1、队列的概念定义&#x1f344;2、动图演示 &#x1f438;二、队列的实现&#x1f438;三、链表结构队列详解&#x1f34e;创建队列的结构⭕接口1&#xff1a;定义结构体&#xff08;QNode、Queue&#xff09;⭕接口2…

漏洞发现-web应用发现探针类型利用(43)

关于在真实环境下面&#xff0c;这个漏洞该如何发现 这里老师把它分成了三块第一类是 #已知cms 如常见的dedecms&#xff0c;discuz&#xff0c;wordpress等源码结构&#xff0c;这些都是网上比较知名的php源码的cms的名称&#xff0c;这是我们在国内常见的几个程序&#xf…

如何排查 Flink Checkpoint 失败问题?

分析&回答 这是 Flink 相关工作中最常出现的问题&#xff0c;值得大家搞明白。 1. 先找到超时的subtask序号 图有点问题&#xff0c;因为都是成功没失败的&#xff0c;尴尬了。 借图&#xff1a; 2. 找到对应的机器和任务 方法很多&#xff0c;这里看自己习惯和公司提供…

022-从零搭建微服务-短信服务(二)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff08;后端&#xff09;&#xff1a;https://gitee.com/csps/mingyue 源码地址&#xff08;前端&#xff09;&#xff1a;https://gitee.com/csps…

两台电脑共享文件设置

步骤一&#xff1a;确保网络连接正常&#xff0c;可网线直连。 两台电脑IP设置&#xff0c;例&#xff1a; 步骤二&#xff1a;启用共享功能。 1.在【控制面板】中选择【网络和Internet】&#xff1b; 2.点击【网络和共享中心】&#xff0c;在左侧导航栏中&#xff0c;点击【…

Python入门教程 - 判断语句(二)

目录 一、布尔类型 二、比较运算符 三、if判断语句 一、布尔类型 True False result1 10 > 5 result2 10 < 5 print(result1) print(result2) print(type(result1)) True False <class bool> 二、比较运算符 ! > < > < 比较运算的结果是布尔…

wireshark 流量抓包例题

一、题目一(1.pcap) 题目要求&#xff1a; 1.黑客攻击的第一个受害主机的网卡IP地址 2.黑客对URL的哪一个参数实施了SQL注入 3.第一个受害主机网站数据库的表前缀&#xff08;加上下划线例如abc&#xff09; 4.第一个受害主机网站数据库的名字 看到题目SQL注入&#xff0c…