源码深度解析:Erasing Concepts from Diffusion Models共享训练核心与Adapter设计模式
源码深度解析Erasing Concepts from Diffusion Models共享训练核心与Adapter设计模式【免费下载链接】erasingErasing Concepts from Diffusion Models项目地址: https://gitcode.com/gh_mirrors/er/erasing在 AI 绘图安全治理领域Erasing Concepts from Diffusion Models简称 ESD中文常称概念擦除是一套通过微调权重、让 Stable Diffusion / SDXL / FLUX 等扩散模型忘记指定概念的开源方案。无论是清除版权风格、物体还是不安全内容它都只需一段文本描述即可定向擦除。本文将深入解析该项目最新版代码一套共享训练核心如何用Adapter 设计模式优雅地统一驱动 SD、SDXL、FLUX、FLUX.2 Klein 四种模型家族的训练同时节省近一半显存并提速 5-8 倍。一、先看懂整体架构四入口一核心整个仓库采用薄入口 厚核心的经典布局。四个训练入口脚本只负责解析命令行参数、组装配置esd_sd.py —— Stable Diffusion V1.x 家族入口esd_sdxl.py —— SDXL 家族入口esd_flux.py —— FLUX.1 家族入口esd_flux2_klein.py —— FLUX.2 Klein 家族入口仔细观察会发现这四个脚本的main()结构几乎完全一致构建 argparse 解析器 → 把参数填进统一的ESDConfig数据类 → 调用共享的run_esd_training(config)→ 打印 checkpoint 保存路径。真正的训练逻辑全部沉淀在 utils/esd_trainer.py 这一个文件里这就是项目的共享训练核心。以 SD 为例一条命令即可启动概念擦除训练python esd_sd.py --erase_concept Van Gogh --train_method esd-x二、共享训练核心ESDConfig 与统一训练循环1. 配置数据类 ESDConfig一份配置走天下utils/esd_trainer.py 中的ESDConfig是一个 dataclass把四种模型家族的训练参数统一收纳family模型家族标识、base_model_id基础模型、erase_concept要擦除的概念、train_method训练方法、iterations、lr、negative_guidance等。它还提供了一个巧妙的属性erase_from_effective当用户不指定erase_from时默认把要从谁身上擦除当成擦除概念本身。2. 统一训练循环 run_esd_training真正的共享核心utils/esd_trainer.py 的run_esd_training是整套代码的心脏无论训练哪个模型家族都走同一条流水线获取适配器get_adapter(config.family)按家族名取出对应 Adapter加载管线adapter.load_pipeline(config)加载对应 diffusers 管线并冻结非训练组件准备可训练参数adapter.create_prepared_component(...)选出要训练的参数并构建学生/教师双份快照缓存文本嵌入adapter.prepare_context(...)一次性算出擦除概念 / 空概念 / 来源概念三组 embedding迭代优化循环里adapter.training_step(...)产出预测与目标用F.mse_loss计算损失反向传播保存 checkpointsave_esd_checkpoint(...)写出带元数据的安全张量文件。这份循环对四种模型家族完全透明——差异全部被 Adapter 吸收掉了。三、Adapter 设计模式抽象基类如何屏蔽模型差异1. BaseESDAdapter定义统一契约utils/esd_trainer.py 中的抽象基类BaseESDAdapter定义了每个模型家族必须实现的方法契约load_pipeline—— 加载本家族的 diffusers 管线normalize_train_method—— 把历史别名如xattn归一化为esd-xselect_parameter_names—— 按训练方法筛选可训练参数名prepare_context—— 预处理提示词嵌入等上下文training_step—— 执行单步 ESD 训练基类还提供了一组模板方法式的默认实现resolve_learning_rate未指定学习率时按家族取默认值、resolve_resolution未指定分辨率时取模型原生尺寸、build_metadata、build_checkpoint_path等子类只需按需覆写。2. 四大 Adapter 实现各自精彩仓库末尾的 utils/esd_trainer.py 用注册表模式把它们组织起来ADAPTERS { sd: StableDiffusionESDAdapter(), sdxl: StableDiffusionXLESDAdapter(), flux: FluxESDAdapter(), flux2_klein: Flux2KleinESDAdapter(), }StableDiffusionESDAdapter组件指向unet支持esd-x只训交叉注意力 attn2、esd-u、esd-all、esd-x-strict、selfattn等多种训练方法StableDiffusionXLESDAdapter同样训练unet但默认学习率区分方法esd-x用 2e-4其余用 1e-5并会对大范围更新的esd-u/esd-all发出质量警告FluxESDAdapter组件切换到transformer且训练时vaeNone不加载 VAE采样潜变量完全由 transformer 前向产生Flux2KleinESDAdapter基于更新的Flux2KleinPipeline参数筛选精确到注意力投影后缀to_q/to_k/to_v等。得益于这个设计新增一个模型家族只需实现接口 注册共享训练核心一行都不用改这就是 Adapter 设计模式带来的扩展性红利。四、训练方法选择esd-x 与参数筛选的精妙不同训练方法决定了擦除的颗粒度。utils/esd_trainer.py 中 SD 适配器的select_parameter_names展示了筛选逻辑esd-x只选择包含attn2的模块交叉注意力这是概念知识的主要存储仓库esd-u选择不含attn2的模块UNet 其余部分esd-all全部参数esd-x-strict进一步收窄到attn2.to_k与attn2.to_v用最少的参数实现擦除。通用筛选器 select_parameter_names 只接受TARGET_MODULE_TYPES中的模块类型Linear、Conv2d、LoRA 兼容层等并用named_modules遍历 去重保证选出的参数名干净可靠。对普通用户而言日常使用esd-x或esd-x-strict即可获得擦除效果与生成质量的较好平衡。五、学生-教师双快照PreparedComponent 的内存妙招ESD 训练最核心的机制是用冻结的原模型教师指导可微的学生模型。utils/esd_trainer.py 的PreparedComponent为此设计了同一份权重上的双参数快照base_params教师参数副本requires_gradFalsestudent_params学生参数requires_gradTrue。训练时通过use_base()/use_student()原地替换模块参数配合set_module递归设置实现了同一模型、两套状态的零拷贝切换。这避免了维护两份完整 UNet/Transformer 的大内存开销——正是官方宣称几乎省一半显存的关键之一。单步训练的逻辑以 SD 为例见 utils/esd_trainer.py分两大阶段采样阶段教师随机选取一个去噪步长run_till_timestep用基础模型采样中间潜变量xt并前向算出三组噪声预测noise_pred_erase擦除概念、noise_pred_null空概念、noise_pred_erase_from来源概念优化阶段学生切回学生参数对xt再次前向得到model_pred构造 ESD 专属目标target noise_pred_from - negative_guidance * (noise_pred_erase - noise_pred_null)这个目标公式的直觉是既要让输出靠近保留内容又要沿擦除概念与空概念之差的方向反向推开从而在保持其余生成能力的同时定向抹除目标概念。最后用 MSE 损失F.mse_loss(model_pred, target)更新学生权重。六、工程化细节内存卸载与元数据感知的 Checkpoint共享训练核心还内置了两项值得借鉴的工程优化1. 训练时的显存卸载prepare_context 在缓存完文本嵌入后立即调用offload_modules_to_cpu把 VAE、文本编码器等非训练组件搬到 CPU并执行torch.cuda.empty_cache()gc.collect()让宝贵的 GPU 显存全部服务于可训练组件。2. 元数据感知的 Checkpoint 体系utils/esd_checkpoint.py 实现了完整的保存/加载协议save_esd_checkpoint写入format: erasing-esd-v2格式标记并附带 family、component、train_method、erase_concept 等完整元数据infer_checkpoint_component在无元数据时也能通过参数名重叠度自动推断 checkpoint 属于unet还是transformer因此 evalscripts/generate-images.py 等评估脚本可以无差别处理 SD/SDXL/FLUX 的模型checkpoint 文件名规则清晰esd-{概念}-from-{来源}-{方法}.safetensors见 build_checkpoint_path。七、应用效果从裸体内容到艺术风格与物体共享训练核心最终服务的是一系列真实应用场景。README.md 中的案例图直观展示了擦除效果同一模型在擦除前能生成目标概念擦除后则完全规避。在艺术风格擦除上ESD 相比 Safe Concept Deletion、SLD 等基线能更彻底地抹除特定画家风格同时保留提示词其他语义在NSFW 内容治理上NudeNet 定量评估显示ESD 对女性胸部、生殖器等暴露部位的消除比例远超 SLD Medium 与 SD 2.0/2.1 等方案总结一套核心四种模型一个模式回看整个代码库共享训练核心 Adapter 设计模式的收益非常清晰训练循环、损失构造、checkpoint 协议、显存优化全部收敛在一处模型差异被四个 Adapter 封装成统一接口新增模型家族只需实现契约 注册表登记。如果你也在设计多后端训练框架这套分层思路非常值得借鉴——让复杂的扩散模型概念擦除变得像插拔适配器一样简单。【免费下载链接】erasingErasing Concepts from Diffusion Models项目地址: https://gitcode.com/gh_mirrors/er/erasing创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

PDFPatcher使用指南:免费PDF工具箱如何解决书签、页面与权限难题

PDFPatcher使用指南:免费PDF工具箱如何解决书签、页面与权限难题

PDFPatcher使用指南:免费PDF工具箱如何解决书签、页面与权限难题 【免费下载链接】PDFPatcher PDF补丁丁——PDF工具箱,可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档,探查文档结构,提取图片、转成图片等等 项目地址: …

2026/8/20 20:42:30 阅读更多 →
PDFPatcher使用教程:免费开源的PDF工具箱,如何用5个技巧一步到位解决书签编辑与批量处理难题

PDFPatcher使用教程:免费开源的PDF工具箱,如何用5个技巧一步到位解决书签编辑与批量处理难题

PDFPatcher使用教程:免费开源的PDF工具箱,如何用5个技巧一步到位解决书签编辑与批量处理难题 【免费下载链接】PDFPatcher PDF补丁丁——PDF工具箱,可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档,探查文档结构&#xff0…

2026/8/20 20:42:30 阅读更多 →
参数共享的秘密:EPyMARL中ns变体如何实现算法公平对比

参数共享的秘密:EPyMARL中ns变体如何实现算法公平对比

参数共享的秘密:EPyMARL中ns变体如何实现算法公平对比 【免费下载链接】epymarl An extension of the PyMARL codebase that includes additional algorithms and environment support 项目地址: https://gitcode.com/gh_mirrors/ep/epymarl 在**多智能体强化…

2026/8/20 20:42:30 阅读更多 →

最新新闻

51单片机交通灯自动调时系统设计:Proteus仿真与代码实现

51单片机交通灯自动调时系统设计:Proteus仿真与代码实现

在单片机课程设计或毕业设计中,交通灯控制系统是一个经典且极具实践价值的项目。它综合了单片机定时器、中断、I/O口控制、数码管显示以及仿真软件应用等多个核心知识点。很多同学在独立完成时,常常会遇到逻辑混乱、仿真不通过、无法自动切换时间等问题。…

2026/8/21 23:49:05 阅读更多 →
基于GitHub Actions与Issues构建自动化协作系统:Gitizens模式实践指南

基于GitHub Actions与Issues构建自动化协作系统:Gitizens模式实践指南

1. 先搞清楚 Gitizens 到底是什么:一个用 Git 和 Issues 驱动的“数字文明”实验 如果你在 GitHub 上看到一个叫 Gitizens 的项目,第一反应可能是“又一个花哨的自动化工具”。但点进去看,它没有复杂的代码库,核心可能只是一套 …

2026/8/21 23:49:05 阅读更多 →
基于51单片机的智能交通灯系统:Proteus仿真与自动调时设计

基于51单片机的智能交通灯系统:Proteus仿真与自动调时设计

1. 项目背景与核心概念在嵌入式系统学习和电子设计竞赛中,交通灯控制系统是一个经典且极具代表性的项目。它融合了单片机控制、定时器中断、数码管显示、按键输入等多个核心知识点,是检验学习者对单片机系统综合应用能力的绝佳案例。传统的交通灯设计往往…

2026/8/21 23:49:05 阅读更多 →
完整指南:华硕路由器装好 AdGuardHome,全家设备广告拦一遍

完整指南:华硕路由器装好 AdGuardHome,全家设备广告拦一遍

完整指南:华硕路由器装好 AdGuardHome,全家设备广告拦一遍 【免费下载链接】Asuswrt-Merlin-AdGuardHome-Installer The Official Installer of AdGuardHome for Asuswrt-Merlin 项目地址: https://gitcode.com/gh_mirrors/as/Asuswrt-Merlin-AdGuardH…

2026/8/21 23:49:05 阅读更多 →
基于51单片机的十字路口红绿灯系统设计与Proteus仿真

基于51单片机的十字路口红绿灯系统设计与Proteus仿真

在实际嵌入式系统开发中,十字路口交通灯控制是一个经典的综合性项目,它融合了单片机定时控制、状态机设计、人机交互以及系统仿真等多个核心知识点。很多初学者在理论学习后,面对如何将分散的模块(如定时器、数码管、按键&#xf…

2026/8/21 23:49:05 阅读更多 →
基于STM32与Proteus的太阳能追踪系统仿真与实现

基于STM32与Proteus的太阳能追踪系统仿真与实现

在实际嵌入式开发项目中,太阳能追踪系统是一个融合了传感器采集、算法决策、电机控制和能源管理的综合性课题。很多开发者,尤其是学生和嵌入式初学者,在尝试将太阳能追光、锂电池充电和主控逻辑整合时,常常面临几个核心难题&#…

2026/8/21 23:48:04 阅读更多 →

日新闻

机场边检旅客定位系统国产化白皮书:算法、硬件、底座平台全程自主

机场边检旅客定位系统国产化白皮书:算法、硬件、底座平台全程自主

前言随着国家数字基础设施信创替代、关键技术自主可控战略持续深化,口岸智慧安防、边检智能管控领域正全面进入国产化、自主化、安全可控升级周期。当前国内机场边检旅客识别与定位体系长期依赖国外商用视觉算法、进口成像硬件、闭源通用计算平台,存在核…

2026/8/21 0:00:42 阅读更多 →
别再把“数字孪生”当空间智能了!镜像视界揭开四维时空的真正面纱

别再把“数字孪生”当空间智能了!镜像视界揭开四维时空的真正面纱

别再把“数字孪生”当空间智能了!镜像视界揭开四维时空的真正面纱当下数字化建设浪潮中,很多项目将三维可视化、视频贴图叠加的数字孪生等同于空间智能。传统数字孪生更多停留在三维场景复刻,擅长把物理世界“画出来、展示出来”,…

2026/8/21 0:00:42 阅读更多 →
105、车载温度范围-40°C到85°C的影像质量一致性——ISP参数温漂补偿与产线标定策略

105、车载温度范围-40°C到85°C的影像质量一致性——ISP参数温漂补偿与产线标定策略

105、车载温度范围-40C到85C的影像质量一致性——ISP参数温漂补偿与产线标定策略 去年冬天在北方某车厂做A样评审,凌晨四点的黑河试验场,零下三十三度。客户拿了一台冷启动的车,中控屏上倒车影像全是雪花噪点,暗部细节直接糊成一片。我第一反应是sensor温度没上来,暗电流…

2026/8/21 0:00:42 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/21 3:21:33 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/21 0:02:09 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/21 6:07:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/21 16:42:28 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/20 21:46:49 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/21 0:14:22 阅读更多 →