Bootstrap

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

本文详细讲解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面部修复复选框

点击生成:

;