
基于 PPDiffusers 训练AIGC-易八鸽铁匠铺计划
易八鸽铁匠铺计划 收录计划收录18般武器,刀、枪、剑、戟、斧、钺、钩、叉、鞭、锏、锤、戈、镋、棍、槊、棒、矛、耙等
·
★★★ 本文源自AlStudio社区精品项目,【点击此处】查看更多精品内容 >>>
易八鸽铁匠铺计划 收录计划收录18般武器,刀、枪、剑、戟、斧、钺、钩、叉、鞭、锏、锤、戈、镋、棍、槊、棒、矛、耙等
建议
32g显存起步,训练完使用释放显存命令,避免溢出。
易八鸽铁匠铺
*如有不对,请在评论区指出,谢谢
名称 | 拼音 | 文件命名 | 英文 | 数据集来源 | 数据集情况 |
---|---|---|---|---|---|
刀 | dao | dao | Tang Dao | 互联网 | √ |
枪 | qiang | qiang | spear | √ | |
剑 | jian4 | jian4 | sword | 互联网 | √ |
戟 | ji | ji | halberd | √ | |
斧 | fu | fu | axe | √ | |
钺 | yue | yue | Yue | √ | |
钩 | gou | gou | hook | √ | |
叉 | cha | cha | fork | √ | |
鞭 | bian | bian | whip | √ | |
锏 | jian3 | jian3 | Mace | √ | |
锤 | chui | chui | hammer | by:Pavel Kutejnikov | √ |
戈 | ge | ge | dagger-axe | √ | |
镋 | tang | tang | Tang | √ | |
棍 | gun | gun | stick | √ | |
槊 | shuo | shuo | Group name | √ | |
棒 | bang | bang | stick | √ | |
矛 | mao | mao | spear | √ | |
耙 | pa | pa | rake | √ |
1.安装依赖
!pip config set global.index-url https://pypi.mirrors.ustc.edu.cn/simple
!pip install -r requirements.txt
2.选择一个配置运行
# 刀
# 修改拼音
%env name = dao
%env MODEL_NAME= runwayml/stable-diffusion-v1-5
# 修改数据集
%env INSTANCE_DIR=./1bug_data/dao
# 修改输出模型路径
%env OUTPUT_DIR=./1bug_model/dao
%env OUTPUT_DIR_LORA=./1bug_model_lora/dao
# 修改对应英文
%env name_en = Tang Dao,knife
# 枪
# 修改拼音
%env name = qiang
%env MODEL_NAME= runwayml/stable-diffusion-v1-5
# 修改数据集
%env INSTANCE_DIR=./1bug_data/qiang
# 修改输出模型路径
%env OUTPUT_DIR=./1bug_model/qiang
%env OUTPUT_DIR_LORA=./1bug_model_lora/qiang
# 修改对应英文
%env name_en = spear
# 剑
# 修改拼音
%env name = jian4
%env MODEL_NAME= runwayml/stable-diffusion-v1-5
# 修改数据集
%env INSTANCE_DIR=./1bug_data/jian4
# 修改输出模型路径
%env OUTPUT_DIR=./1bug_model/jian4
%env OUTPUT_DIR_LORA=./1bug_model_lora/jian4
# 修改对应英文
%env name_en = sword
# 戟
# 修改拼音
%env name = ji
%env MODEL_NAME= runwayml/stable-diffusion-v1-5
# 修改数据集
%env INSTANCE_DIR=./1bug_data/ji
# 修改输出模型路径
%env OUTPUT_DIR=./1bug_model/ji
%env OUTPUT_DIR_LORA=./1bug_model_lora/ji
# 修改对应英文
%env name_en = spear
# 斧
# 修改拼音
%env name = fu
%env MODEL_NAME= runwayml/stable-diffusion-v1-5
# 修改数据集
%env INSTANCE_DIR=./1bug_data/fu
# 修改输出模型路径
%env OUTPUT_DIR=./1bug_model/fu
%env OUTPUT_DIR_LORA=./1bug_model_lora/fu
# 修改对应英文
%env name_en = axe
# 钺
# 修改拼音
%env name = yue
%env MODEL_NAME= runwayml/stable-diffusion-v1-5
# 修改数据集
%env INSTANCE_DIR=./1bug_data/yue
# 修改输出模型路径
%env OUTPUT_DIR=./1bug_model/yue
%env OUTPUT_DIR_LORA=./1bug_model_lora/yue
# 修改对应英文
%env name_en = Yue
# 钩
# 修改拼音
%env name = gou
%env MODEL_NAME= runwayml/stable-diffusion-v1-5
# 修改数据集
%env INSTANCE_DIR=./1bug_data/gou
# 修改输出模型路径
%env OUTPUT_DIR=./1bug_model/gou
%env OUTPUT_DIR_LORA=./1bug_model_lora/gou
# 修改对应英文
%env name_en = hook
# 叉
# 修改拼音
%env name = cha
%env MODEL_NAME= runwayml/stable-diffusion-v1-5
# 修改数据集
%env INSTANCE_DIR=./1bug_data/cha
# 修改输出模型路径
%env OUTPUT_DIR=./1bug_model/cha
%env OUTPUT_DIR_LORA=./1bug_model_lora/cha
# 修改对应英文
%env name_en = fork
# 鞭
# 修改拼音
%env name = bian
%env MODEL_NAME= runwayml/stable-diffusion-v1-5
# 修改数据集
%env INSTANCE_DIR=./1bug_data/bian
# 修改输出模型路径
%env OUTPUT_DIR=./1bug_model/bian
%env OUTPUT_DIR_LORA=./1bug_model_lora/bian
# 修改对应英文
%env name_en = whip
# 锏
# 修改拼音
%env name = jian3
%env MODEL_NAME= runwayml/stable-diffusion-v1-5
# 修改数据集
%env INSTANCE_DIR=./1bug_data/jian3
# 修改输出模型路径
%env OUTPUT_DIR=./1bug_model/jian3
%env OUTPUT_DIR_LORA=./1bug_model_lora/jian3
# 修改对应英文
%env name_en = Mace
# 戈
# 修改拼音
%env name = ge
%env MODEL_NAME= runwayml/stable-diffusion-v1-5
# 修改数据集
%env INSTANCE_DIR=./1bug_data/ge
# 修改输出模型路径
%env OUTPUT_DIR=./1bug_model/ge
%env OUTPUT_DIR_LORA=./1bug_model_lora/ge
# 修改对应英文
%env name_en = dagger-axe
# 镋
# 修改拼音
%env name = tang
%env MODEL_NAME= runwayml/stable-diffusion-v1-5
# 修改数据集
%env INSTANCE_DIR=./1bug_data/tang
# 修改输出模型路径
%env OUTPUT_DIR=./1bug_model/tang
%env OUTPUT_DIR_LORA=./1bug_model_lora/tang
# 修改对应英文
%env name_en = Tang
# 槊
# 修改拼音
%env name = shuo
%env MODEL_NAME= runwayml/stable-diffusion-v1-5
# 修改数据集
%env INSTANCE_DIR=./1bug_data/shuo
# 修改输出模型路径
%env OUTPUT_DIR=./1bug_model/shuo
%env OUTPUT_DIR_LORA=./1bug_model_lora/shuo
# 修改对应英文
%env name_en = Group name
# 棒
# 修改拼音
%env name = bang
%env MODEL_NAME= runwayml/stable-diffusion-v1-5
# 修改数据集
%env INSTANCE_DIR=./1bug_data/bang
# 修改输出模型路径
%env OUTPUT_DIR=./1bug_model/bang
%env OUTPUT_DIR_LORA=./1bug_model_lora/bang
# 修改对应英文
%env name_en = stick
# 锤
# 修改拼音
%env name = chui
%env MODEL_NAME= runwayml/stable-diffusion-v1-5
# 修改数据集
%env INSTANCE_DIR=./1bug_data/chui
# 修改输出模型路径
%env OUTPUT_DIR=./1bug_model/chui
%env OUTPUT_DIR_LORA=./1bug_model_lora/chui
# 修改对应英文
%env name_en = hammer
# 棍
# 修改拼音
%env name = gun
%env MODEL_NAME= runwayml/stable-diffusion-v1-5
# 修改数据集
%env INSTANCE_DIR=./1bug_data/gun
# 修改输出模型路径
%env OUTPUT_DIR=./1bug_model/gun
%env OUTPUT_DIR_LORA=./1bug_model_lora/gun
# 修改对应英文
%env name_en = stick
# 矛
# 修改拼音
%env name = mao
%env MODEL_NAME= runwayml/stable-diffusion-v1-5
# 修改数据集
%env INSTANCE_DIR=./1bug_data/mao
# 修改输出模型路径
%env OUTPUT_DIR=./1bug_model/mao
%env OUTPUT_DIR_LORA=./1bug_model_lora/mao
# 修改对应英文
%env name_en = spear
# 耙
# 修改拼音
%env name = pa
%env MODEL_NAME= runwayml/stable-diffusion-v1-5
# 修改数据集
%env INSTANCE_DIR=./1bug_data/pa
# 修改输出模型路径
%env OUTPUT_DIR=./1bug_model/pa
%env OUTPUT_DIR_LORA=./1bug_model_lora/pa
# 修改对应英文
%env name_en = rake
3.创建模型文件夹
import os
import shutil
if not os.path.exists('./1bug_model/'):
os.mkdir('./1bug_model/')
if not os.path.exists('./1bug_model_lora/'):
os.mkdir('./1bug_model_lora/')
OUTPUT_DIR = os.getenv('OUTPUT_DIR')
if not os.path.exists(OUTPUT_DIR):
os.mkdir(OUTPUT_DIR)
print('创建',OUTPUT_DIR)
OUTPUT_DIR_LORA = os.getenv('OUTPUT_DIR_LORA')
if not os.path.exists(OUTPUT_DIR_LORA):
os.mkdir(OUTPUT_DIR_LORA)
print('创建',OUTPUT_DIR_LORA)
4.1.dreambooth单机单卡训练
!python -u train_dreambooth.py \
--pretrained_model_name_or_path=$MODEL_NAME \
--instance_data_dir=$INSTANCE_DIR \
--output_dir=$OUTPUT_DIR \
--instance_prompt=$name \
--resolution=512 \
--train_batch_size=1 \
--gradient_accumulation_steps=1 \
--learning_rate=5e-6 \
--lr_scheduler="constant" \
--lr_warmup_steps=0 \
--max_train_steps=400
4.2.dreambooth预测生成图片
from ppdiffusers import StableDiffusionPipeline
import paddle
import random
import os
# 我们所需加载的模型地址,这里我们输入了训练时候使用的 output_dir 地址
model_path = os.getenv('OUTPUT_DIR')
pipe = StableDiffusionPipeline.from_pretrained(model_path)
name = os.getenv('name')
name_en = os.getenv('name_en')
prompt = name
# 指定seed
seed = random.randint(0, 999999)
generator = paddle.Generator().manual_seed(seed)
# guidance_scale
guidance_scale = 3.5
prompt = "<"+name+">,simple background,up,upward,"+name_en
print('seed:',seed)
print('generator:',generator)
print('prompt:',prompt)
negative_prompt = ""
# negative_prompt = "(worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, skin spots, acnes, skin blemishes, age spot, glans, (watermark:2),"
image = pipe(prompt, negative_prompt=negative_prompt, num_inference_steps=50, height=768, width=512, guidance_scale=guidance_scale, generator=generator).images[0]
# 保存图片,我们可以查看 yoda-pokemon.png 图片。
image.save(name+".png")
5.1.lora单机训练
!python train_dreambooth_lora.py \
--pretrained_model_name_or_path=$MODEL_NAME \
--instance_data_dir=$INSTANCE_DIR \
--output_dir=$OUTPUT_DIR_LORA \
--instance_prompt=$name \
--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=$name \
--validation_epochs=50 \
--lora_rank=4 \
--seed=0
5.2.lora预测
from ppdiffusers import DiffusionPipeline, DPMSolverMultistepScheduler
import paddle
import random
import os
# 我们所需加载的模型地址,这里我们输入了训练时候使用的 output_dir 地址
model_path = os.getenv('OUTPUT_DIR_LORA')
model_name = os.getenv('MODEL_NAME')
name = os.getenv('name')
name_en = os.getenv('name_en')
prompt = name
# 指定seed
seed = random.randint(0, 999999)
generator = paddle.Generator().manual_seed(seed)
# guidance_scale
guidance_scale = 3.5
prompt = "<"+name+">,simple background,up,upward,"+name_en
print('seed:',seed)
print('generator:',generator)
print('prompt:',prompt)
negative_prompt = ""
# negative_prompt = "(worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, skin spots, acnes, skin blemishes, age spot, glans, (watermark:2),"
print(model_name)
pipe = DiffusionPipeline.from_pretrained(model_name)
pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
pipe.unet.load_attn_procs("./1bug_model_lora/dao/paddle_lora_weights.pdparams", from_hf_hub=False)
image = pipe(prompt, negative_prompt=negative_prompt, num_inference_steps=10, height=768, width=512, guidance_scale=guidance_scale, generator=generator).images[0]
# 保存图片,我们可以查看 yoda-pokemon.png 图片。
image.save(name+".png")
!echo $OUTPUT_DIR_LORA
# 移动模型
!eval "cp -r $OUTPUT_DIR_LORA/paddle_lora_weights.pdparams ./gradio/$name.pdparams"
# 释放显存
paddle.device.cuda.empty_cache()
总结和未来展望
- 1.需要持续优化
- 2.数据集素材很重要
- 3.模型关键词也很重要
此文章为搬运
原项目链接
更多推荐
所有评论(0)