如何用ESD生成擦除前后对比图?Erasing Concepts from Diffusion Models推理实战教程

发布时间:2026/10/6 3:53:10

如何用ESD生成擦除前后对比图?Erasing Concepts from Diffusion Models推理实战教程 如何用ESD生成擦除前后对比图Erasing Concepts from Diffusion Models推理实战教程【免费下载链接】erasingErasing Concepts from Diffusion Models项目地址: https://gitcode.com/gh_mirrors/er/erasingErasing Concepts from Diffusion Models简称 ESD是一个基于 diffusers 的开源项目用于从 Stable Diffusion、SDXL、FLUX 等扩散模型中精确擦除指定概念——比如去掉画面的艺术风格、移除特定物体、清除不当内容而保留模型其余生成能力。本教程手把手带你完成 ESD 推理实战从环境配置、加载权重到固定随机种子生成擦除前后对比图全程无需复杂改动新手也能 10 分钟跑通。ESD 是什么三分钟看懂概念擦除传统做法是重新训练或微调整个模型来遗忘某个概念成本高且容易破坏原有能力。ESD 的思路完全不同它只需一个简短文字描述如 Van Gogh对模型权重做轻量微调让生成结果自动绕开该概念同时保持其他生成能力几乎不变。上图展示了 ESD 的三类典型应用擦除裸露内容Erasing Nudity、擦除艺术风格Erasing Artistic Style、擦除物体Erasing Objects每列上方是原始模型输出下方是编辑后模型的输出。可以看出被擦除的元素消失后画面构图和整体质量依然在线。从原理上看训练时 ESD 让待微调模型的输出与冻结的原始模型输出产生差异并通过 L2 损失把生成轨迹推向与目标概念相反的方向具体流程可参考项目自带的原理图环境准备一条命令安装依赖ESD 代码库已经重构得相当精简训练与推理统一基于 diffusers官方文档在 docs/official.md。安装只需三步git clone https://link.gitcode.com/i/a1f7ef760f0990e8f1d405b223150538 cd erasing pip install -r requirements.txt依赖清单见 requirements.txt其中核心是diffusers、torch、safetensors。如果使用 FLUX 系列模型记得先把 diffusers 与 transformers 升级到最新版。硬件上一张 8GB 以上显存的 NVIDIA 显卡即可流畅运行 SD 1.x 的推理。快速生成对比图一条命令出图项目提供了开箱即用的批量出图脚本 evalscripts/generate-images.py它自动检测 checkpoint 目标组件unet 或 transformerSD、SDXL、FLUX 通用。生成对比图的核心思路是同一提示词、跑两次第一次不带 ESD 权重得到原始模型的输出第二次带上 ESD 权重得到擦除后的输出。命令示例如下以 SDXL Kelly 概念为例提示词来自 data/kelly_prompts.csv# 生成原始模型输出 python evalscripts/generate-images.py --base_model stabilityai/stable-diffusion-xl-base-1.0 --prompts_path data/kelly_prompts.csv --num_samples 1 --num_inference_steps 20 --guidance_scale 7 # 加载 ESD 权重生成擦除后输出 python evalscripts/generate-images.py --base_model stabilityai/stable-diffusion-xl-base-1.0 --esd_path esd-models/sdxl/esd-kelly-from-kelly.safetensors --prompts_path data/kelly_prompts.csv --num_samples 1 --num_inference_steps 20 --guidance_scale 7两次运行使用相同的--base_model与提示词文件图片会自动保存到esd-images/目录下对应模型名的文件夹中把相同case_number的两张图并排放置就是一张标准的擦除前后对比图。进阶实战固定随机种子精确复现对比效果批处理脚本适合快速出图如果想要同一提示词 完全相同的种子做逐像素级对比推荐直接在 Notebook 中手动推理。项目内置了针对不同底座的推理模板notebooks/esd_inference_sd.ipynbSD 1.xnotebooks/esd_inference_sdxl.ipynbSDXLnotebooks/esd_inference_flux.ipynbFLUXnotebooks/esd_inference_flux2_klein.ipynbFLUX.2 Klein第 1 步加载模型并保存原始权重pipe StableDiffusionPipeline.from_pretrained(basemodel_id, torch_dtypetorch.bfloat16, safety_checkerNone).to(cuda:0) original_weights deepcopy(pipe.unet.state_dict()) # 备份原始权重 esd_weights load_file(../esd-models/sd/esd-cowboy_hat-from-cowboy-esdx.safetensors)第 2 步先出原图再换 ESD 权重出擦除图关键技巧是固定随机种子用torch.Generator().manual_seed(seed)锁定种子后原始模型与 ESD 模型在相同提示词下生成的画面结构几乎一致差异只会出现在被擦除的概念上对比效果一目了然。seed random.randint(0, 2**15) # 用原始权重生成 pipe.unet.load_state_dict(original_weights, strictFalse) image_original pipe(prompt, num_inference_steps20, guidance_scale7.5, generatortorch.Generator().manual_seed(seed)).images[0] # 换 ESD 权重再次生成 pipe.unet.load_state_dict(esd_weights, strictFalse) image_erased pipe(prompt, num_inference_steps20, guidance_scale7.5, generatortorch.Generator().manual_seed(seed)).images[0]两份 checkpoint 的加载、保存、组件自动识别逻辑封装在 utils/esd_checkpoint.py 中SD/SDXL/FLUX 各自的数据管线则在 utils/sd_utils.py、utils/sdxl_utils.py、utils/flux_utils.py 中。出图后用 PIL 水平拼接两张图就是效果极佳的对比图素材。实战案例艺术风格与不当内容擦除案例一擦除艺术风格用 ESD 擦除特定画家风格如 Thomas Kinkade、Kilian Eng、Kelly McKernan效果对比如下原始模型生成浓烈风格化画面ESD 模型则输出更写实的普通场景且其他构图元素基本保留。训练这类风格擦除模型只需一条命令例如python esd_sd.py --erase_concept Van Gogh --train_method esd-x训练入口见 esd_sd.pySD、esd_sdxl.pySDXL、esd_flux.pyFLUX。更妙的是ESD 还支持从某个概念里只擦掉一个属性——比如只擦掉牛仔的帽子而保留牛仔本身--erase_concept cowboy hat --erase_from cowboy。案例二擦除不当内容对于 NSFW 场景ESD 同样有效。下图为不同方法在暴露身体部位减少比例上的量化对比可以看到 ESD 方法Our Method在绝大多数部位上实现了接近 -100% 的显著抑制明显优于 SLD 与原生 SD 2.x 方案。如果你要复现论文中的 NSFW 指标可结合 evalscripts/nudenet-classes.py 与 evalscripts/imageclassify.py 进行自动评估。如何评估擦除效果从肉眼对比到量化打分除了主观对比项目还提供了量化评估手段LPIPS 感知距离用 evalscripts/lpips_eval.py 计算擦除前后图像的感知差异距离越大说明改动越明显批量评估先用 evalscripts/generate-images.py 对大量提示词批量出图再统一比对结果更客观风格损失evalscripts/styleloss.py 可用于度量风格特征的残留程度。评估时注意对比图必须使用相同的种子、步数、guidance_scale否则差异可能来自采样随机性而非擦除效果。常见问题 FAQQ1加载 ESD 权重时提示 base_model 不匹配checkpoint 中保存了元数据base_model_id如果与你加载的底模不一致会给出 Warning。只要训练与推理使用同一底模即可放心忽略元数据读写逻辑见 utils/esd_checkpoint.py。Q2脚本提示 Loaded ESD weights into pipe.transformer这是正常的。新版本会自动检测权重对应unet还是transformerFLUX 系列使用 transformer 结构无需手动指定--component。Q3显存不够怎么办推荐使用torch.bfloat16精度推理并适当降低--num_inference_steps20 步即可获得不错效果。新版训练核心已共享训练显存占用约为旧版一半训练入口统一在 utils/esd_trainer.py。Q4提示词数据从哪来项目在 data/ 目录下提供了大量现成 CSV 提示词集如 data/kelly_prompts.csv、data/art_prompts.csv、data/unsafe-prompts4703.csv可直接用于测试与评估。总结用 ESD 生成擦除前后对比图本质只有三步备份原始权重 → 加载 ESD 权重 → 固定种子生成。无论你是想验证风格擦除效果、清理不当内容还是为论文/评测准备对比素材这套同一提示词 固定种子的流程都足够可靠。快去克隆 erasing 项目 动手试试吧【免费下载链接】erasingErasing Concepts from Diffusion Models项目地址: https://gitcode.com/gh_mirrors/er/erasing创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/24 13:05:16

magvit2-pytorch感知损失详解:VGG16如何提升视频重建质量

magvit2-pytorch感知损失详解:VGG16如何提升视频重建质量 【免费下载链接】magvit2-pytorch Implementation of MagViT2 Tokenizer in Pytorch 项目地址: https://gitcode.com/gh_mirrors/ma/magvit2-pytorch MagViT2 是目前视频生成领域备受关注的视觉分词器…

2026/10/6 3:48:32

ET框架斗地主Demo实战:棋牌服务端核心机制与踩坑全解

简介:这是一份基于ET框架(4.0版本)开发的斗地主Demo工程,面向希望入门ET游戏服务器框架的开发者,尤其适合具备一定C#和Unity基础、想了解分布式游戏架构与服务器客户端联调的初学者。包体为7z压缩格式,共10…

2026/10/6 3:48:32

会议室预订预约小程序前后台源码:防超订与自动释放实战

简介:这是一套面向写字楼、高校及创业园区的会议室在线预订系统源码,采用小程序前端与原生PHP后台组合,适合需要快速搭建预约平台的开发者或企业二次开发。前端基于小程序实现会议室查询、时段选择与预订操作,后台负责资源管理、订…

2026/10/6 3:48:32

2核2G云服务器架设游戏服务器的真实边界与部署技巧

2核2G的云服务器能不能架游戏?这个问题我这些年被问过不下几十次。问的人里有大学生、有刚组队做小游戏的朋友、也有单纯想开个私服带同学玩的老玩家。我的回答一直很直接:能,但前提是你得先搞明白自己架的是什么游戏、打算让几个人在线。这两…

2026/10/6 3:48:32

FreeCAD Expression Framework源码解析:参数化建模的表达式引擎

“FreeCAD没有齿轮工具”,这句社区热评我关注了很久。乍一听是吐槽,往深了想其实点中了FreeCAD和传统商业CAD最根本的差异:它不愿意把每一个你需要的形状都做成现成命令,而是把“让模型自己长出来”的能力交给你。支撑这个能力的底…

2026/10/6 3:43:32

Python+PySpark+DeepSeek-R1实现弹幕情感分析与推荐系统

每年到这个时间点,总有学弟学妹拿着差不多的题目来问我:能不能用 Python 做弹幕情感分析,能不能把大模型接进去,能不能再加一个推荐系统和一个可视化大屏凑成一整套毕业设计。说实话,这种题目现在很常见,但…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/4 0:01:02

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/5 17:38:27

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 0:03:23

MR25H40CDF+STM32F031C6工业级高可靠数据存储方案

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的 PLC 控制柜里、在风电变流器的散热片背面、在矿井监测终端的金属外壳下,你经常能看到一块指甲盖大小的黑色芯片——它既不是 Flash,也不是…

2026/10/6 0:03:23

MRAM+STM32工业断电数据保全实战指南

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的PLC柜里、在野外无人值守的环境监测终端里、在高速运转的包装机控制板上,你经常能看到一块指甲盖大小的黑色芯片,旁边贴着“MR25H40CDF”丝…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑