4.3 IP-Adapter¶
所属章节:第 4 章 条件控制与个性化
课时:90 分钟
前置:CLIP、Cross-Attention
对应面试题:A14
一句话目标:学完能画出 IP-Adapter 的解耦 cross-attention,解释 image prompt 怎么工作,并区分它与 ControlNet。
1. 学习目标¶
学完本节,你应该能够:
- 解释 为什么需要 image prompt;
- 画出 IP-Adapter 的结构;
- 写出 解耦 cross-attention 公式;
- 说明 为什么只训练少量参数;
- 解释
ip_adapter_scale和 negative image prompt; - 区分 IP-Adapter 与 ControlNet;
- 用 90 秒回答 A14。
2. 为什么需要 image prompt¶
文本很难描述:
- 一个人的长相;
- 一张图的风格;
- 一件衣服的纹理;
- 一个角色的细节;
- 参考图的构图。
IP-Adapter 的目标:
把一张参考图变成“图像 prompt”,注入冻结的 SD,同时保持文本兼容。
3. 结构¶
3.1 图像编码器¶
- CLIP ViT-H/14 或 OpenCLIP;
- 提取参考图特征;
- 全局语义/风格。
3.2 投影网络¶
- 把图像特征投影到 SD cross-attention 的维度;
- 得到图像 token 特征 \(C_i\)。
3.3 解耦 Cross-Attention¶
文本 cross-attention:
图像 cross-attention:
输出:
- \(Q\) 来自图像特征;
- \(K_t,V_t\) 来自文本;
- \(K_i,V_i\) 来自参考图;
- 两套 K/V 分离,避免文本/图像条件互相干扰;
- \(\lambda\) 控制图像条件强度(
ip_adapter_scale)。
4. 为什么叫“解耦”¶
如果直接把图像特征拼到文本 token 后面,再做一套 cross-attention:
- 文本和图像条件会共享同一套 K/V;
- 两种条件的分布不同,容易互相干扰;
- 调文本强度会影响图像,调图像强度会影响文本。
解耦后:
- 文本一套 K/V;
- 图像一套 K/V;
- 共享 Q;
- 输出相加;
- 可以独立调 \(\lambda\)。
5. 训练¶
- 数据:图像-文本对/参考图-目标图;
- 冻结 SD 和 CLIP 图像编码器;
- 只训练投影网络和图像 cross-attention 的 K/V;
- 损失仍是扩散噪声预测;
- 训练时随机丢弃条件,支持 CFG/组合;
- 原版约 22M 可训练参数。
6. 推理与使用¶
- 输入参考图 + 文本 prompt;
ip_adapter_scale控制参考图强度;- 可以做风格迁移、角色参考、构图参考、人脸参考;
- 支持 negative image prompt(部分实现);
- 可与 ControlNet 组合:
- ControlNet 管空间结构;
- IP-Adapter 管风格/主体/语义;
- IP-Adapter Plus:更细粒度图像特征/query transformer,提升细节;
- IP-Adapter FaceID:结合人脸识别 embedding,提升身份一致性。
7. 和 ControlNet 的区别¶
| 维度 | ControlNet | IP-Adapter |
|---|---|---|
| 条件类型 | 空间图(边缘/深度/姿态) | 参考图(语义/风格/主体) |
| 注入方式 | 编码器分支 + 零卷积 | 解耦 cross-attention |
| 控制内容 | 结构/布局 | 外观/风格/身份 |
| 预处理 | 通常需要(Canny/Depth) | 不需要,直接输入参考图 |
| 组合 | 可叠加 | 可叠加 |
一句话:
ControlNet 管“形状”,IP-Adapter 管“长相/风格”。
8. 90 秒回答:IP-Adapter 的核心原理¶
面试官问:介绍一下 IP-Adapter 的核心原理。
参考回答:
“IP-Adapter 用 CLIP 图像编码器提取参考图特征,投影后作为额外的图像 cross-attention 条件注入冻结的 SD。它把文本 cross-attention 和图像 cross-attention 解耦:文本一套 K/V,图像一套 K/V,共享 Q,输出相加,用 \(\lambda\) 控制图像强度。这样文本和图像条件互不干扰,只训练少量参数(原版约 22M)。它适合风格/主体参考,和 ControlNet 管空间结构不同,两者可以组合。”
9. 追问与回答¶
追问 1:为什么图像和文本要解耦?¶
两种条件分布不同,共享 K/V 会互相干扰,也不方便独立调强度。
追问 2:为什么只训练少量参数?¶
冻结 SD/CLIP,保持原模型能力;只学条件注入,训练成本低。
追问 3:IP-Adapter 和 ControlNet 怎么选?¶
要控制姿态/边缘/深度用 ControlNet;要参考风格/人物/构图用 IP-Adapter;可以一起用。
追问 4:scale 太大会怎样?¶
会过度复制参考图,损失文本控制/多样性;太小则不起作用。
10. 常见误区¶
- 说 IP-Adapter 把参考图拼到 latent:它是 cross-attention 条件。
- 把它和 ControlNet 混为一谈:一个语义,一个空间。
- 忽略 image encoder 的选择:CLIP ViT-H/14 等影响效果。
- 认为 scale 越大越好:会复制/僵硬。
- 忽略文本/图像条件冲突:需要调 scale 和 prompt。
11. 课堂练习¶
答案见 06 章节练习与答案。
- 画 IP-Adapter 结构。
- 写解耦 cross-attn 公式。
- 解释为什么只训练少量参数。
- 比较 IP-Adapter 与 ControlNet。
- 用 90 秒回答 A14。
12. 自测清单¶
- [ ] 能解释 image prompt;
- [ ] 能画解耦 cross-attn;
- [ ] 能解释 22M 参数花在哪;
- [ ] 能调 scale;
- [ ] 能区分 ControlNet;
- [ ] 能 90 秒回答 A14。
13. 本节材料为什么这样设计¶
- 先讲 image prompt 的需求:不然只是背结构。
- 解耦公式单列:A14 的核心。
- 与 ControlNet 对比:面试最爱问“两者区别”。
- scale/组合:工程高频。
- 不写代码:本节是架构和原理。
详细设计理由见 08 材料设计理由。