赞
踩
★★★ 本文源自AlStudio社区精品项目,【点击此处】查看更多精品内容 >>>
前端时间尝试着玩了一下画画,又折腾了半天才把部署这件事搞定。然后有一个小伙伴说自己也想玩玩,就顺手写了这个教程~
- 项目内涵Gradio.py文件。可以fork本项目后,在项目内参考文字说明稍微改动一点点直接发布应用~
- 如果你也有模型大小超出2G不方便部署的问题,可以参考DreamBooth部署以及对应的gradio文件的代码
- 本项目中训练部分代码和其他项目同质化非常严重,如果你已经有训练方面的经验,可以重点关注部署的gradio.py文件内容~
本流程简单讲述了如何通过PPdiffusers进行DreamBooth(+Lora)的微调训练并部署。基本上点点鼠标,不太需要改动代码就可以运行,并部署了~
需要大家亲自动脑子或动手做的地方一共7条:
训练的时候DreamBooth和Lora任取其一就行,个人感觉前者效果更好,但是参数更多,后者可能只生成几兆的参数
# 拉取paddlenlp的代码
# ! git clone -b develop https://github.com/PaddlePaddle/PaddleNLP.git
# 为了防止网络不好,本项目直接附带了一个压缩包,第一次运行的时候解压一下就行~
! unzip PaddleNLP.zip
安装完后import ppdiffusers
可能会失败,点击最上面的重启内核即可,不行就重复pip+重启内核几次,总能成功的~
!pip install -U paddlenlp ppdiffusers visualdl safetensors omegaconf --user
准备4到9张图片到TRAINIMG里即可,格式为jpg或者png。
这里我们简单地讨论一下,什么样的数据适合用于微调训练,也就是说准备什么样的数据能够让训练结果变好:
画图
裁剪一下。半身
的范围类似,衣着没有太多变化是没问题的;如果数据集又有半身照又有全身照,衣着各不相同,就不太容易训练出合适的模型。DreamBooth在部署上的操作会比Lora费劲一点~但是个人感觉出图效果更好一点。
如果希望用DreamBooth+Lora进行训练和部署,可以直接跳过这段,进入Lora的章节。
更多预训练模型和参数参考PPDiffusers主页,这里简单介绍两个预训练模型:
下面的代码使用了Linaqruf/anything-v3.0进行训练,可以按照自己的需求将第三行中的对应内容修改为runwayml/stable-diffusion-v1-5。第六行的提示词可以根据自己的训练图片内容进行修改。其他内容基本不需要修改,点击运行就行了。
样例数据集是基于以下项目生成的:
在这里我们额外地进行一些讨论,一个简单的微调画画模型究竟适合干什么,以及训练时应该注意什么:
a photo of NAME
作为提示词在训练时认识某个人,通过提示词NAME with blue hair
在预测时换发色a photo of NAME
作为提示词在训练时认识某个人,通过提示词NAME with long hair
在预测时换发型a photo of NAME
作为提示词在训练时认识某个人,通过提示词NAME sit on chair
在预测时更换姿态、插入椅子a photo of NAME
作为提示词在训练时认识某个人,通过提示词描述了大量的细节姿态,想让某个人物摆出某个特定的瑜伽姿势a photo of NAME
作为提示词在训练时认识某个人,通过提示词让这个人倒立旋转%cd ~/PaddleNLP/ppdiffusers/examples/dreambooth ! python -u train_dreambooth.py \ --pretrained_model_name_or_path="Linaqruf/anything-v3.0" \ --instance_data_dir="/home/aistudio/TRAINIMG" \ --output_dir="/home/aistudio/dream_outputs" \ --instance_prompt="a photo of CUTEGIRL" \ --resolution=512 \ --train_batch_size=1 \ --gradient_accumulation_steps=1 \ --learning_rate=5e-6 \ --lr_scheduler="constant" \ --lr_warmup_steps=0 \ --max_train_steps=1000 \ --random_flip \ --train_text_encoder \ --checkpointing_steps=500
下面的代码运行失败了,就点一下重启内核
下面一共分为两个部分,分别是
from ppdiffusers import StableDiffusionPipeline
# 我们所需加载的模型地址,这里我们输入了训练时候使用的 output_dir 地址
model_path = "/home/aistudio/dream_outputs"
pipe = StableDiffusionPipeline.from_pretrained(model_path)
# 设置提示词
# 如果结果和训练集特别接近,需要降低训练批次或者减小学习率
# 如果结果和训练集一点都不像,需要提高训练批次或者提高学习率
prompt = "CUTEGIRL with blue hair"
# 生成
image = pipe(prompt, num_inference_steps=50,guidance_scale=5).images[0]
# 保存
image.save("/home/aistudio/test.jpg")
# 展示图片
image.show()
0%| | 0/50 [00:00<?, ?it/s]
部署的好处:可以像部署过的项目一样,打开项目页面,就能直接用训练好的模型进行推理生成图片。
由于DreamBooth产出的模型超过2G,所以需要
Gradio_packages/main.gradio.py
Gradio_packages/main.gradio.py
编辑页面上的几个按钮中选择应用部署
即可,记得选择GPU环境~之后就可以直接在项目页面进行推理生成图片啦~
如果你想把你的推理页面分享给别人一起玩,记得点一点项目页面上的发布应用~
%cd ~
# 压缩模型文件
! zip -r dream_outputs.zip dream_outputs
更多预训练模型和参数参考PPDiffusers主页,这里简单介绍两个预训练模型:
下面的代码使用了Linaqruf/anything-v3.0进行训练,可以按照自己的需求将第三行中的对应内容修改为runwayml/stable-diffusion-v1-5。第六行和第15行的提示词可以根据自己的训练图片内容进行修改。其他内容基本不需要修改,点击运行就行了。需要强调,修改prompt
更多关于模型使用的讨论见DreamBooth的训练章节。
%cd ~/PaddleNLP/ppdiffusers/examples/dreambooth ! python train_dreambooth_lora.py \ --pretrained_model_name_or_path="Linaqruf/anything-v3.0" \ --instance_data_dir="/home/aistudio/TRAINIMG" \ --output_dir="/home/aistudio/dream_lora_outputs" \ --instance_prompt="a photo of CUTEGIRL" \ --resolution=512 \ --train_batch_size=1 \ --gradient_accumulation_steps=1 \ --checkpointing_steps=100 \ --learning_rate=1e-4 \ --report_to="visualdl" \ --lr_scheduler="constant" \ --lr_warmup_steps=0 \ --max_train_steps=500 \ --validation_prompt="CUTEGIRL" \ --validation_epochs=50 \ --lora_rank=4 \ --seed=0
下面的代码运行失败了,就点一下重启内核
下面一共分为两个部分,分别是
from ppdiffusers import DiffusionPipeline, DPMSolverMultistepScheduler
import paddle
# 上面用了什么预训练模型,这里就用什么
pipe = DiffusionPipeline.from_pretrained("Linaqruf/anything-v3.0")
pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
# 加载Lora参数
pipe.unet.load_attn_procs("/home/aistudio/dream_lora_outputs/paddle_lora_weights.pdparams", from_hf_hub=False)
# 设置提示词
# 如果结果和训练集特别接近,需要降低训练批次或者减小学习率
# 如果结果和训练集一点都不像,需要提高训练批次或者提高学习率
prompt = "CUTEGIRL with blue hair"
# 生成
image = pipe(prompt, num_inference_steps=50,guidance_scale=5).images[0]
# 保存
image.save("/home/aistudio/test.jpg")
# 展示图片
image.show()
0%| | 0/50 [00:00<?, ?it/s]
部署的好处:可以像部署过的项目一样,打开项目页面,就能直接用训练好的模型进行推理生成图片。
Lora的参数比较小,部署只需要
Gradio_packages/main_lora.gradio.py
Gradio_packages/main.gradio.py
编辑页面上的几个按钮中选择应用部署
即可,记得选择GPU环境~之后就可以直接在项目页面进行推理生成图片啦~
如果你想把你的推理页面分享给别人一起玩,记得点一点项目页面上的发布应用~
请点击此处查看本环境基本用法.
Please click here for more detailed instructions.
此文章为搬运
原项目链接
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。