5分钟完成Erasing Concepts from Diffusion Models(ESD)环境安装:零基础完整教程
【免费下载链接】erasingErasing Concepts from Diffusion Models项目地址: https://gitcode.com/gh_mirrors/er/erasing
Erasing Concepts from Diffusion Models(简称 ESD)是一款基于 PyTorch 与 Diffusers 的开源 AI 工具,通过微调扩散模型权重,可以从 Stable Diffusion、SDXL、FLUX 等模型中精准擦除指定概念——无论是特定艺术风格、常见物体,还是不宜出现的内容,且几乎不影响模型的其它生成能力。本教程为零基础读者整理了一套最简 ESD 环境安装步骤,全程约 5 分钟即可完成配置,并带你跑通第一个概念擦除训练任务。
ESD 是什么?扩散模型概念擦除原理速览
扩散模型(Diffusion Model)在训练时学习了大量图像与文本概念,其中往往包含开发者不想要的风格或内容。ESD 的思路很简单:用一个「冻结的原始模型」作为参照,对目标概念对应的生成路径进行少量微调,让模型学会「自己避开」这个概念,而不是粗暴地删除权重。
具体来说,ESD 通过短文本描述引导优化过程,利用条件分数与无条件分数的差值,将生成结果逐步拉离待擦除概念。整个微调只需几百步迭代、单张 GPU 即可完成,训练后的模型可以直接用于生成图片。它的代表性能力见下图:
ESD 当前支持四大模型家族,全部通过统一训练核心驱动:
| 模型家族 | 训练入口脚本 | 适用训练方法 |
|---|---|---|
| Stable Diffusion V1.x | esd_sd.py | esd-x / esd-u / esd-all 等 |
| SDXL | esd_sdxl.py | esd-x / esd-x-strict 等 |
| FLUX.1-dev | esd_flux.py | esd-x / esd-x-strict |
| FLUX.2 Klein | esd_flux2_klein.py | esd-x / esd-x-strict |
安装前的准备:ESD 环境要求清单
动手之前,先对照检查你的机器是否满足基本要求:
| 项目 | 推荐配置 |
|---|---|
| 操作系统 | Linux / macOS / Windows(WSL 亦可) |
| Python | 3.14(建议使用 Conda 管理) |
| GPU | NVIDIA 显卡,显存 ≥ 8GB(训练 SD 更充裕) |
| 磁盘空间 | 预留 10GB+(模型权重 + 依赖包) |
| 网络 | 可访问 HuggingFace(首次训练需下载基础模型) |
5分钟完成 ESD 环境安装:三个步骤
官方安装流程非常精简,只需「克隆源码 → 创建环境 → 安装依赖」三步。下面逐一说明。
第 1 步:克隆 ESD 项目源码
在终端中执行以下命令,把项目克隆到本地并进入目录:
git clone https://gitcode.com/gh_mirrors/er/erasing cd erasing第 2 步:创建 Conda 虚拟环境
创建独立的虚拟环境可以避免依赖冲突,推荐使用 Conda:
conda create --name erasing python=3.14 conda activate erasing第 3 步:一键安装全部依赖
项目已把依赖统一整理在根目录的requirements.txt中,直接一条命令安装:
pip install -r requirements.txt如果你后续要训练 FLUX 系列模型,建议再升级一次核心依赖:
pip install --upgrade diffusers transformers torch至此 ESD 环境安装已完成,全程确实只需 5 分钟。项目训练核心逻辑统一放在utils/esd_trainer.py中,SD / SDXL / FLUX 共用同一套 ESD Loss 实现,内存占用较旧版降低近一半、速度提升 5-8 倍。
验证安装是否成功
进入项目目录后,先做一个快速自检:
python -c "import torch, diffusers, transformers; print('ESD环境安装成功')" python esd_sd.py --help第一条命令确认核心依赖可用;第二条命令会打印esd_sd.py的全部参数说明(--erase_concept、--train_method、--iterations、--save_path等),看到帮助信息即说明 ESD 环境安装一切正常。
跑通第一个概念擦除训练:以 Stable Diffusion 为例
验证通过后,就可以体验核心功能了。比如想从 Stable Diffusion 中擦除「梵高」的画风,只需执行:
python esd_sd.py --erase_concept 'Van Gogh' --train_method 'esd-x'关键参数说明:
--erase_concept:要擦除的概念(必填),如'Van Gogh'、'monster'--train_method:训练方法(必填),如esd-x、esd-x-strict--iterations:优化迭代次数,默认 200--save_path:模型保存目录,默认esd-models/sd/--basemodel_id:可指定任意兼容的 Diffusers 基础模型
ESD 还有一个非常实用的新玩法——属性级擦除:只移除某个概念的特定属性,保留其余部分。例如把「牛仔」头上的帽子擦掉:
python esd_sd.py --erase_concept 'cowboy hat' --erase_from 'cowboy' --train_method 'esd-x'用 Notebook 生成图片验证擦除效果
训练完成后,可以用项目自带的推理 Notebook 快速验证效果。以 SD 为例,打开notebooks/esd_inference_sd.ipynb,依次运行单元格即可加载训练好的模型并生成图片;SDXL、FLUX、FLUX.2 Klein 也有对应的esd_inference_sdxl.ipynb与esd_inference_flux.ipynb等。
需要批量生成评测图片时,可使用官方评测脚本:
python evalscripts/generate-images.py --esd_path esd-models/sd/your-model.safetensors --prompts_path data/kelly_prompts.csv下图展示了 ESD 在艺术风格擦除上的实际表现(对比原始 SD、ESD 方法与安全生成方案):
项目还提供了丰富的提示词数据集(data/目录下的kelly_prompts.csv、coco_30k.csv、imagenet_prompts.csv等),以及风格损失、LPIPS 等评估脚本(evalscripts/styleloss.py、evalscripts/lpips_eval.py),方便你量化评估擦除效果。
常见问题与避坑指南
- 显存不足?降低
--resolution或--batchsize,训练统一使用torch.bfloat16精度,必要时开启--gradient_checkpointing。 - 模型下载太慢?首次训练会自动下载基础模型(如
CompVis/stable-diffusion-v1-4),建议提前配置好 HuggingFace 镜像或代理。 - FLUX 训练报错?请务必先执行
pip install --upgrade diffusers transformers torch,FLUX.2 Klein 还需要较新的diffusers以支持Flux2KleinPipeline。 - 训练效果不理想?尝试
esd-x-strict更严格的擦除方法,或适当调整--iterations与--negative_guidance。
在敏感内容擦除场景中,ESD 的表现同样可以通过数据量化验证,如下图的 NudeNet 评测结果所示,各敏感部位暴露率显著下降:
结语:下一步可以做什么
到这里,你已经完成了 ESD 环境安装,并成功跑通了第一个概念擦除训练任务。接下来你可以尝试:擦除更多艺术风格(如'Kelly Mckernan')、训练 SDXL 专属模型(esd_sdxl.py)、体验 FLUX 系列训练,或基于notebooks/中的模板搭建自己的评测流程。项目代码遵循 MIT 协议开源,注意你使用的基础模型可能另有许可协议,商用前请仔细阅读模型授权说明。
【免费下载链接】erasingErasing Concepts from Diffusion Models项目地址: https://gitcode.com/gh_mirrors/er/erasing
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考