news 2026/8/20 18:16:58

一文搞懂ESD 4种训练方法:esd-x、esd-u、esd-all、esd-x-strict到底怎么选?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一文搞懂ESD 4种训练方法:esd-x、esd-u、esd-all、esd-x-strict到底怎么选?

一文搞懂ESD 4种训练方法:esd-x、esd-u、esd-all、esd-x-strict到底怎么选?

【免费下载链接】erasingErasing Concepts from Diffusion Models项目地址: https://gitcode.com/gh_mirrors/er/erasing

想给 Stable Diffusion 这类扩散模型"洗掉"某个不想要的概念——某位画家的风格、某个物体甚至裸露内容,ESD(Erasing Concepts from Diffusion Models)是目前最受欢迎的开源方案。打开项目你会看到--train_method参数里有 esd-x、esd-u、esd-all、esd-x-strict 四种 ESD 训练方法,它们分别微调模型的不同部分,擦除效果和副作用截然不同。本文用一张对比表加一份场景速查,帮你 3 分钟搞懂扩散模型概念擦除训练方法到底怎么选。

ESD是什么?扩散模型概念擦除原理速览

ESD 全称 Erasing Concepts from Diffusion Models,出自 ICCV 2023。它不需要重新训练整个模型,而是用"要擦除的概念"作为提示词,对模型权重做一次轻量级微调:让模型在被问到该概念时,把生成结果"拉回"到不包含该概念的普通状态,同时尽量不动其他生成能力。

如上图,训练流程非常轻量:准备概念文本提示(如 "Van Gogh")加随机时间步 t,冻结原始模型当"老师",微调模型当"学生",用 L2 损失让学生模型在概念提示下的预测,逼近原始模型在空白提示下的预测——概念就这样被"抽走"。默认 200 步迭代,单张消费级显卡十几分钟即可完成。

💡 新能力:除了整概念擦除,还支持属性级擦除,比如只擦掉"牛仔的帽子"而保留牛仔本身。

ESD能擦掉什么?三大典型应用场景

从官方示例可以看出,ESD 训练方法主要覆盖三类应用:

  • 🎨 擦除艺术风格:让模型不再模仿某位画家的笔触
  • 🚫 擦除裸露等不适内容:用于内容审核与安全合规
  • 📦 擦除特定物体:如从风景图中去掉汽车

ESD 4种训练方法核心区别:一张表看懂

训练方法更新哪些参数擦除力度副作用推荐场景
esd-x仅交叉注意力层很小通用首选
esd-u交叉注意力以外的所有层较大全局性概念(如裸露)
esd-all全部 UNet 参数最强最大概念彻底消失
esd-x-strict仅交叉注意力的 K/V 投影精准极小精确擦除某个属性

四种方法的本质差异就是"参数更新范围",具体由utils/esd_trainer.py中的select_parameter_names决定:范围越大,擦得越狠,模型被"误伤"的概率也越高。

esd-x:只微调交叉注意力层,最稳的默认选择

交叉注意力层是文本提示词"写入"生成过程的地方。esd-x 只更新这一层,让"概念提示词"失效,几乎不影响无关内容,在艺术风格擦除任务上效果尤其出色:

  • ✅ 优点:效果好、误伤小、训练最快
  • 🎯 适合:绝大多数场景,SD / SDXL / FLUX / FLUX.2 Klein 全部支持
python esd_sd.py --erase_concept 'Van Gogh' --train_method 'esd-x'

esd-u:绕开交叉注意力,全局擦除更彻底

esd-u(旧名 noxattn)更新交叉注意力之外的其余层,不依赖文本注意力,从更底层改变模型对这类内容的响应。论文实验显示它在擦除裸露这类全局概念上更有效:

  • ⚠️ 代价:改动面大,画质与风格稳定性可能下降;SDXL 下仍属实验性,可能产生伪影
  • 🎯 适合:对擦除强度要求高、可接受小幅画质损失

esd-all:全参数微调,擦除最强但副作用最大

esd-all(旧名 full)对 UNet 全部参数微调,擦除力度最强,概念基本"物理消灭"。但模型也可能"学歪":无关内容质量下降、训练痕迹变明显。除非目标就是全局擦除,否则不建议优先使用。

esd-x-strict:只改K/V投影,精准擦除属性的利器

esd-x-strict 只微调交叉注意力层的 K 与 V 投影矩阵(to_k / to_v),是四种方法中改动范围最小的"手术刀",特别适合配合--erase_from做属性级擦除:

python esd_sd.py --erase_concept 'cowboy hat' --erase_from 'cowboy' --train_method 'esd-x'

效果:牛仔还是牛仔,但帽子消失了。想"擦得干净又不误伤",可以换成更精细的 esd-x-strict。

到底怎么选?ESD训练方法选择速查

  • 🤷 不知道选什么 → 直接esd-x
  • 🚫 擦裸露/全局概念 →esd-u
  • 💥 要概念彻底消失 →esd-all
  • 🎯 擦某个属性(帽子、配饰等)→esd-x-strict
  • ⚡ 用 FLUX / FLUX.2 Klein → 仅支持esd-xesd-x-strict

快速上手:3步跑通ESD训练

第一步,克隆仓库并安装依赖:

git clone https://gitcode.com/gh_mirrors/er/erasing cd erasing pip install -r requirements.txt

第二步,按模型选训练入口esd_sd.py/esd_sdxl.py/esd_flux.py/esd_flux2_klein.py),再按上文速查选训练方法:

python esd_sdxl.py --erase_concept 'Van Gogh' --train_method 'esd-x-strict'

第三步,出图验证效果。notebooks/下的推理 notebook(如esd_inference_sd.ipynb)加载微调后的 checkpoint 出图;批量评估可用evalscripts/generate-images.py配合data/目录的提示词 CSV,具体参数说明见README.md

新手常见问题

esd-u 和 esd-all 有什么区别?两者都是"大范围"擦除:esd-u 不动交叉注意力层,esd-all 全动。esd-all 擦除更彻底,但模型退化也更明显。

旧代码里的 xattn / noxattn / full 是什么?历史别名,与新版完全等价:xattn→esd-x、noxattn→esd-u、full→esd-all、xattn-strict→esd-x-strict。

训练需要什么配置?单张消费级显卡即可,默认 200 步迭代、学习率 5e-5(SD)量级,通常十几分钟完成,checkpoint 以 safetensors 格式保存到esd-models/目录。

【免费下载链接】erasingErasing Concepts from Diffusion Models项目地址: https://gitcode.com/gh_mirrors/er/erasing

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/20 18:11:13

视觉与语言模型别只看演示结果

视觉与语言模型别只看演示结果 选型会上的争论:吞吐量翻倍,算力账单也跟着翻倍 在架构选型评审会上,两派工程师吵得不可开交。一派主张全面拥抱 PyTorch 及其生态,认为开发灵活、迭代快;另一派坚守 TensorFlow TF Ser…

作者头像 李华
网站建设 2026/8/20 18:01:34

2026 西安 GEO 优化服务商口碑推荐:真实用户评价 + 核心优势 核验篇

核心结论 从合同边界角度看,判断服务商不能只看发稿数量,还要核验事实基础、方法完整性、数据口径和转化承接。更重要的是,当前西安企业常见的GEO路径主要包括内容布局、知识结构建设和AI品牌答案资产沉淀。广拓时代采用GAINS增长闭环组织GEO…

作者头像 李华
网站建设 2026/8/20 18:01:10

gruf 认证与安全:内置 Basic Auth 拦截器实战指南

gruf 认证与安全:内置 Basic Auth 拦截器实战指南 【免费下载链接】gruf gRPC Ruby Framework 项目地址: https://gitcode.com/gh_mirrors/gr/gruf 在微服务架构中,gRPC 服务的认证与安全是每个团队绕不开的话题。gruf 是一款优雅的 Ruby gRPC 框…

作者头像 李华