当前位置: 首页 > news >正文

从模型里删掉汽车:Erasing Concepts from Diffusion Models物体擦除实战

从模型里删掉汽车:Erasing Concepts from Diffusion Models物体擦除实战

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

想让 AI 绘画模型画不出某个东西?开源的Erasing Concepts from Diffusion Models(扩散模型概念擦除,简称 ESD)项目,用短短几百行代码就能让 Stable Diffusion、SDXL 甚至 FLUX 模型"忘记"指定物体。本文带你零基础完成扩散模型物体擦除实战:从环境安装、训练一条命令,到把"汽车"从模型里彻底删掉,全程可复现。

什么是 Erasing Concepts from Diffusion Models?

简单说,Erasing Concepts(ESD)是一种"模型手术":它不需要重新训练整个扩散模型,而是基于一段简短文本描述(比如 "car"),对模型权重做轻量微调,让模型在推理时不再生成该概念。整个过程只需要约 200 步优化、显存占用比旧版少一半、训练速度快 5~8 倍,非常适合普通玩家在自己的显卡上跑。

它有三个典型用途:

  • 🚗擦除物体:汽车、帽子等,删掉后场景依然连贯(如山路上的车消失、原野换成风筝)
  • 🎨擦除艺术风格:梵高、莫奈等画风可单独去除,画面仍保持真实自然
  • 🛡️擦除不雅内容:配合 nudenet-classes.py 评估,裸露部位识别数大幅下降

一分钟看懂项目结构

核心文件都在仓库根目录,上手只需认识这几个:

文件作用
esd_sd.pyStable Diffusion 1.x 概念擦除训练入口
esd_sdxl.pySDXL 训练入口(默认esd-x-strict
esd_flux.pyFLUX.1-dev 训练入口
esd_flux2_klein.pyFLUX.2 Klein 训练入口
utils/esd_trainer.py统一的训练核心(ESDConfig + run_esd_training)
utils/esd_checkpoint.py带元数据的模型保存/加载
notebooks/推理演示笔记本,开箱即用

四个入口共享同一套 utils/esd_trainer.py 训练逻辑,并通过--basemodel_id可指定任意兼容的 diffusers 基座模型,学一个就会四个。

一键安装步骤

先在终端执行以下命令完成环境搭建(需要 Python 3.10+ 和一张显存足够的 NVIDIA 显卡):

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

如果使用 FLUX 系列,请额外升级依赖:

pip install --upgrade diffusers transformers torch

最快上手:一条命令擦除"汽车"

安装完成后,在项目根目录运行:

python esd_sd.py --erase_concept 'car' --train_method 'esd-x'

参数说明:

  • --erase_concept:要擦除的概念,换成'van gogh''hat'都行
  • --train_method:训练方式,常用esd-x(交叉注意力)、esd-x-strictesd-uesd-all
  • --iterations:优化步数,默认 200
  • --save_path:模型保存目录,默认esd-models/sd/

💡 进阶玩法:还能只删某个概念的"属性"。比如只删牛仔的帽子、保留牛仔本身:

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

SDXL 与 FLUX 擦除实战

换到更大的模型同样简单,核心命令几乎不变:

SDXL 版本(推荐esd-x-strict,更稳定):

python esd_sdxl.py --erase_concept 'car' --train_method 'esd-x-strict'

FLUX.1-dev 版本

python esd_flux.py --erase_concept 'car' --train_method 'esd-x' --negative_guidance 2

FLUX.2 Klein 版本(基于Flux2KleinPipeline,需较新的 diffusers 与 transformers):

python esd_flux2_klein.py --erase_concept 'car' --train_method 'esd-x' --negative_guidance 2

训练完成的权重通过 utils/esd_checkpoint.py 保存为带元数据的.safetensors文件,加载时会自动识别目标是unet还是transformer,SD / SDXL / FLUX 通用。

验证擦除效果:生成图片对比

训练完成后,直接用官方推理笔记本体验效果:

  • notebooks/esd_inference_sd.ipynb:SD 1.x 推理演示
  • notebooks/esd_inference_sdxl.ipynb:SDXL 推理
  • notebooks/esd_inference_flux.ipynb:FLUX 推理
  • notebooks/esd_inference_flux2_klein.ipynb:FLUX.2 Klein 推理

如果想批量出图做量化评估,用官方脚本 evalscripts/generate-images.py,它会自动把 ESD 权重注入到对应的模型组件中:

python evalscripts/generate-images.py \ --base_model 'stabilityai/stable-diffusion-xl-base-1.0' \ --esd_path 'esd-models/sd/esd-car-esdx.safetensors' \ --num_samples 1 \ --prompts_path 'data/coco_30k.csv' \ --num_inference_steps 20 \ --guidance_scale 7

评估提示词可直接使用 data/ 目录下的数据集,比如coco_30k.csv(通用物体)、artwork_prompts.csv(艺术风格)、unsafe-prompts4703.csv(不雅内容)。

常见问题速查

Q:擦除后其他内容会变差吗?会轻微影响整体效果,建议用esd-x这种针对性更强的方式,并用esd-x-strict保证其他概念稳定。

Q:显存不够怎么办?训练入口支持--gradient_checkpointing--allow_tf32,能显著降低显存占用。

Q:生成的模型文件在哪?默认保存在esd-models/目录,SD / SDXL / FLUX 各有独立子目录。

Q:有量化的擦除效果数据吗?项目提供了 nudity_bar.png 这类实验对比图,展示 ESD 相比 SLD、SD 2.0/2.1 在裸露部位减少上的显著优势,可用于撰写评测报告。

小结

从"模型里删掉汽车"出发,我们完整走通了Erasing Concepts from Diffusion Models的安装、训练、推理与评估全流程。无论是隐私保护、版权规避还是内容安全,这个开源项目都给出了轻量、快速、可复现的解法——只需要一条命令,就能让 AI 绘画"忘记"你想让它忘掉的东西。

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

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

http://www.cnnetsun.cn/news/4135267.html

相关文章:

  • 基于AI与混合搜索的企业知识库构建:从语义检索到RBAC权限管理
  • Enterprise Commerce 重定向优化:如何用布隆过滤器处理数万条重定向零延迟
  • 2026年Java面试题库与备考策略全解析
  • EmbodiedScan多视角3D检测实战:从零训练你的第一个检测模型(附完整命令)
  • 基于Spring Boot与Vue的论坛数据可视化系统全栈开发实战
  • zigbee_home传感器类型大盘点:12种传感器配置快速参考指南
  • 从零部署本地AI智能体:基于WorkBuddy与Ollama的实战指南
  • 人形机器人退潮,场景化落地成为AI与机器人行业新焦点
  • 基于SSM的智能密室逃脱信息管理系统(毕业设计项目源码+文档)
  • 打造专属无线控制器:AbletonOSC+TouchOSC连接Ableton Live实战教程
  • 从零认识AMA Protocol:隐私Layer 1如何赋能AI智能体经济
  • 老 Mac 卡在旧系统?OpenCore Legacy Patcher 完整实战:从安装器制作到根补丁,一学就会
  • C++11类与可变模板:编译期契约与类型计算的革命
  • 3 大分支架构解读:action-detection 中活动分类、完整性评估与位置回归
  • 天津GEO优化公司哪家好:服务商能力与口碑对比指南版
  • 从调研到投稿全链路指南:助力创作者高效完成内容产出与投稿全流程事项
  • 游戏王离线对战方案实测:YgoMaster 让你断网也能畅玩大师决斗
  • 大模型开发实战:从本地部署到RAG与Agent应用全流程指南
  • Node.js依赖安装安全实践:使用sandbox-npm-install隔离生命周期脚本风险
  • python的运筹学工业场景模拟第八十篇:读取仓库容量台账,剔除损坏库区,得到各仓库最大存储上限,构建库存约束。
  • Java+Vue在线招投标系统毕业设计:从部署到核心模块深度解析
  • SSM框架实现智能招聘系统:技术解析与优化实践
  • SolidWorks企业级机械设计实战:从需求到图纸的完整流程
  • 洛雪音乐音源全流程拆解:从首次导入到多平台无损播放
  • 一个软件听遍全网音乐:免费开源的洛雪音乐助手使用心得
  • 利用UU远程实现AI工具远程访问:环境隔离与高效开发实践
  • IOL-AI挑战:突破大模型语言推理瓶颈的评测新范式
  • 基于Stable-Baselines3与Gymnasium的强化学习实战:从环境配置到智能体训练
  • 职场面试:如何艺术表达离职原因
  • CLOSER-Bench:预算约束下硬件设计智能体的跨阶段收敛评估新范式