custom-diffusion
仅用4-20张图片,在6分钟内将任何新概念注入Stable Diffusion模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
仅用4-20张图片,在6分钟内将任何新概念注入Stable Diffusion模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你刚收养了一只超可爱的小猫「团子」,想让它出现在各种场景里——坐在巴黎咖啡馆窗边、穿着宇航员服登月、和你的家人一起拍全家福。以前要实现这个目标,要么花大价钱请设计师 PS,要么自己学几个月的 AI 生图。现在,有一个来自 Adobe 研究院的算法,只需 4-20 张照片、6 分钟训练时间,就能把你的「团子」变成 Stable Diffusion 模型可以精准理解的新概念。
这就是 Custom Diffusion,由 Adobe 研究院 Nupur Kumari 等人在 CVPR 2023 发表的工作。它解决了一个核心问题:如何在消费级 GPU 上,用极少的训练样本(4-20 张),为 Text-to-Image 扩散模型注入新概念——无论是你的宠物、艺术家朋友的手绘风格、一件具体的雕塑,还是一个独特的场景。
Custom Diffusion 的核心洞察是:扩散模型的生成能力主要存储在两个地方——预训练好的权重(负责通用生成能力)和文本-视觉对齐(负责理解「猫」这个词对应什么样的视觉特征)。与其重新训练整个模型(成本高、容易过拟合),不如只微调交叉注意力层(cross-attention layers)中的 Key 和 Value 投影矩阵。

图1:Custom Diffusion 方法流程。用户只需提供 4-20 张目标概念的图片,系统在交叉注意力层微调 Key-Value 映射矩阵,同时用 200 张正则化图像防止过拟合。
这个设计带来了三个显著优势:
1. 训练效率极高。 仅微调 attention 层参数,2 张 A100 GPU 只需约 6 分钟即可完成一个概念的适配。相比之下,DreamBooth 等方法需要 30-40 分钟。
2. 存储成本低。 每个新概念仅需保存约 75MB 的 delta 权重(相对于原始 SD 模型 4GB 体积,几乎可以忽略)。用户可以积累数十个个性化概念而不占用太多空间。
3. 支持多概念组合。 系统支持三种多概念玩法:物体+风格组合(如「团子猫」+「梵高画风」)、多个新物体组合、以及新物体与已有类别的组合。多个概念可以联合训练,也可以通过优化算法将两个独立训练好的模型权重进行融合。
新增修饰 token 机制。 对于个性化类别(如「我的猫」),系统引入新的 token V* 加在类别词前面(如 V* cat),这样模型可以将新概念与原始 SD 的「通用猫」区分开来。
正则化防过拟合。 为防止模型记住训练图片而非学习概念本质,团队从 LAION-400M 数据集中用 CLIP 检索 200 张相关类别的真实图片作为正则化样本。在没有真实图片时,也可以用 SD 自身生成的图片替代。
权重融合(Weight Merging)。 即使两个概念是分别独立训练的,系统也可以通过求解一个优化问题,将两组 delta 权重合并为一组,创造出同时包含两个概念的生成模型。

图2:单概念生成效果示例,涵盖场景、宠物、个人玩具和艺术风格等多种类别。
项目提供了两种训练路径:
经典模式(基于 Stable Diffusion 原始仓库):
git clone https://github.com/adobe-research/custom-diffusion.git
git clone https://github.com/CompVis/stable-diffusion.git
conda env create -f stable-diffusion/environment.yaml
conda activate ldm
wget https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/resolve/main/sd-v1-4.ckpt
wget https://huggingface.co/datasets/nupurkmr9/custom-diffusion/resolve/main/data.zip
unzip data.zip
bash scripts/finetune_real.sh "cat" data/cat real_reg/samples_cat cat finetune_addtoken.yaml <model-path>
HuggingFace Diffusers 模式(推荐): 项目代码已被合并入 diffusers 官方训练示例,只需:
pip install diffusers==0.21.4 accelerate transformers deepspeed
accelerate config
export MODEL_NAME="stabilityai/stable-diffusion-2-1"
python train_custom_diffusion.py
项目明确标注需要 2x A100 80GB GPU(或等效显存)进行训练,约 30GB 显存占用。对于仅做推理(使用预训练好的概念权重),单张 24GB 显存的消费级 GPU(如 RTX 4090)即可。

图3:delta 权重压缩效果。即使将权重压缩 60%,生成质量依然保持良好。
| 维度 | 评估 |
|---|---|
| 基础模型 | Stable Diffusion v1.4 / SDXL,通过 HuggingFace diffusers 接口 |
| 微调策略 | 仅修改交叉注意力层 K/V 矩阵,不动 UNet 主干 |
| 核心依赖 | PyTorch, CLIP, diffusers, omegaconf, scipy |
| 代码结构 | 分为 src/(核心算法:GDupdateW, compress, convert)和 scripts/(训练脚本) |
| 许可证 | Adobe Research License(核心部分)+ MIT(diffusers 部分) |
| 代码质量 | 高,学术代码规范,注释完整,来源于 Stable Diffusion 官方仓库的清晰改编 |
Custom Diffusion 并非完美解决方案,存在以下值得注意的问题:
训练硬件门槛高。 官方推荐的 2x A100 80GB 配置,对于个人开发者和小团队来说成本不菲。虽然 6 分钟训练时间本身很短,但「需要能放下 30GB 显存的 GPU」这一点就将大多数消费级用户排除在外。
文本可控性有限。 由于仅微调了注意力层参数,新概念在姿态、光照、构图等方面的可控性,不如 DreamBooth 等全量微调方法。在复杂的文本提示下,模型可能退化为生成「普通的猫」而非「你的那只猫」。
版权与隐私风险。 项目的核心用途——用个人照片训练「数字分身」——涉及明显的隐私和肖像权问题。Adobe Research License 中虽然加入了禁止恶意使用的 RAIL-M 条款,但技术本身无法防止滥用。
长期维护存疑。 项目上一次活跃更新在 2022-2023 年,随着 SD v2/v3/SDXL 的迭代,v1.4 版本的模型已非最新。对于新项目,HuggingFace diffusers 官方维护的版本可能是更好的选择。
Custom Diffusion 的出现,折射出一个重要趋势:AI 生成内容正在从「通用能力」向「个性化定制」演进。2022 年以前,文生图模型的竞争焦点是「生成质量」;2022-2023 年,竞争转向「精细控制」(LoRA、ControlNet、DreamBooth、Custom Diffusion);2024 年以后,则进入「个性化和版权合规」的深水区。
从技术演进角度看,Custom Diffusion 的「仅微调 K/V 矩阵」思路,直接启发了后来的 LoRA 系列工作。虽然 Custom Diffusion 本身不是最流行的微调方案,但它在 2022 年底的 CVPR 论文中率先验证了「极轻量微调」这一范式的可行性,为后续一系列高效微调技术奠定了基础。
从 Adobe 的商业战略看,Custom Diffusion 体现了 Adobe 将生成式 AI 能力整合进 Creative Cloud 的长期意图。2023 年 Adobe Firefly 的多项定制化功能,其底层技术思路与 Custom Diffusion 一脉相承。
一句话总结: Custom Diffusion 是一套来自 Adobe 研究院的轻量级文生图概念定制方案,通过微调交叉注意力层的 K/V 矩阵,仅用 4-20 张图片即可在 6 分钟内将新概念注入 Stable Diffusion 模型,适合有 A100/24GB+ GPU 的开发者进行研究和创作实验。