LLM大模型实战项目--基于Stable Diffusion的电商平台虚拟试衣

news2024/11/15 20:37:28

本文详细讲解LLM大模型实战项目,基于Stable Diffusion的电商平台虚拟试衣

一、项目介绍

二、阿里PAI平台介绍

三、阿里云注册及开通PAI

四、PAI_DSW环境搭建

五、SD+LORA模型微调

一、项目介绍

        AI虚拟试衣是一种创新的技术,利用人工智能和计算机视觉技术,能够让用户在线上购物时实时试穿衣物,以便更好地了解衣物的效果和适合程度。以下是AI虚拟试衣的一些功能和优势:

1. 实时试穿:用户可以通过上传照片或使用摄像头,将自己的身体映射到虚拟试衣系统中,实时试穿衣物。这样,用户无需亲自到实体店试衣,也能够得到试穿的体验。

2. 个性化推荐:AI虚拟试衣系统可以根据用户的身体特征和喜好,推荐最适合的衣物款式和尺寸。这样,用户能够更快地找到满意的衣物,提高购物的效率。

3. 多角度展示:AI虚拟试衣系统可以将衣物在虚拟身体上的效果以多个角度展示给用户,让用户全面了解衣物的外观和质感。这有助于用户更准确地评估衣物的适合度。

4. 试衣反馈:AI虚拟试衣系统可以提供试衣反馈,比如衣物的松紧度、长度等方面是否合适。用户可以根据反馈进行调整,以便找到最适合自己的衣物。

5. 节省时间和成本:AI虚拟试衣系统能够帮助用户节省试衣的时间和成本,无需去实体店试穿,也无需购买后再退换。用户可以在家中轻松地试穿衣物,提高购物的便利性。

        AI虚拟试衣为用户提供了更方便、更个性化的在线购物体验,同时也为商家提供了更好的销售和推广渠道。这项技术的发展,将有助于改变人们的购物方式,并推动线上购物的发展。

 该项目基于stable diffusion,使用Lora进行服饰训练和可控生成。

通过添加少量的可微调参数和使用少量的数据集,快速进行模型的微调,从而为模特、动作、背景等提供广泛的生成空间

二、阿里PAI平台介绍

        阿里巴巴PAI平台(Ali Prediction AI Platform)是阿里巴巴集团开发的一种集成化AI开发平台。PAI平台提供了一系列AI算法和工具,可用于构建和部署各种AI应用。PAI平台提供了丰富的AI算法库,包括图像和视频识别、自然语言处理、声音和语音处理等多种领域。开发者可以使用这些算法来构建自己的AI模型,并通过PAI平台的模型训练和部署功能进行模型的训练和使用。PAI平台还提供了一套完整的工具链,用于支持AI应用的开发和管理。这些工具包括数据处理工具、模型训练和调试工具、模型部署和监控工具等,可帮助开发者高效地进行AI应用的开发和运维。PAI平台还提供了一些额外的功能,如模型评估和推理加速等。开发者可以使用这些功能来评估和优化自己的AI模型,并提供更高效的推理性能。

按照机器学习全流程,PAI分别提供了数据准备、模型开发与训练及模型部署阶段的产品:

        1. 数据准备:PAI提供了智能标注,支持在多种场景下进行数据标注和数据集管理。

        2. 模型开发与训练:PAI提供了可视化建模(Designer)、交互式建模(DSW)、分布式 训练(DLC)以及特征平台(FeatureStore),满足不同的建模需求。

        3. 模型部署:PAI提供了模型在线服务(EAS)和推理加速工具(Blade),帮助您快速地 将模型部署为服务。同时,PAI提供了智能生态市场,您可以获取业务解决方案和模型 算法,实现相关业务和技术的高效对接。

业务层:PAI应用于金融、医疗、教育、交通以及安全等各个领域。阿里巴巴集团内部的搜索 系统、推荐系统及金融服务系统等,均依赖于PAI进行数据挖掘。

本项目基于PAI平台实现。

三、阿里云注册及开通PAI

        进入阿里云官网www.aliyun.com,单击页面右上角的登录/注册按钮,点击注册。

个人实名认证

登录PAI控制台

选择需要开通的地域后,单击页面中间的开通引导按钮

        在右侧弹出的订单详情页面确认开通基本信息,并配置影响开通的关键参数, 完成后可单击前往默认工作空间或进入PAI控制台,进行后续的AI开发工作。

四、PAI_DSW环境搭建

        PAI-DSW是PAI产品的云端机 器学习开发IDE,适用于不同 水平的开发者。DSW集成了开源JupyterLab ,以插件化的形式进行深度定 制化开发,提供丰富的计算资 源,且对接多种数据源。通过EASCMD的方式,可以将 DSW获得的训练模型部署为 EAS模型服务。

        点击DSW,创建一个实例。

创建DSW实例-实例信息设置

名字自己写一个

配置要选一个24GB的GPU,显存太小跑的太慢。

创建DSW实例-环境配置,选择Stable Diffusion WebUI和torch2.0和python3.10版本的

点击下一步,构建环境,大约需要5-15分钟的时间进行构建。 

创建DSW实例-启动实例

启动实例后即可进行虚拟试衣项目的开发。

在Notebook页签的Launcher页面,单击快速开始区域Tool下的DSW Gallery,打开DSW Gallery页面。

        在DSW Gallery页面中,搜索并找到AIGC Stable diffusion文生图Lora模型微调实现虚拟上装教程,单击教 程卡片中的在DSW中打开。

单击后即会自动将本教程所需的资源和教程文件下载至DSW实例中,并在下载完成后自动打开教程文件。

        在打开的教程文件stable_diffusion_try_on.ipynb文件中,可以直接看到教程文本,您可以在教程文件中 直接运行对应的步骤的命令,当成功运行结束一个步骤命令后,再顺次运行下个步骤的命令。

Diffusers安装

! pip install -U http://pai-vision-data-hz.oss-cnzhangjiakou.aliyuncs.com/EasyCV/datasets/diffusers-0.22.0.dev0-py3-noneany.whl

配置accelerate。可以直接运行命令下载默认配置文件,若需要自定义配置则在Terminal中执行命令:accelerate config,并根据DSW实例详情,选择对应配置。

! mkdir -p /root/.cache/huggingface/accelerate/
! wget -c http://pai-vision-data-sh.oss-cn-shanghai.aliyuncs.com/aigcdata/accelerate/default_config.yaml -O
/root/.cache/huggingface/accelerate/default_config.yaml

下载stable-diffusion-webui开源库。为了提升下载速度,本示例在OSS上缓存了代码包,直接执行如下命令即可完成下载

import os
! apt update
! apt install -y aria2 def aria2(url, filename, d):
!aria2c --console-log-level=error -c -x 16 -s 16 {url} -o {filename} -d {d} url_prefix
= { "cn-shanghai": "http://pai-vision-data-sh.oss-cn-shanghaiinternal.aliyuncs.com", "cn-hangzhou": "http://pai-vision-data-hz2.oss-cnhangzhou-internal.aliyuncs.com", "cn-shenzhen": "http://pai-vision-datasz.oss-cn-shenzhen-internal.aliyuncs.com", "cn-beijing": "http://pai-visiondata-bj.oss-cn-beijing-internal.aliyuncs.com", "ap-southeast-1": "http://paivision-data-ap-southeast.oss-ap-southeast-1-internal.aliyuncs.com" }
dsw_region = os.environ.get("dsw_region") prefix = url_prefix[dsw_region] if
dsw_region in url_prefix else "http://pai-vision-data-sh.oss-cnshanghai.aliyuncs.com" webui_url = f"{prefix}/aigc-data/code/stable-diffusionwebui-v1.tar.gz" aria2(webui_url, webui_url.split("/")[-1], "./")

下载完成后进行配置

! tar -xf stable-diffusion-webui-v1.tar.gz
! cd stable-diffusion-webui && wget -c http://pai-vision-data-sh.oss-cnshanghai.aliyuncs.com/aigc-data/webui_config/config_tryon.json -O
config.json

五、SD+LORA模型微调

准备数据集及训练代码

! wget -c http://pai-vision-data-hz.oss-cnzhangjiakou.aliyuncs.com/EasyCV/datasets/try_on/cloth_train_example.tar.gz &&
tar -xvf cloth_train_example.tar.gz
! wget -c http://pai-vision-data-hz.oss-cnzhangjiakou.aliyuncs.com/EasyCV/datasets/try_on/train_text_to_image_lora_v2.p
y

查看示例图片

from PIL import Image
display(Image.open("cloth_train_example/train/20230407174450.jpg"))

下载预训练模型并转化成diffusers格式

safety_checker_url = f"{prefix}/aigc-data/hug_model/models--CompVis--stablediffusion-safety-checker.tar.gz" aria2(safety_checker_url,
safety_checker_url.split("/")[-1], "./")
! tar -xf models--CompVis--stable-diffusion-safety-checker.tar.gz -C
/root/.cache/huggingface/hub/ clip_url = f"{prefix}/aigcdata/hug_model/models--openai--clip-vit-large-patch14.tar.gz" aria2(clip_url,
clip_url.split("/")[-1], "./")
! tar -xf models--openai--clip-vit-large-patch14.tar.gz -C
/root/.cache/huggingface/hub/ model_url = f"{prefix}/aigcdata/sd_models/chilloutmix_NiPrunedFp32Fix.safetensors" aria2(model_url,
model_url.split("/")[-1], "stable-diffusion-webui/models/Stable-diffusion/")
! wget -c http://pai-vision-data-hz.oss-cnzhangjiakou.aliyuncs.com/EasyCV/datasets/convert_original_stable_diffusion_to_
diffusers.py ! python convert_original_stable_diffusion_to_diffusers.py \ --
checkpoint_path=stable-diffusion-webui/models/Stablediffusion/chilloutmix_NiPrunedFp32Fix.safetensors \ --dump_path=chilloutmix-ni
--from_safetensors

下载预训练模型并转化成diffusers格式

模型训练

! export MODEL_NAME="chilloutmix-ni" && \
export DATASET_NAME="cloth_train_example" && \
accelerate launch
--mixed_precision="fp16" train_text_to_image_lora_v2.py \
--pretrained_model_name_or_path=$MODEL_NAME \
--train_data_dir=$DATASET_NAME
--caption_column="text" \
--width=640 --height=768 --random_flip \
--train_batch_size=1 \
--num_train_epochs=200 --checkpointing_steps=5000 \
--learning_rate=1e-04 --lr_scheduler="constant" -lr_warmup_steps=0 \
--seed=42 \
--output_dir="cloth-model-lora" \
--validation_prompt="cloth1" --validation_epochs=100 --rank=128

模型部署

将lora模型转化成WebUI支持格式并拷贝到WebUI所在目录

! wget -c http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/datasets/convertto-safetensors_v2.py
! python convert-to-safetensors_v2.py --file='cloth-model-lora/pytorch_lora_weights.safetensors’
! mkdir -p stable-diffusion-webui/models/Lora
! cp cloth-model-lora/pytorch_lora_weights_converted.safetensors stable-diffusionwebui/models/Lora/cloth_lora_weights.safetensors

 Lora模型运行结果

额外模型文件

为了加速下载在oss做了缓存,可以运行如下命令直接下载

embedding_url = f"{prefix}/aigc-data/embedding/ng_deepnegative_v1_75t.pt"
aria2(embedding_url, embedding_url.split("/")[-1], "stable-diffusionwebui/embeddings/")
model_lora_url = f"{prefix}/aigcdata/lora/koreanDollLikeness_v10.safetensors"
aria2(model_lora_url, model_lora_url.split("/")[-1], "stable-diffusionwebui/models/Lora/")
bert_url = f"{prefix}/aigc-data/hug_model/models--bert-base-uncased.tar.gz"
aria2(bert_url, bert_url.split("/")[-1], "~/.cache/huggingface/hub") ! cd
~/.cache/huggingface/hub && tar -xvf models--bert-base-uncased.tar.gz

额外模型文件输出结果

在DSW中启动WebUI

! cd stable-diffusion-webui && python launch.py --no-half-vae --xformers

在WebUI页签配置以下参数

Prompt:cloth1,<lora:koreanDollLikeness_v10:0.4>, (extremely detailed CG unity 8k
wallpaper),(RAW photo, best quality), (realistic, photo-realistic:1.2), a close up
portrait photo, 1girl, shopping mall rooftop cafe, outdoor, smile, (high detailed
skin:1.4), puffy eyes, gorgeous hair, air bangs, brown black hair, soft lighting, high
quality,<lora:cloth_lora_weights:1>
Negative prompt:ng_deepnegative_v1_75t,paintings, sketches, (worst quality:2),
(low quality:2), (normal quality:2), lowres, ((monochrome)), (grayscale:1.2), skin
spots, acnes, skin blemishes, age spot, glans,extra fingers,fewer
fingers,(watermark:1.2),(letters:1.2),(nsfw:1.2),teeth

在WebUI页签配置以下参数

采样方法(Sampler): Euler a

采样迭代步数(Steps): 50

宽度**和**高度: 640,768

随机种子(seed): 1400244389

提示词相关性(CFG Scale):7

选中codeformer面部修复复选框

点击生成:

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

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

相关文章

【C语言】深入解析选择排序

文章目录 什么是选择排序&#xff1f;选择排序的基本实现代码解释选择排序的优化选择排序的性能分析选择排序的实际应用结论 在C语言编程中&#xff0c;选择排序是一种简单且直观的排序算法。尽管它在处理大型数据集时效率不高&#xff0c;但由于其实现简单&#xff0c;常常用于…

IT产品研发全生命周期【详细说明】

阶段步骤任务负责人产品管理用户故事收集和理解用户需求&#xff0c;创建用户故事产品经理需求分类分类用户故事&#xff0c;组织和优先级排序需求经理可行性分析评估需求的技术可行性与实现难度研发经理需求转换将需求转化为具体的产品特性或功能要求需求经理需求管理创建需求…

【机器学习】机器学习与语音识别的融合应用与性能优化新探索

文章目录 引言第一章&#xff1a;机器学习在语音识别中的应用1.1 数据预处理1.1.1 数据去噪1.1.2 数据归一化1.1.3 特征提取 1.2 模型选择1.2.1 隐马尔可夫模型1.2.2 循环神经网络1.2.3 长短期记忆网络1.2.4 Transformer 1.3 模型训练1.3.1 梯度下降1.3.2 随机梯度下降1.3.3 Ad…

Three.JS 使用RGBELoader和CubeTextureLoader 添加环境贴图

导入RGBELoader模块&#xff1a; import { RGBELoader } from "three/examples/jsm/loaders/RGBELoader.js"; 使用 addRGBEMappingk(environment, background,url) {rgbeLoader new RGBELoader();rgbeLoader.loadAsync(url).then((texture) > {//贴图模式 经纬…

基于Linux的USB-wifi配置流程

目录 内核配置 配置 CFG80211 配置usb 配置 Netlink 配置DHCP 工作流程 1.连接到无线网络 2.设置网络接口&#xff1a; 3.验证连接&#xff1a; 4. 接收数据&#xff1a; 最近daisy一直忙活这个linux的wifi驱动和bluze蓝牙驱动&#xff0c;相比较蓝牙&#xff0c;WiFi的驱动和内…

【ARMv8/v9 GIC- 700 系列 2 -- GIC-700 上电控制寄存器 GICR_PWRR】

请阅读【ARM GICv3/v4 实战学习 】 文章目录 GIC-700 上电GICR_PWRR 寄存器字段介绍GICR_PWRR 功能说明GICR_PWER 代码配置GICR_PWRR 使用场景GICR_PWRR 注意事项GIC-700 上电 GICR_PWRR(功耗寄存器)是ARM GICv4架构中用于控制GIC-700是否可以关闭电源的寄存器。它通过几个位…

【日记】我倒是想穿可爱的 JK 小裙子,可惜我是哥布林……(704 字)

正文 中午给三盆植物换水&#xff0c;惊叹于文竹的根。长得之长&#xff0c;都能在花盆里盘几圈了。而且我好像有一段时间没换水了&#xff0c;花盆的水中和盆底有了些绿藻。虽然不知道好不好&#xff0c;但我还是清掉了&#xff0c;摸起来黏黏的。而且我也总是觉得单位的水&am…

InceptionV3代码实现(Pytorch)

文章目录 Inception介绍InceptionV3代码实现第一步&#xff1a;定义基础卷积模块第二步&#xff1a;定义Inceptionv3模块InceptionAInceptionBInceptionCInceptionDInceptionE 第三步&#xff1a;定义辅助分类器InceptionAux第四步&#xff1a;搭建GoogLeNet网络第五步*&#x…

算法力扣刷题记录 五十二【617.合并二叉树】

前言 二叉树篇&#xff0c;继续。 记录 五十二【617.合并二叉树】 一、题目阅读 给你两棵二叉树&#xff1a; root1 和 root2 。 想象一下&#xff0c;当你将其中一棵覆盖到另一棵之上时&#xff0c;两棵树上的一些节点将会重叠&#xff08;而另一些不会&#xff09;。你需要…

HCIE-AI大模型直通车火热报名中

第一阶段&#xff1a;HCIA-AI Solution Architect&#xff08;直播&#xff0c;39课时&#xff09; 该阶段详细介绍 AI 大模型所需基础技术栈&#xff0c;包含深度学习基础、计算机视觉技术、自然语言处理技术、华为开源深度学习框架 MindSpore、注意力制、Transformer 架构&am…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【22】【RabbitMQ】

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【22】【RabbitMQ】 Message Queue 消息队列异步处理应用解耦流量控制 消息中间件概念RabbitMQ概念MessagePublisherExchangeQueueBindingConnectionChannelConsumerVirtual HostBroker图…

汽车免拆诊断案例 | 卡罗拉急加速抖动故障排除

车型信息 2017年改款卡罗拉&#xff0c;排量1.2T&#xff0c;行驶里程48800公里。 故障现象 车辆不管在什么状态下&#xff0c;只要是平缓加速&#xff0c;都不会有抖动。车辆静止时&#xff0c;急加速时&#xff0c;也不会有抖动。但是车速达40公里/小时以上&#xff0c;急加…

【Linux】基础I/O——理解ext2文件系统

我们到现在为止讲的都是打开的文件。现在我们讲讲没有打开的文件 如果一个文件没有被打开&#xff0c;那它就是在磁盘中被存储的&#xff0c;我们就要关心路径问题&#xff0c;存储问题&#xff0c;文件获取问题&#xff0c;那么操作系统是怎么处理这些问题的&#xff1f;不急…

python如何输入矩阵

使用numpy创建矩阵有2种方法&#xff0c;一种是使用numpy库的matrix直接创建&#xff0c;另一种则是使用array来创建。 首先导入numpy&#xff1a; &#xff08;1&#xff09;import numpy &#xff08;2&#xff09;from numpy import * &#xff08;3&#xff09;import …

MYSQL调优详解:案例解析(第40天)

系列文章目录 一、数据库设计优化 二、查询优化 三、架构优化 四、其他优化策略 五、优化案例解析 文章目录 系列文章目录前言一、数据库设计优化二、查询优化三、架构优化四、其他优化策略五、优化案例解析案例一&#xff1a;优化SELECT查询案例二&#xff1a;使用索引案例三…

Quartus II 13.1添加新的FPGA器件库

最近需要用到Altera的一款MAX II 系列EPM240的FPGA芯片&#xff0c;所以需要给我的Quartus II 13.1添加新的器件库&#xff0c;在此记录一下过程。 1 下载所需的期间库 进入Inter官网&#xff0c;&#xff08;Altera已经被Inter收购&#xff09;https://www.intel.cn/content…

Java 反射机制:概念、用途与示例

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

C语言第5天作业 7月16日

目录 1.求1000以内所有的质数。 2.有1、2、3、4个数字&#xff0c;能组成多少个互不相同且无重复数字的三位数&#xff1f;都是多少&#xff1f; 3.猴子吃桃问题 4.判断最大值 1.求1000以内所有的质数。 质数&#xff1a;只能够1和它本身整除 #include <stdio.h> in…

Cxx Primer-Chap4

表达式可以没有操作符&#xff0c;但一定有操作数&#xff1a;理解表达式中含有多个操作符时涉及操作符的优先级、关联性以及操作数的计算顺序&#xff1a;如果操作符需要的操作数类型不同&#xff0c;则会发生一些默认的类型转换&#xff1a;什么叫Overloaded Operators&#…

Python 合并两个有序数组

Python 合并两个有序数组 正文 正文 题目说明如下&#xff1a; 这里我们直接让 nums1 的后 n 个数等于 nums2 数组&#xff0c;然后对 nums1 数组整体进行排序即可。 class Solution:def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:"…