当前位置:首页|资讯|Stable Diffusion|Stable Diffusion WebUI|人工智能|AIGC

微调模型训练&推理,实践Stable Diffusion虚拟试衣

作者:Empty绍羽发布时间:2023-10-30

背景信息:随着人工智能技术的快速发展,自动生成内容的方式(AIGC)已经成为未来产业的风口。文生图任务,即文本到图像生成,是其中一项受欢迎的跨模态生成任务,其目标是生成与给定文本描述相对应的图像。


在今天的视频中,我将向您介绍如何在PAI-DSW中进行Stable Diffusion的Lora模型微调训练以及如何通过Stable-Diffusion-WebUI开源库启动WebUI进行模型推理,使其能够实现给文生图中的人物指定服装的效果。


步骤概览

1. 安装依赖 

我们首先需要安装Diffusers开源库,为后续模型微调做好准备。然后配置accelerate、安装依赖库和stable-diffusion-webui开源库。

以上代码解释如下:

  1. 下载Diffusers开源库并安装相关依赖:

    • 使用git clone命令从GitHub上下载Diffusers开源库。

    • 切换到Diffusers库的特定提交版本(commit hash为e126a82cc5d9afbeb9b476455de24dd3e7dd358a)。

    • 使用pip install安装Diffusers库的依赖项。

  2. 配置accelerate:

    • 创建目录/root/.cache/huggingface/accelerate/

    • 使用wget命令下载配置文件default_config.yaml到上述目录中。

  3. 安装文生图算法相关依赖库:

    • 切换到Diffusers库中的examples/text_to_image目录。

    • 使用pip install命令安装该目录下的requirements.txt文件中指定的依赖项。

  4. 安装aria2和unzip:

    • 使用apt updateapt install命令更新和安装系统软件包管理器中的软件包aria2unzip

  5. 定义函数aria2:

    • 定义了一个名为aria2的函数,用于通过aria2c命令下载文件。

  6. 设置URL前缀和下载文件:

    • 定义了一个字典url_prefix,包含了不同地区的URL前缀。

    • 通过环境变量dsw_region获取地区信息,如果不存在则使用默认的上海地区URL前缀。

    • 使用git clonearia2函数下载稳定扩散(stable-diffusion)相关的文件。

  7. 配置Web界面:

    • 切换到稳定扩散的Web界面目录。

    • 使用git clone命令下载两个扩展库(a1111-sd-webui-tagcomplete.gitstable-diffusion-webui-localization-zh_CN)。

    • 使用wget命令下载配置文件config_tryon.json


2.微调Stable Diffusion模型

这一步首先需要下载示例数据集和训练代码,然后下载预训练模型并转化成diffusers格式。最后就是进行Stable Diffusion模型的微调,进行lora模型的训练。


以上代码解释如下:

  1. 下载数据集和训练代码:

    • 使用curl命令下载一个名为cloth_train_example.zip的压缩文件,包含了用于虚拟上装的模型训练数据集。

    • 使用unzip命令解压下载的压缩文件。

    • 使用wget命令下载了一个名为train_text_to_image_lora.py的Python训练脚本。

  2. 下载预训练模型并转化格式:

    • 使用自定义的aria2函数下载了两个预训练模型的压缩文件(models--CompVis--stable-diffusion-safety-checker.tar.gzmodels--openai--clip-vit-large-patch14.tar.gz)。

    • 解压这两个模型文件,并将其放置在指定目录(/root/.cache/huggingface/hub/)下,以便后续使用。

  3. 下载并转化稳定扩散模型:

    • 使用aria2函数下载了一个名为chilloutmix_NiPrunedFp32Fix.safetensors的模型文件。

    • 使用Python脚本convert_original_stable_diffusion_to_diffusers.py将下载的原始稳定扩散模型转化为Diffusers格式。转化后的模型被保存在chilloutmix-ni目录下。

  4. 模型训练:

    • 导出了两个环境变量MODEL_NAMEDATASET_NAME,分别指定了预训练模型的名称(chilloutmix-ni)和数据集的名称(cloth_train_example)。

    • 使用accelerate命令启动训练过程。训练脚本train_text_to_image_lora.py接收了多个参数,包括预训练模型、数据集、训练批次大小、训练周期数等。

    • 训练过程将持续200个周期(--num_train_epochs=200),并在每5000个步骤保存一次模型检查点(--checkpointing_steps=5000)。模型将被保存在cloth-model-lora目录下。

3.推理验证

3.1准备WebUI所需模型文件

在微调后,我们将模型文件转化为WebUI支持的格式,并下载额外所需的模型文件。


以上代码用于准备WebUI所需的模型文件,主要包括以下操作:

  1. 转化和拷贝Lora模型文件:

    • 使用wget命令下载一个Python脚本convert-to-safetensors.py,该脚本用于将Lora模型的权重文件转化成WebUI支持的安全张量格式。

    • 使用该Python脚本将cloth-model-lora/pytorch_lora_weights.bin转化成safetensors格式,生成pytorch_lora_weights_converted.safetensors文件。

    • 创建一个目录stable-diffusion-webui/models/Lora

    • 将转化后的Lora模型文件拷贝到stable-diffusion-webui/models/Lora/目录下,命名为cloth_lora_weights.safetensors

  2. 下载和拷贝额外模型文件:

    • detection_Resnet50_Final.pthparsing_parsenet.pth拷贝到stable-diffusion-webui/repositories/CodeFormer/weights/facelib/目录下。

    • codeformer-v0.1.0.pth拷贝到stable-diffusion-webui/models/Codeformer/目录下。

    • ng_deepnegative_v1_75t.pt拷贝到stable-diffusion-webui/embeddings/目录下。

    • koreanDollLikeness_v10.safetensors拷贝到stable-diffusion-webui/models/Lora/目录下。

    • 使用自定义的aria2函数下载了三个额外的模型文件:detection_Resnet50_Final.pth(用于人脸检测)、parsing_parsenet.pth(用于人脸解析)、codeformer-v0.1.0.pth(CodeFormer模型)。

    • 下载了一个嵌入式模型文件ng_deepnegative_v1_75t.pt

    • 下载了另一个Lora模型文件koreanDollLikeness_v10.safetensors

    • 将这些模型文件拷贝到相应的目录下:

这些操作的目的是为WebUI准备所需的各种模型文件,以便在后续的推理中使用。


3.2在DSW中启动WebUI

最后,我们通过命令启动WebUI,为模型推理提供可视化的界面。在执行结果中我们点击蓝色的链接就能够进入stable-diffusion-webui页面。


这段代码用于启动稳定扩散(SD)WebUI。以下是代码的解释:

  1. 设置Python虚拟环境:

    • 使用cd stable-diffusion-webui && python -m venv --system-site-packages --symlinks venv命令在stable-diffusion-webui目录下创建了一个Python虚拟环境。

  2. 修改WebUI启动脚本:

    • 使用sed命令修改了webui.sh脚本中的一个参数。具体地,将can_run_as_root=0修改为can_run_as_root=1,允许WebUI以root用户身份运行。

  3. 启动SD WebUI:

    • --no-download-sd-model参数表示不下载稳定扩散模型(因为在之前的步骤中已经下载并准备好了)。

    • --xformers参数表示启用了XFormers功能。

    • --gradio-queue参数表示启用了Gradio队列。

    • 使用./webui.sh --no-download-sd-model --xformers --gradio-queue命令启动了SD WebUI。其中:

通过这些步骤,SD WebUI被成功地启动,可以接收用户的请求并进行稳定扩散相关的任务。


3.3推理结果验证

在WebUI页面中,我们使用指定的提示词和参数进行文生图推理,能够生成高质量的虚拟试衣效果,呈现出和谐一致的图像。


在文生图页签配置以下参数:

Prompt:cloth2,<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


采样方法(Sampler): Euler a


采样迭代步数(Steps): 50


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


选中面部修复复选框


结语

通过本视频,您将学会如何在阿里云交互式建模中进行AIGC Stable Diffusion模型的微调和推理,为您的项目提供更强大的人工智能支持。让我们一起进入AIGC的未来世界,开启无限可能!



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1