使用B-LoRA实现隐式风格-内容分离
这个仓库包含了B-LoRA方法的官方实现,该方法可以对单一输入图像进行隐式风格-内容分离,适用于各种图像风格化任务。B-LoRA利用Stable Diffusion XL (SDXL)和低秩适应(LoRA)的能力,将图像的风格和内容组件解耦,从而实现图像风格转换、基于文本的图像风格化和一致风格生成等应用。
🔧 2024年5月21日:重要更新 🔧
diffusers和PEFT的新版本存在一些问题,导致微调过程收敛速度不如预期。目前,我们已上传了论文中使用的原始训练脚本。
请注意,我们使用的是旧版本的diffusers (0.25.0),并且没有使用PEFT。
入门指南
前提条件
- Python 3.11.6+
- PyTorch 2.1.1+
- 其他依赖项(在
requirements.txt
中指定)
安装
-
克隆此仓库:
git clone https://github.com/yardenfren1996/B-LoRA.git cd B-LoRA
-
安装所需的依赖项:
pip install -r requirements.txt
(Windows 10用户请参考这里)
使用方法
-
训练B-LoRAs
要为给定的输入图像训练B-LoRAs,运行:
accelerate launch train_dreambooth_b-lora_sdxl.py \ --pretrained_model_name_or_path="stabilityai/stable-diffusion-xl-base-1.0" \ --instance_data_dir="<示例图像路径>" \ --output_dir="<输出目录路径>" \ --instance_prompt="<提示词>" \ --resolution=1024 \ --rank=64 \ --train_batch_size=1 \ --learning_rate=5e-5 \ --lr_scheduler="constant" \ --lr_warmup_steps=0 \ --max_train_steps=1000 \ --checkpointing_steps=500 \ --seed="0" \ --gradient_checkpointing \ --use_8bit_adam \ --mixed_precision="fp16"
这将优化内容和风格的B-LoRA权重,并将它们存储在output_dir
中。
需要替换的参数包括instance_data_dir
、output_dir
、instance_prompt
(在我们的论文中,我们使用A [v]
)
-
推理
对于基于参考风格图像的图像风格化(1),运行:
python inference.py --prompt="A <c> in <s> style" --content_B_LoRA="<内容B-LoRA路径>" --style_B_LoRA="<风格B-LoRA路径>" --output_path="<输出目录路径>"
这将生成具有第一个B-LoRA内容和第二个B-LoRA风格的新图像。 注意,你需要根据优化提示词替换提示中的
c
和s
。对于基于文本的图像风格化(2),运行:
python inference.py --prompt="A <c> made of gold" --content_B_LoRA="<内容B-LoRA路径>" --output_path="<输出目录路径>"
这将生成具有给定B-LoRA内容和文本提示指定风格的新图像。
对于一致风格生成(3),运行:
python inference.py --prompt="A backpack in <s> style" --style_B_LoRA="<风格B-LoRA路径>" --output_path="<输出目录路径>"
这将生成具有指定内容和给定B-LoRA风格的新图像。
在
inference.py
文件中可以设置的其他参数包括:--content_alpha
、--style_alpha
用于控制适配器的强度。--num_images_per_prompt
用于指定输出图像的数量。
(关于a111和comfy,请参见此问题)
引用
如果你在研究中使用了B-LoRA,请引用以下论文:
@misc{frenkel2024implicit,
title={Implicit Style-Content Separation using B-LoRA},
author={Yarden Frenkel and Yael Vinker and Ariel Shamir and Daniel Cohen-Or},
year={2024},
eprint={2403.14572},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
许可证
本项目采用MIT许可证。
联系方式
如果你有任何问题或建议,请随时提出issue或联系作者:yardenfren@gmail.com。