InstanceDiffusion
CVPR 2024 开源项目,为 Stable Diffusion 赋予精确的实例级位置控制能力
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
CVPR 2024 开源项目,为 Stable Diffusion 赋予精确的实例级位置控制能力
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你用过 Midjourney 或 Stable Diffusion 吗?输入"一只猫和一只狗在草地上",AI 通常随机决定猫在哪里、狗在哪里。如果需求是"请把猫放在图片左侧三分之一处、狗放在右下角,背景是森林"——现有的模型几乎做不到,位置控制基本靠"玄学"。
InstanceDiffusion 解决的就是这个问题。它是 CVPR 2024 论文的开源复现,让文字生图模型首次具备"实例级"控制能力——不只是理解整体语义,还能精确知道"哪个物体应该在哪个位置、以什么形态出现"。
这项工作来自 UC Berkeley(加州大学伯克利)和 Meta GenAI 的联合团队,一作徐东旺(XuDong Wang)是伯克利 BAIR 实验室的博士生,导师是 Trevor Darrell 教授。2024 年 2 月发布后迅速获得学术界关注,2025 年初被正式合并入 HuggingFace diffusers 官方库,成为 Stable Diffusion 生态的核心组件。

InstanceDiffusion 支持四种位置输入方式:
在实际测试中,InstanceDiffusion 在边界框输入上比之前 SOTA 提升了 2.0 倍 AP50,在掩码输入上提升了 1.7 倍 IoU。这意味着它在物体定位精度上有质的飞跃。
论文提出了两个关键技术组件:
UniFusion 模块(统一融合块):传统扩散模型的文本注入靠 Cross-Attention,但这种方式对多实例定位效果有限。UniFusion 引入可学习的融合机制,将每个实例的条件信息(位置+描述)动态注入到模型的主干网络中,通过特征调制让模型真正"理解"物体该出现在哪里。
ScaleU 模块:改进 UNet 的跳跃连接和主干特征图,通过动态重缩放来强化模型对实例条件的响应程度。这是即插即用的增强模块,可以和其他文生图方法结合使用。
Multi-instance Sampler(多实例采样器):推理阶段的核心算法,解决多实例生成时的"信息泄漏"问题。当一个物体的条件信息在采样过程中"污染"到另一个物体时,图像就会出现伪影或物体混淆。采样器通过调度机制让不同实例在不同时间步独立处理,保证最终图像的质量和一致性。
| 方法 | 位置控制精度 | 文本控制 | 代码可复现 |
|---|---|---|---|
| GLIGEN | 中等(基于边界框) | 支持 | 闭源 |
| Attend-and-Excite | 无位置控制 | 支持 | 闭源 |
| InstanceDiffusion | 极高(点/框/掩码) | 支持每实例 | 开源 |
| SD + ControlNet | 中等(边缘/姿态) | 有限 | 开源 |
这是 InstanceDiffusion 作为一个研究代码仓库的最大特点:面向研究人员和技术开发者,没有一键部署的 Web 界面,也没有在线 Demo。
2025 年 1 月被社区贡献者移植到 diffusers 官方库,安装方式:
git clone -b instancediffusion https://github.com/gokyeongryeol/diffusers.git
cd diffusers && pip install -e .
Python 调用示例:
from diffusers import StableDiffusionINSTDIFFPipeline
pipe = StableDiffusionINSTDIFFPipeline.from_pretrained("kyeongry/instancediffusion_sd15")
pipe = pipe.to("cuda")
image = pipe(
prompt="一只黄鹂和一只灰色英短在溪流边",
instdiff_phrases=["黄鹂", "灰色英短猫"],
instdiff_boxes=[[0.0, 0.1, 0.35, 0.55], [0.35, 0.2, 0.65, 0.5]],
).images[0]
需要手动准备:下载 InstanceDiffusion 权重(约 5GB)+ SD1.5 权重(约 4GB),配置 inference.py 命令行参数。两种方式都需要 NVIDIA GPU,显存建议 16GB 以上。
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| GPU | RTX 3060 (12GB) | RTX 3090/4090 (24GB) |
| 内存 | 16GB | 32GB+ |
| 存储 | 20GB | 50GB+ |
| Python | 3.8 | 3.10 |
| PyTorch | 2.0 | 2.2+ |
社区已将 InstanceDiffusion 移植到 ComfyUI(最流行的 AI 图像生成图形化工作流工具)。由 Tucker Darby 开发的 ComfyUI-InstanceDiffusion 节点让用户可以在可视化界面中拖拽使用,配合 AnimateDiff 还能生成动态图像。
InstanceDiffusion 作为学术研究代码,有几个明显的局限性:
1. 推理速度慢:Multi-instance Sampler 在处理 4 个以上实例时,时间步调度开销显著增加,生成一张 512×512 图片需要约 2-3 分钟(RTX 3090)。
2. SDXL 支持有限:官方代码主要针对 SD1.5,虽然加了 SDXL Refiner 可以改善质量,但架构本身对 SDXL 的支持不是原生设计。
3. 商业风险提示:模型能力强大,可能被用于生成虚假图像,论文作者在 README 中也提到了"Ethical Considerations"。使用时请遵守 Apache 2.0 许可证及其中引用的第三方模型(CLIP、SD 等)的各自许可。
4. 部署门槛高:无 Docker、无 WebUI,对普通用户极不友好。即使用 diffusers 版本,仍然需要 GPU 环境。
InstanceDiffusion 的价值在于它捅破了"文字生图精度"的天花板。在此之前,大家比拼的是"画面质量"和"美学评分";InstanceDiffusion 之后,"位置精度"和"属性绑定"成为了新的竞争维度。
对于开发者来说,这个项目是深入理解扩散模型条件注入机制的绝佳学习素材;对于 AI 爱好者来说,它是目前最容易获取的多实例精确控制方案之一。
一句话评价:如果你需要在一张图里精确安排多个物体的位置和描述,InstanceDiffusion 是目前最接近"指哪打哪"效果的开源工具。
项目地址:frank-xwang/InstanceDiffusion | 论文:arXiv:2402.03290 | HuggingFace:kyeongry/instancediffusion_sd15