DragDiffusion
DragDiffusion 是一款基于扩散模型的交互式图像编辑工具,让用户能通过简单的“拖拽”操作精准控制图像内容。它主要解决了传统 AI 绘图难以对生成图或真实照片进行局部微调的痛点:用户只需在界面上标记想要移动的特征点并拖动到目标位置,即可实现如调整物体姿态、改变五官位置等精细编辑,同时保持画面整体自然协调。
该工具特别适合设计师、数字艺术家以及希望深入探索可控图像生成的研究人员使用。虽然普通用户也可通过其图形界面尝试操作,但由于涉及 LoRA 模型训练且对显卡资源有一定要求(推荐 NVIDIA GPU),具备一定技术背景的用户体验会更佳。
DragDiffusion 的技术亮点在于创新性地结合了 LoRA 微调技术与一种受 MasaCtrl 启发的新型引导机制,显著提升了拖拽编辑后的图像质量与细节保真度。此外,它还支持任意宽高比图像编辑,并集成了 FreeU 等优化模块,在 A100 显卡上将真实图像的编辑训练时间压缩至约 20 秒,大幅提高了工作效率。作为一个开源研究项目,它为社区提供了强大的点基图像编辑新范式。
使用场景
一位电商设计师急需将一张实拍产品图的商品手柄从左侧移至右侧,以适配新的广告版面布局,但必须保持产品原有的光影质感和材质细节不变。
没有 DragDiffusion 时
- 重绘成本高昂:传统方法需手动抠图、移动图层并重新绘制背景遮挡部分,耗时数小时且极易破坏原图光影。
- 生成不可控:若使用常规 AI 重绘(Inpainting),难以精确控制物体移动的具体坐标和角度,往往需要反复尝试数十次才能凑巧成功。
- 细节丢失严重:强制移动容易导致物体边缘模糊、纹理断裂,或与背景融合生硬,失去真实照片的质感。
- 技术门槛高:非专业修图师难以通过 Photoshop 内容识别填充完美处理复杂背景的透视变化。
使用 DragDiffusion 后
- 交互式精准拖拽:设计师只需在 UI 界面上标记手柄的关键点并拖动至目标位置,DragDiffusion 即可自动计算并执行移动,过程直观如操作矢量图形。
- 语义一致性保持:依托扩散模型的特性,拖拽后的手柄自动适应新位置的光照和透视,材质纹理自然连贯,无需人工修补边缘。
- 极速迭代修改:结合 LoRA 微调技术,针对实拍图的编辑可在秒级内完成预览,不满意可随时撤销并重新拖拽,大幅缩短试错周期。
- 背景智能补全:工具自动根据语义理解填补物体移走后留下的背景空缺,确保整体画面逻辑合理,无需额外_mask_绘制。
DragDiffusion 将原本繁琐的“抠图 - 重绘”工作流转化为简单的“点对点拖拽”,让基于真实图像的精细化编辑变得像搭积木一样简单高效。
运行环境要求
- Linux
必需 NVIDIA GPU,显存约 14GB(文中提及在 A100 上运行),未明确指定 CUDA 版本
未说明

快速开始
DragDiffusion:利用扩散模型实现基于点的交互式图像编辑
史宇俊
薛楚辉
刘俊豪
潘嘉纯
颜汉书
张文清
谭文杰
白松
免责声明
本项目为研究项目,而非商业产品。用户可以自由使用该工具生成图像,但应遵守当地法律法规,并以负责任的方式使用。开发者对用户的任何不当使用不承担任何责任。
新闻与更新
- [1月29日] 更新以支持 diffusers==0.24.0!
- [10月23日] DragBench 的代码和数据已发布!详情请查看“drag_bench_evaluation”下的 README。
- [10月16日] 在拖拽生成图像时集成 FreeU。
- [10月3日] 加速真实图像编辑时的 LoRA 训练。(现在在 A100 上仅需约 20 秒!)
- [9月3日] v0.1.0 发布。
- 支持 拖拽扩散生成的图像。
- 引入新的引导机制,显著提升拖拽结果的质量。(受 MasaCtrl 启发)
- 支持任意长宽比的图像拖拽。
- 添加对 DPM++Solver 的支持(生成图像)。
- [7月18日] v0.0.1 发布。
- 将 LoRA 训练集成到用户界面中。无需使用训练脚本,所有操作均可在界面中便捷完成!
- 优化了用户界面布局。
- 支持使用更好的 VAE 来处理眼睛和面部细节(参见 此链接)。
- [7月8日] v0.0.0 发布。
- 实现了 DragDiffusion 的基本功能。
安装
建议在配备 NVIDIA GPU 和 Linux 系统的环境中运行我们的代码。我们尚未在其他配置上进行测试。目前,运行该方法大约需要 14 GB 的 GPU 内存。我们将继续优化内存效率。
要安装所需的库,只需运行以下命令:
conda env create -f environment.yaml
conda activate dragdiff
运行 DragDiffusion
首先,在命令行中运行以下命令启动 Gradio 用户界面:
python3 drag_ui.py
您可以通过我们上面的 GIF 动画 按步骤了解如何使用该界面。
基本上,操作流程如下:
场景 1:拖拽输入的真实图像
1) 训练 LoRA
- 将输入图像拖放到最左侧的框中。
- 在“prompt”字段中输入描述该图像的提示词。
- 点击“Train LoRA”按钮,根据输入图像训练一个 LoRA。
2) 执行“拖拽”编辑
- 在最左侧的框中绘制遮罩,以指定可编辑区域。
- 在中间的框中点击控制点和目标点。您也可以通过点击“Undo point”来重置所有点。
- 点击“Run”按钮运行我们的算法。编辑后的结果将显示在最右侧的框中。
场景 2:拖拽扩散生成的图像
1) 生成图像
- 填写生成参数(例如,正面/负面提示词、生成配置和 FreeU 参数)。
- 点击“Generate Image”。
2) 对生成的图像进行“拖拽”
- 在最左侧的框中绘制遮罩,以指定可编辑区域。
- 在中间的框中点击控制点和目标点。
- 点击“Run”按钮运行我们的算法。编辑后的结果将显示在最右侧的框中。
许可证
DragDiffusion 算法相关的代码采用 Apache 2.0 许可证。
BibTeX
如果您觉得我们的仓库有用,请考虑给个 Star 或引用我们的论文 :)
@article{shi2023dragdiffusion,
title={DragDiffusion: Harnessing Diffusion Models for Interactive Point-based Image Editing},
author={Shi, Yujun and Xue, Chuhui and Pan, Jiachun and Zhang, Wenqing and Tan, Vincent YF and Bai, Song},
journal={arXiv preprint arXiv:2306.14435},
year={2023}
}
联系方式
如对本项目有任何疑问,请联系 Yujun (shi.yujun@u.nus.edu)
致谢
本工作受到令人惊叹的 DragGAN 的启发。LoRA 训练代码基于 diffusers 的一个 示例 修改而来。图像样本收集自 unsplash、pexels 和 pixabay。最后,向所有优秀的开源扩散模型和库致以衷心的感谢。
相关链接
- Drag Your GAN:生成图像流形上的交互式点操控
- MasaCtrl:无需调优的一致性图像合成与编辑的互斥自注意力控制
- 从图像扩散中涌现的对应关系
- DragonDiffusion:在扩散模型上实现拖拽式操控
- FreeDrag:交互式点操控并不需要点跟踪技术
常见问题及解决方案
- 对于因网络限制而无法从 Hugging Face 加载模型的用户,请按以下步骤操作:1) 参考此 链接 下载模型至 “local_pretrained_models” 目录;2) 运行 “drag_ui.py”,并在“算法参数 -> 基础模型配置 -> 扩散模型路径” 中选择您预训练模型所在的目录。
版本历史
v0.1.12023/10/23v0.1.02023/09/03v0.0.12023/09/03v0.0.02023/07/23常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备