LECO ✏️
用于从扩散模型中擦除概念的低秩适应。
原始仓库:从扩散模型中擦除概念
项目页面:https://erasing.baulab.info/
(不仅可以擦除概念,还可以通过设计提示词和LoRA权重来强调或交换概念。详情请参见ConceptMod)
设置
conda create -n leco python=3.10
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118
pip install xformers
pip install -r requirements.txt
训练
至少需要8GB显存。
python ./train_lora.py --config_file "./examples/config.yaml"
config.yaml
:
prompts_file: "./prompts.yaml"
pretrained_model:
name_or_path: "stabilityai/stable-diffusion-2-1" # 也可以使用.ckpt或.safetensors模型
v2: true # 如果模型是v2.x版本则为true
v_pred: true # 如果模型使用v-prediction则为true
network:
type: "lierla" # 或 "c3lier"
rank: 4
alpha: 1.0
train:
precision: "bfloat16"
noise_scheduler: "ddim" # 或 "ddpm", "lms", "euler_a"
iterations: 500
lr: 1e-4
optimizer: "AdamW"
lr_scheduler: "constant"
save:
name: "van_gogh"
path: "./output"
per_steps: 200
precision: "bfloat16"
logging:
use_wandb: false
verbose: false
other:
use_xformers: true
prompts.yaml
:
- target: "van gogh" # 用于从中擦除正面概念的词
positive: "van gogh" # 要擦除的概念
unconditional: "" # 用于与正面概念取差的词
neutral: "" # 目标条件的起点
action: "erase" # erase或enhance
guidance_scale: 1.0
resolution: 512
dynamic_resolution: false
batch_size: 2
更多详细信息请参见示例配置。
注意:您可以使用float16,但它不稳定且不推荐。请使用bfloat16或float32。
预训练权重
您可以在AUTOMATIC1111的webui上使用预训练权重。
🤗 HuggingFace: https://huggingface.co/p1atdev/leco
SDv1.5
- 梵高风格(训练用于在SDv1.5上擦除"梵高风格"的概念)
梵高的自画像油画
的结果:
生成设置
oil painting of van gogh by himself
Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 3870472781, Size: 512x512, Model hash: cc6cb27103, Model: v1-5-pruned-emaonly, Clip skip: 2, AddNet Enabled: True, AddNet Module 1: LoRA, AddNet Model 1: van_gogh_4_last(db68853d039b), AddNet Weight A 1: -1.0, AddNet Weight B 1: -1.0, Script: X/Y/Z plot, X Type: AddNet Weight 1, X Values: "-1, 0, 1", Version: v1.3.0
莫奈的风景画
的结果:
生成设置
painting of scenery by monet
Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 1284787312, Size: 512x512, Model hash: cc6cb27103, Model: v1-5-pruned-emaonly, Clip skip: 2, AddNet Enabled: True, AddNet Module 1: LoRA, AddNet Model 1: van_gogh_4_last(db68853d039b), AddNet Weight A 1: -1.0, AddNet Weight B 1: -1.0, Script: X/Y/Z plot, X Type: AddNet Weight 1, X Values: "-1, 0, 1", Version: v1.3.0
SDv2.1-768
- 蒙娜丽莎(训练用于在SDv2.1-768上擦除"蒙娜丽莎"的概念)
戴珠宝的蒙娜丽莎
的结果:
生成设置
mona lisa with jewelry
Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 3630495347, Size: 512x512, Model hash: 832eb50c0c, Model: v2-1_768-ema-pruned, Clip skip: 2, AddNet Enabled: True, AddNet Module 1: LoRA, AddNet Model 1: mona_lisa2_last(393beb35c4b1), AddNet Weight A 1: -1.0, AddNet Weight B 1: -1.0, Script: X/Y/Z plot, X Type: AddNet Weight 1, X Values: "-1, 0, 1", Version: v1.3.0
可爱猫咪的照片
的结果:
生成设置
photo of a cute cat
Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 900866192, Size: 512x512, Model hash: 832eb50c0c, Model: v2-1_768-ema-pruned, Clip skip: 2, AddNet Enabled: True, AddNet Module 1: LoRA, AddNet Model 1: mona_lisa2_last(393beb35c4b1), AddNet Weight A 1: -1.0, AddNet Weight B 1: -1.0, Script: X/Y/Z plot, X Type: AddNet Weight 1, X Values: "-1, 0, 1", Version: v1.3.0
WD1.5 beta3
- 猫耳(训练用于在WD1.5 beta3上将"1girl"替换为"1girl, cat ears")
使用1.0~3.0的权重时,猫耳会被强制添加。
如果使用-1.0~-3.0的权重,猫耳将永远不会出现。
训练设置:请参见配置文件。
生成设置
```yaml 杰作,最佳品质,卓越,最佳美学,动漫,1个女孩,校服,上半身,微笑 反向提示词:最差品质,低质量,糟糕的美学,最老的,错误的解剖结构,糟糕的手,文字,错误,缺少手指,多余的数字,更少的数字,裁剪,jpeg伪影,签名,水印,用户名,模糊 步数:20,采样器:Euler a,CFG比例:7,种子:4103955758,尺寸:512x512,模型哈希:d38e779546,模型:wd-beta3-base-fp16,Clip跳过:2,脚本:X/Y/Z图,X类型:AddNet权重1,X值:"0, 2, 3, 4",版本:v1.3.0 ```非真实(训练以消除"真实"、"现实生活"、"Instagram"在WD1.5 beta3上的效果)
训练设置:参见配置文件。
带有"现实生活,Instagram":
不带"现实生活,Instagram":
参考文献
我深受以下项目的启发,我的工作依赖于这些杰出的项目。我想对这些项目及其开发者表示深深的感谢:
-
从扩散模型中消除概念
- ESD演示
-
用于快速文本到图像扩散微调的低秩适应
-
用于Stable Diffusion的训练、生成和实用脚本
-
使用DSL修改扩散模型中的概念