HCP-Diffusion
简介
HCP-Diffusion是一个基于🤗 Diffusers的Stable Diffusion模型工具箱。 与webui和sd-scripts相比,它能够更灵活地配置和支持训练组件。
该工具箱支持Colossal-AI,可以显著减少GPU内存使用。
HCP-Diffusion可以通过单个.yaml
配置文件统一现有的文本到图像生成训练方法(如Prompt-tuning、Textual Inversion、DreamArtist、Fine-tuning、DreamBooth、LoRA、ControlNet等)和模型结构。
该工具箱还实现了DreamArtist的升级版本DreamArtist++,结合了LoRA用于一次性文本到图像生成。 与DreamArtist相比,DreamArtist++更加稳定,具有更高的图像质量和生成可控性,以及更快的训练速度。
特性
- 层级LoRA(支持Conv2d)
- 层级微调
- 层级模型集成
- 多词Prompt-tuning
- DreamArtist和DreamArtist++
- 自动聚类的宽高比分桶(ARB)
- 多数据集和多数据源支持
- 图像注意力掩码
- 词注意力乘数
- 占用多个词的自定义词
- 最大句子长度扩展
- 🤗 Accelerate
- Colossal-AI
- UNet和文本编码器的xFormers
- CLIP skip
- 标签打乱和丢弃
- Safetensors支持
- Controlnet(支持训练)
- Min-SNR损失
- 自定义优化器(Lion、DAdaptation、pytorch-optimizer等)
- 自定义学习率调度器
- SDXL支持
安装
使用pip安装:
pip install hcpdiff
# 启动新项目并初始化
hcpinit
从源代码安装:
git clone https://github.com/7eu7d7/HCP-Diffusion.git
cd HCP-Diffusion
pip install -e .
# 基于此项目修改或启动新项目并初始化
## hcpinit
使用xFormers减少显存使用并加速训练:
# 使用conda
conda install xformers -c xformers
# 使用pip
pip install xformers>=0.0.17
用户指南
训练
提供了基于🤗 Accelerate或Colossal-AI的训练脚本。
# 使用Accelerate
accelerate launch -m hcpdiff.train_ac --cfg cfgs/train/cfg_file.yaml
# 使用Accelerate并仅使用一个GPU
accelerate launch -m hcpdiff.train_ac_single --cfg cfgs/train/cfg_file.yaml
# 使用Colossal-AI
# pip install colossalai
torchrun --nproc_per_node 1 -m hcpdiff.train_colo --cfg cfgs/train/cfg_file.yaml
推理
python -m hcpdiff.visualizer --cfg cfgs/infer/cfg.yaml pretrained_model=pretrained_model_path \
prompt='positive_prompt' \
neg_prompt='negative_prompt' \
seed=42
Stable Diffusion模型转换
该框架基于🤗 Diffusers。因此需要使用🤗 Diffusers提供的脚本将原始Stable Diffusion模型转换为支持的格式。
- 下载配置文件
- 基于配置文件转换模型
python -m hcpdiff.tools.sd2diffusers \
--checkpoint_path "path_to_stable_diffusion_model" \
--original_config_file "path_to_config_file" \
--dump_path "save_directory" \
[--extract_ema] # 提取EMA模型
[--from_safetensors] # 原始模型是否为safetensors格式
[--to_safetensors] # 是否保存为safetensors格式
转换VAE:
python -m hcpdiff.tools.sd2diffusers \
--vae_pt_path "path_to_VAE_model" \
--original_config_file "path_to_config_file" \
--dump_path "save_directory"
[--from_safetensors]
教程
贡献
欢迎为这个工具箱贡献更多模型和功能!
团队
这个工具箱由中山大学HCP实验室 [GitHub]维护。
引用
@article{DBLP:journals/corr/abs-2211-11337,
author = {Ziyi Dong and
Pengxu Wei and
Liang Lin},
title = {DreamArtist: Towards Controllable One-Shot Text-to-Image Generation
via Positive-Negative Prompt-Tuning},
journal = {CoRR},
volume = {abs/2211.11337},
year = {2022},
doi = {10.48550/arXiv.2211.11337},
eprinttype = {arXiv},
eprint = {2211.11337},
}