基于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技术 | 终端技术 | 音视频技术

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《Web安全基础》04. 文件上传漏洞

web 1:文件上传漏洞2:WAF 绕过2.1:数据溢出2.2:符号变异2.3:数据截断2.4:重复数据 本系列侧重方法论,各工具只是实现目标的载体。 命令与工具只做简单介绍,其使用另见《安全工具录》…

【MySQL学习笔记】(七)内置函数

内置函数 日期函数示例案例-1案例-2 字符串函数示例 数学函数其他函数 日期函数 示例 获得当前年月日 mysql> select current_date(); ---------------- | current_date() | ---------------- | 2023-09-03 | ---------------- 1 row in set (0.00 sec)获得当前时分秒…

Web安全——穷举爆破上篇(仅供学习)

Web安全 一、概述二、常见的服务1、burpsuite 穷举后台密码2、burpsuite 对 webshell 穷举破解密码3、有 token 防御的网站后台穷举破解密码3.1 burpsuite 设置宏获取 token 对网站后台密码破解3.2 编写脚本获取token 对网站后台密码破解 4、针对有验证码后台的穷举方法4.1 coo…

Autofac中多个类继承同一个接口,如何注入?与抽象工厂模式相结合

多个类继承同一个接口,如何注入?与抽象工厂模式相结合 需求: 原来是抽象工厂模式,多个类继承同一个接口。 现在需要使用Autofac进行选择性注入。 Autofac默认常识: Autofac中多个类继承同一个接口,默认是最后一个接口注入的类。 解决方案:(约定大于配…

ssm+vue“魅力”繁峙宣传网站源码和论文

ssmvue“魅力”繁峙宣传网站源码和论文102 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身…

16 个前端安全知识

16 个前端安全知识 去年 security course 上的是 React,然后学了一些 一些 React 项目中可能存在的安全隐患,今年看了一下列表,正好看到了前端也有更新,所以就把这个补上了。 一个非常好学习各种安全隐患的机构是 https://owasp…

国标视频云服务EasyGBS国标视频平台迁移服务器后无法启动的问题解决方法

国标视频云服务EasyGBS支持设备/平台通过国标GB28181协议注册接入,并能实现视频的实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。平台部署简单、可拓展性强,支持将接入的视频流进行全终端、全平台分发,分发的视频…

Java“牵手”1688图片识别商品接口数据,图片地址识别商品接口,图片识别相似商品接口,1688API申请指南

1688商城是一个网上购物平台,售卖各类商品,包括服装、鞋类、家居用品、美妆产品、电子产品等。要通过图片地址识别获取1688商品列表和商品详情页面数据,您可以通过开放平台的接口或者直接访问1688商城的网页来获取商品详情信息。以下是两种常…

隧道结构健康监测系统,保障隧道稳定安全运行

隧道是地下隐蔽工程,会受到潜在、无法预知的地质因素影响,早期修建的隧道经常出现隧道拱顶开裂、地表沉降、隧道渗漏水、围岩变形、附近建筑物倾斜等隧道的健康问题变得日益突出,作为城市生命线不可或缺的一部分,为了确保隧道工程…

【C++技能树】继承概念与解析

Halo,这里是Ppeua。平时主要更新C,数据结构算法,Linux与ROS…感兴趣就关注我bua! 继承 0. 继承概念0.1 继承访问限定符 1. 基类和派生类对象赋值兼容转换2. 继承中的作用域3. 派生类中的默认成员函数4.友元5.继承中的静态成员6.菱…

无涯教程-JavaScript - WEIBULL函数

WEIBULL函数取代了Excel 2010中的WEIBULL.DIST函数。 描述 该函数返回威布尔分布。在可靠性分析中使用此分布,如计算设备的平均故障时间。 语法 WEIBULL(x,alpha,beta,cumulative)争论 Argument描述Required/OptionalXThe value at which to evaluate the function.Requir…

度矩阵、邻接矩阵

度矩阵(degree matrix) 度矩阵是对角阵,对角上的元素为各个顶点的度,顶点vi的度表示和该顶点相关联的变得数量。 在无向图中,顶点vi的度d(vi)N(i)(即与顶点相连的边的数目)有向图中&#xff0…

Python工具箱系列(四十一)

使用zip批量压缩文件 前文的代码示例了使用gzip对单个文件进行压缩。本文示例使用更通用的zipfile来批量压缩文件。zipfile也是python内置的库,使用起来非常方便。废话不说,直接上代码示例。 import dbm import glob import zipfile# 保存压缩计划的库名…

Linux 指令心法(四)`touch` 创建一个新的空文件

文章目录 命令的概述和用途命令的用法命令行选项和参数的详细说明命令的示例命令的注意事项或提示 命令的概述和用途 touch 是一个用于在 Linux 和 Unix 系统中创建空文件或更改现有文件的访问和修改时间的命令。如果指定的文件不存在,touch会创建一个新的空文件&a…

计算机毕设 基于深度学习的植物识别算法 - cnn opencv python

文章目录 0 前言1 课题背景2 具体实现3 数据收集和处理3 MobileNetV2网络4 损失函数softmax 交叉熵4.1 softmax函数4.2 交叉熵损失函数 5 优化器SGD6 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点&a…

Linux系统调试中出现核心转储(core dump)的问题

​ 大家好,我是ST。今天主要分享一下,Linux应用程序发生Segmentation fault段错误时,如何利用core dump文件定位错误。 核心转储 在 Linux 系统中,常将“主内存”称为核心(core),而核心映像(core image) 就是 “进…

【操作系统】一文快速入门,很适合JAVA后端看

作者简介: 目录 1.概述 2.CPU管理 3.内存管理 4.IO管理 1.概述 操作系统可以看作一个计算机的管理系统,对计算机的硬件资源提供了一套完整的管理解决方案。计算机的硬件组成有五大模块:运算器、控制器、存储器、输入设备、输出设备。操作…

OceanBase 4.1解读:读写兼备的DBLink让数据共享“零距离”

梁长青,OceanBase 高级研发工程师,从事 SQL 执行引擎相关工作,目前主要负责 DBLink、单机引擎优化等方面工作。 沈大川,OceanBase 高级研发工程师,从事 SQL 执行引擎相关工作,曾参与 TPC-H 项目攻坚&#x…

vue3中axios的使用方法

在Vue 3中使用axios发送HTTP请求的方法与Vue 2中基本相同。首先,需要安装axios库: npm install axios然后,在Vue组件中引入axios: import axios from axios;接下来,可以在Vue组件的方法中使用axios发送HTTP请求。例如…

使用多进程的方式改写聊天程序(有名管道)

目录 1、思路2 、步骤 1、思路 2 、步骤 步骤1&#xff1a;创建两个管道 makefifo fifo1 fifo2步骤2&#xff1a;编写talkA.c文件 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<sys/types.h> #include<sys/stat.h> #in…