背景信息:随着人工智能技术的快速发展,自动生成内容的方式(AIGC)已经成为未来产业的风口。文生图任务,即文本到图像生成,是其中一项受欢迎的跨模态生成任务,其目标是生成与给定文本描述相对应的图像。
在今天的视频中,我将向您介绍如何在PAI-DSW中进行Stable Diffusion的Lora模型微调训练以及如何通过Stable-Diffusion-WebUI开源库启动WebUI进行模型推理,使其能够实现给文生图中的人物指定服装的效果。
我们首先需要安装Diffusers开源库,为后续模型微调做好准备。然后配置accelerate、安装依赖库和stable-diffusion-webui开源库。
以上代码解释如下:
下载Diffusers开源库并安装相关依赖:
使用git clone
命令从GitHub上下载Diffusers开源库。
切换到Diffusers库的特定提交版本(commit hash为e126a82cc5d9afbeb9b476455de24dd3e7dd358a
)。
使用pip install
安装Diffusers库的依赖项。
配置accelerate:
创建目录/root/.cache/huggingface/accelerate/
。
使用wget
命令下载配置文件default_config.yaml
到上述目录中。
安装文生图算法相关依赖库:
切换到Diffusers库中的examples/text_to_image
目录。
使用pip install
命令安装该目录下的requirements.txt
文件中指定的依赖项。
安装aria2和unzip:
使用apt update
和apt install
命令更新和安装系统软件包管理器中的软件包aria2
和unzip
。
定义函数aria2:
定义了一个名为aria2
的函数,用于通过aria2c
命令下载文件。
设置URL前缀和下载文件:
定义了一个字典url_prefix
,包含了不同地区的URL前缀。
通过环境变量dsw_region
获取地区信息,如果不存在则使用默认的上海地区URL前缀。
使用git clone
和aria2
函数下载稳定扩散(stable-diffusion)相关的文件。
配置Web界面:
切换到稳定扩散的Web界面目录。
使用git clone
命令下载两个扩展库(a1111-sd-webui-tagcomplete.git
和stable-diffusion-webui-localization-zh_CN
)。
使用wget
命令下载配置文件config_tryon.json
。
这一步首先需要下载示例数据集和训练代码,然后下载预训练模型并转化成diffusers格式。最后就是进行Stable Diffusion模型的微调,进行lora模型的训练。
以上代码解释如下:
下载数据集和训练代码:
使用curl
命令下载一个名为cloth_train_example.zip
的压缩文件,包含了用于虚拟上装的模型训练数据集。
使用unzip
命令解压下载的压缩文件。
使用wget
命令下载了一个名为train_text_to_image_lora.py
的Python训练脚本。
下载预训练模型并转化格式:
使用自定义的aria2
函数下载了两个预训练模型的压缩文件(models--CompVis--stable-diffusion-safety-checker.tar.gz
和models--openai--clip-vit-large-patch14.tar.gz
)。
解压这两个模型文件,并将其放置在指定目录(/root/.cache/huggingface/hub/
)下,以便后续使用。
下载并转化稳定扩散模型:
使用aria2
函数下载了一个名为chilloutmix_NiPrunedFp32Fix.safetensors
的模型文件。
使用Python脚本convert_original_stable_diffusion_to_diffusers.py
将下载的原始稳定扩散模型转化为Diffusers格式。转化后的模型被保存在chilloutmix-ni
目录下。
模型训练:
导出了两个环境变量MODEL_NAME
和DATASET_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
目录下。
在微调后,我们将模型文件转化为WebUI支持的格式,并下载额外所需的模型文件。
以上代码用于准备WebUI所需的模型文件,主要包括以下操作:
转化和拷贝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
。
下载和拷贝额外模型文件:
detection_Resnet50_Final.pth
和parsing_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准备所需的各种模型文件,以便在后续的推理中使用。
最后,我们通过命令启动WebUI,为模型推理提供可视化的界面。在执行结果中我们点击蓝色的链接就能够进入stable-diffusion-webui页面。
这段代码用于启动稳定扩散(SD)WebUI。以下是代码的解释:
设置Python虚拟环境:
使用cd stable-diffusion-webui && python -m venv --system-site-packages --symlinks venv
命令在stable-diffusion-webui
目录下创建了一个Python虚拟环境。
修改WebUI启动脚本:
使用sed
命令修改了webui.sh
脚本中的一个参数。具体地,将can_run_as_root=0
修改为can_run_as_root=1
,允许WebUI以root用户身份运行。
启动SD WebUI:
--no-download-sd-model
参数表示不下载稳定扩散模型(因为在之前的步骤中已经下载并准备好了)。
--xformers
参数表示启用了XFormers功能。
--gradio-queue
参数表示启用了Gradio队列。
使用./webui.sh --no-download-sd-model --xformers --gradio-queue
命令启动了SD WebUI。其中:
通过这些步骤,SD WebUI被成功地启动,可以接收用户的请求并进行稳定扩散相关的任务。
在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的未来世界,开启无限可能!
Empty绍羽 2023-10-30
AI日日新 2023-08-12