当前位置: 首页 > news >正文

基于LoRA进行Stable Diffusion的微调

文章目录

  • 基于LoRA进行Stable Diffusion的微调
    • 数据集
    • 模型下载
    • 环境配置
    • 微调过程
  • 推理
  • WebUI部署

基于LoRA进行Stable Diffusion的微调

数据集

本次微调使用的数据集为: LambdaLabs的Pokemon数据集

使用git clone命令下载数据集

git clone https://huggingface.co/datasets/lambdalabs/pokemon-blip-captions

数据集一共883条样本,包含两个部分:image(图)和 text(文),如下图所示。
在这里插入图片描述

模型下载

git clone https://huggingface.co/runwayml/stable-diffusion-v1-5

环境配置

# 创建一个新的conda环境
conda create -n diffusers python==3.10
# 激活conda环境
conda activate diffusers
# 下载模型仓库
git clone https://github.com/huggingface/diffusers
# 进入diffusers目录
cd diffusers
# 进行安装
pip install .
cd examples/text_to_image
# 安装环境所需的包
pip install -r requirements.txt

微调过程

微调时只需要使用以下命令运行 train_text_to_image_lora.py 文件即可。需要根据下载的路径文件地址对相应的参数进行修改,如 MODEL_NAME、DATASET_NAME 等;也可以根据GPU资源调整相应的参数,如 train_batch_size、gradient_accumulation_steps 等。

export MODEL_NAME="/data/sim_chatgpt/stable-diffusion-v1-5"
export OUTPUT_DIR="./finetune/lora/pokemon"
export DATASET_NAME="./pokemon-blip-captions"nohup accelerate launch --mixed_precision="fp16"  train_text_to_image_lora.py \--pretrained_model_name_or_path=$MODEL_NAME \--dataset_name=$DATASET_NAME \--dataloader_num_workers=8 \--resolution=512 --center_crop --random_flip \--train_batch_size=2 \--gradient_accumulation_steps=4 \--max_train_steps=7500 \--learning_rate=1e-04 \--max_grad_norm=1 \--lr_scheduler="cosine" --lr_warmup_steps=0 \--output_dir=${OUTPUT_DIR} \--checkpointing_steps=500 \--validation_prompt="Totoro" \--seed=1337 \>> finetune_log0725.out 2>&1 &

备注:参数设置参考这里,去掉了
export HUB_MODEL_ID=“pokemon-lora”
–push_to_hub
–hub_model_id=${HUB_MODEL_ID}
–report_to=wandb
样本数据量为883,这里设置了train_batch_size为2,max_train_steps为7500,
显存占用约11个G,训练时长约8个小时左右。
在这里插入图片描述
显存占用情况如下:
在这里插入图片描述

推理

微调完成后,可以使用下面代码进行推理。

from diffusers import StableDiffusionPipeline
import torch
model_path = "./finetune/lora/pokemon"
pipe = StableDiffusionPipeline.from_pretrained("/data/sim_chatgpt/stable-diffusion-v1-5", torch_dtype=torch.float16)
pipe.unet.load_attn_procs(model_path)
pipe.to("cuda")prompt = "A pokemon with green eyes and red legs."
image = pipe(prompt, num_inference_steps=30, guidance_scale=7.5).images[0]
image.save("pokemon.png")      

代码运行后,会生成一个 pokemon.png 的图片,如下图所示。
在这里插入图片描述

WebUI部署

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui

需要将原模型文件以及微调后的lora模型文件放到 ~/stable-diffusion-webui//models/Stable-diffusion 下

cp -r /data/sim_chatgpt/stable-diffusion-v1-5/* ~/stable-diffusion-webui//models/Stable-diffusion/
mkdir ~/stable-diffusion-webui//models/Lora
cp -r ~/diffusers/examples/text_to_image/finetune/lora/pokemon/* ~/stable-diffusion-webui//models/Lora/

./webui.sh --no-download-sd-model --xformers --no-gradio-queue

报错:

RuntimeError: Couldn’t install gfpgan.

解决办法:
安装
https://github.com/TencentARC/GFPGAN

git clone https://github.com/TencentARC/GFPGAN
pip install basicsr -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com# Install facexlib - https://github.com/xinntao/facexlib
# We use face detection and face restoration helper in the facexlib package
pip install facexlib pip install -r requirements.txt
# 报错,无法安装(待解决)
python setup.py develop# If you want to enhance the background (non-face) regions with Real-ESRGAN,
# you also need to install the realesrgan package
pip install realesrgan

参考:
https://huggingface.co/blog/lora
https://huggingface.co/blog/zh/lora
https://github.com/AUTOMATIC1111/stable-diffusion-webui

http://www.lryc.cn/news/100931.html

相关文章:

  • C++STL序列式容器——list容器及其常用操作(详解)
  • 【雕爷学编程】MicroPython动手做(15)——掌控板之AB按键2
  • Spring Boot中整合MyBatis(基于xml方式基于注解实现方式)
  • ChatGPT漫谈(三)
  • 树、二叉树(C语言版)详解
  • vue中Cascader 级联选择器实现-修改实现
  • C语言实现三子棋游戏
  • 机器学习深度学习——softmax回归从零开始实现
  • Windows如何安装Django及如何创建项目
  • 在CSDN学Golang云原生(监控解决方案Prometheus)
  • 双重for循环优化
  • golang利用go mod巧妙替换使用本地项目的包
  • 使用 docker 一键部署 MySQL
  • MyBatis-Plus 查询PostgreSQL数据库jsonb类型保持原格式
  • Linux操作系统1-命令篇
  • opencv-24 图像几何变换03-仿射-cv2.warpAffine()
  • 前端常用的条件限制方法小笔记
  • 【LeetCode 算法】Minimum Operations to Halve Array Sum 将数组和减半的最少操作次数-Greedy
  • Doc as Code (3):业内人士的观点
  • 【Kafka】消息队列Kafka基础
  • Java的第十五篇文章——网络编程(后期再学一遍)
  • 【深度学习】High-Resolution Image Synthesis with Latent Diffusion Models,论文
  • 前端学习——Vue (Day6)
  • STM32MP157驱动开发——按键驱动(tasklet)
  • PostgreSQL构建时间
  • 2023-将jar包上传至阿里云maven私有仓库(云效制品仓库)
  • 嵌入式linux之OLED显示屏SPI驱动实现(SH1106,ssd1306)
  • 关于element ui 安装失败的问题解决方法、查看是否安装成功及如何引入
  • Selenium多浏览器处理
  • 浅谈 AI 大模型的崛起与未来展望:马斯克的 xAI 与中国产业发展