CtrLoRA项目使用与启动教程
1. 项目介绍
CtrLoRA是一个开源的、可扩展且高效的框架,用于控制图像生成。它通过训练基础控制网(Base ControlNet)和特定条件下的LoRA(Low-Rank Adaptation)模型,能够在保持低参数量的同时,快速适应新条件下的图像生成任务。项目基于大规模数据集进行训练,能够在单个GPU上,使用最少1000张图像,不到1小时的时间内完成LoRA的训练。
2. 项目快速启动
环境准备
首先,需要克隆项目仓库:
git clone --depth 1 https://github.com/xyfJASON/ctrlora.git
cd ctrlora
创建并激活新的conda环境:
conda create -n ctrlora python=3.10
conda activate ctrlora
安装PyTorch和其他依赖:
pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu117
pip install -r requirements.txt
模型下载
从提供的链接下载预训练模型,并将其放置在相应目录下:
- 将基础控制网模型
ctrlora_sd15_basecn700k.ckpt
放入./ckpts/ctrlora-basecn/
- 将LoRA模型放入
./ckpts/ctrlora-loras/
运行Gradio Demo
运行以下命令来启动Gradio Demo进行图像生成:
python app/gradio_ctrlora.py
确保你的GPU至少有9GB/21GB的内存来批量生成512x512的图像。
3. 应用案例和最佳实践
单条件生成
通过以下Python代码可以完成单条件生成:
from api import CtrLoRA
ctrlora = CtrLoRA(num_loras=1)
ctrlora.create_model(
sd_file='ckpts/sd15/v1-5-pruned.ckpt',
basecn_file='ckpts/ctrlora-basecn/ctrlora_sd15_basecn700k.ckpt',
lora_files='ckpts/ctrlora-loras/novel-conditions/ctrlora_sd15_basecn700k_inpainting_brush_rank128_1kimgs_1ksteps.ckpt'
)
samples = ctrlora.sample(
cond_image_paths='assets/test_images/inpaint_cat.png',
prompt='A cat wearing a brown cowboy hat, best quality',
n_prompt='worst quality',
num_samples=1
)
samples[0].show()
多条件生成
对于多条件生成,可以使用以下代码:
from api import CtrLoRA
ctrlora = CtrLoRA(num_loras=2)
ctrlora.create_model(
sd_file='ckpts/sd15/v1-5-pruned.ckpt',
basecn_file='ckpts/ctrlora-basecn/ctrlora_sd15_basecn700k.ckpt',
lora_files=(
'ckpts/ctrlora-loras/novel-conditions/ctrlora_sd15_basecn700k_lineart_rank128_1kimgs_1ksteps.ckpt',
'ckpts/ctrlora-loras/novel-conditions/ctrlora_sd15_basecn700k_palette_rank128_100kimgs_100ksteps.ckpt'
)
)
samples = ctrlora.sample(
cond_image_paths=('assets/test_images/lineart_bird.png', 'assets/test_images/palette_bird.png'),
prompt='Photo of a parrot, best quality',
n_prompt='worst quality',
num_samples=1,
lora_weights=(1.0, 1.0)
)
samples[0].show()
4. 典型生态项目
目前,CtrLoRA已经在多个生态项目中得到应用,例如:
- CtrLoRA-Canny:结合Canny边缘检测的图像生成。
- CtrLoRA-Style-Transfer:风格迁移应用。
- CtrLoRA-AnimateDiff-Lineart:结合AnimateDiff的线稿生成。
- CtrLoRA-AnimateDiff-Style-Transfer:结合AnimateDiff的风格迁移。
通过这些生态项目,用户可以探索更多基于CtrLoRA的图像生成可能性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考