SpLIP: 通过多模态提示学习提升所有零样本草图检索任务¶
会议: ECCV2024
arXiv: 2407.04207
代码: Project Page
领域: multimodal_vlm
关键词: CLIP, 草图检索(SBIR), 多模态提示学习, 零样本学习, 跨模态对齐
一句话总结¶
提出 SpLIP,一种基于冻结 CLIP 的双向多模态提示学习框架,通过视觉-文本编码器间的双向知识交换、自适应 margin 的三元组损失和条件跨模态拼图任务,在 ZS-SBIR、GZS-SBIR 和 FG-ZS-SBIR 三种草图检索设定下均取得 SOTA。
研究背景与动机¶
任务定义¶
草图检索(Sketch-Based Image Retrieval, SBIR)旨在根据手绘草图从图库中检索对应的照片。核心挑战在于草图与照片之间存在巨大的域差异(domain gap)。该任务有三种设定:
- ZS-SBIR:测试类别在训练时完全未见
- GZS-SBIR:推理时图库同时包含训练类和未见类照片,模型容易偏向训练类
- FG-ZS-SBIR:在实例级别进行精细匹配,而非类别级别
现有方法的不足¶
- 单模态提示学习:现有基于 CLIP 的 SBIR 方法(如 CLIP-AT、TLT)主要使用单模态(视觉)提示,未充分利用 CLIP 的视觉-文本双路径协同能力
- 多模态提示的局限:已有多模态提示方法(MaPLe、PromptSRC)仅支持单向 token 共享,文本路径对视觉信息不敏感,语义深度受限
- 拼图策略粗糙:CLIP-AT 的 patch shuffling 策略对正负对使用相同/不同排列进行三元组学习,无法有效建立局部与全局的对应关系
本文动机¶
需要一种双向的跨模态知识交换机制,在 CLIP 的视觉和文本编码器之间建立更紧密的协同,同时引入条件性的跨模态拼图任务来增强细粒度对齐。
方法详解¶
整体框架¶
SpLIP 基于冻结的 CLIP(ViT-B/32),包含以下核心组件:
- 视觉引导的深度文本提示(Vision-guided Textual Prompting)
- 文本引导的深度视觉提示(Text-guided Visual Prompting)
- 条件跨模态拼图求解器(Conditional Cross-modal Jigsaw Solver)
- 自适应 margin 三元组损失
训练时只优化 LayerNorm 参数和三个映射模块(\(\mathcal{B}_t, \mathcal{B}_v, \mathcal{B}_{vt}\))以及拼图求解器 \(\mathcal{F}_{js}\),CLIP 主干完全冻结。
关键设计 1:双向提示共享¶
视觉→文本方向:通过映射块 \(\mathcal{B}_t\) 将图像 patch 嵌入 \(\mathbf{E}_0\) 转换为 \(m=4\) 个可学习的文本 token \(\mathbf{T}\),注入到文本编码器 \(\mathcal{F}_t\) 的每一层。与 MaPLe 等方法的随机初始化不同,这里的文本 prompt 直接捕获了视觉分布。
文本→视觉方向(双通道): - 通道一:通过 \(\mathcal{B}_v\) 将文本 token("sketch/photo of a",不含 [CLS])映射为 \(\mathcal{J}-1\) 个视觉 prompt token \(\mathbf{V}^{\text{tg}}\),每层相同 - 通道二:通过 \(\mathcal{B}_{vt}\) 将文本编码器每层输出 \(\mathbf{W}_l\)(包含所有训练类的 token)转换为 \(n=2\) 个逐层不同的视觉 prompt \(\mathbf{V}^{\text{ms}}\)
关键创新点:\(\mathbf{V}^{\text{ms}}\) 聚合了所有训练类的文本信息(类别无关),这种跨类知识共享有效减小了嵌入空间中的语义间隙。
关键设计 2:条件跨模态拼图任务¶
给定 anchor 草图 \(s_a\) 及其排列版本 \(s_a'\),正照片 \(p_a^+\)(同类/同实例)和负照片 \(p_a^-\):
- 构建融合特征:\(r = [\mathcal{F}_v(s_a), \mathcal{F}_v(s_a')]\),\(r^+ = [\mathcal{F}_v(p_a^+), \mathcal{F}_v(s_a')]\),\(r^- = [\mathcal{F}_v(p_a^-), \mathcal{F}_v(s_a')]\)
- 拼图求解器 \(\mathcal{F}_{js}\)(2 层 Transformer encoder + classifier)需要预测排列索引
- 核心思想:正照片应比负照片更能帮助解决草图的拼图任务,因为正照片与草图具有相同的空间结构
与 CLIP-AT 的区别:CLIP-AT 让正对共享相同排列、负对使用不同排列;SpLIP 让排列后的草图与未排列的正照片配对,更有效地学习局部-全局对应关系。
关键设计 3:自适应 Margin 三元组损失¶
传统三元组损失使用固定 margin,SpLIP 利用 CLIP 文本编码器的类名嵌入动态计算 margin:
当正负类语义相近(cosine 相似度高)时,margin 更大,迫使模型更努力地区分相似类别。
损失函数¶
- \(\mathcal{L}_{triplet}\):自适应 margin 的跨模态三元组损失
- \(\mathcal{L}_{class}\):基于 CLIP 文本 prompt 的图文分类损失(交叉熵)
- \(\mathcal{L}_{cjs}\):条件拼图损失 = 拼图交叉熵 + hinge loss(约束正对比负对有更低的拼图 CE)
实验关键数据¶
主实验:类别级 ZS-SBIR(Table 1)¶
| 方法 | 骨干 | Sketchy-1 mAP | Sketchy-2 mAP@200 | TU-Berlin mAP | QuickDraw mAP |
|---|---|---|---|---|---|
| BDA | CNN | 43.7 | 55.6 | 37.4 | 15.4 |
| PSKD | ViT | 68.8 | 56.0 | 50.2 | 15.0 |
| ZSE-Ret | ViT | 73.6 | 50.4 | 56.9 | 14.2 |
| CLIP-AT | CLIP | - | 72.3 | 65.1 | 20.2 |
| TLT | CLIP | 77.9 | 66.1 | 61.5 | 27.8 |
| MARL | CLIP | - | 69.1 | 70.5 | 32.7 |
| SpLIP | CLIP | 80.2 | 76.4 | 73.1 | 34.2 |
GZS-SBIR 结果(Table 2)¶
| 方法 | Sketchy-2 mAP@200 | Sketchy-2 P@200 | TU-Berlin mAP | TU-Berlin P@100 |
|---|---|---|---|---|
| STL (AAAI'23) | 63.4 | 53.8 | 40.2 | 49.8 |
| CLIP-AT | 55.6 | 62.7 | 60.9 | 63.8 |
| MARL | 62.3 | 68.5 | 62.6 | 67.8 |
| SpLIP | 68.2 | 74.5 | 66.7 | 70.3 |
SpLIP 在 GZS-SBIR 上超过次优方法 +4.8%(Sketchy)和 +4.1%(TU-Berlin)mAP。
FG-ZS-SBIR 结果(Table 3,Sketchy 数据集)¶
| 方法 | Acc@1 | Acc@5 |
|---|---|---|
| CLIP-AT | 28.68 | 62.34 |
| MARL | 29.96 | 58.53 |
| SpLIP | 33.45 | 66.71 |
SpLIP 在 Top-1 上超过 CLIP-AT 近 +5%,超过 MARL +3.5%。
跨数据集泛化(Table 4,训练 Sketchy-Ext,测试其他)¶
| 方法 | TU-Berlin mAP | TU-Berlin P@100 | QuickDraw mAP | QuickDraw P@100 |
|---|---|---|---|---|
| CLIP-AT | 56.4 | 63.1 | 30.7 | 45.0 |
| SpLIP | 70.6 | 76.0 | 45.8 | 58.6 |
跨数据集场景下提升巨大:TU-Berlin +14.2% mAP,QuickDraw +15.1% mAP。
消融实验:损失函数(Table 5,Sketchy)¶
| 损失组合 | ZS mAP@200 | ZS P@200 | FG Acc@1 | FG Acc@5 |
|---|---|---|---|---|
| \(\mathcal{L}_{class}\) | 57.5 | 58.1 | 17.23 | 39.41 |
| \(\mathcal{L}_{triplet}\) | 71.6 | 72.7 | 26.54 | 59.92 |
| \(\mathcal{L}_{class} + \mathcal{L}_{triplet}\) | 73.1 | 73.9 | 30.07 | 62.95 |
| + \(\mathcal{L}_{margin}\) | 74.5 | 75.1 | 31.23 | 63.54 |
| + \(\mathcal{L}_{cjs}\)(完整) | 76.4 | 77.3 | 33.45 | 66.71 |
消融实验:可学习模块(Table 6,Sketchy)¶
| 配置 | ZS mAP@200 | FG Acc@1 |
|---|---|---|
| w/o LayerNorm | 74.2 | 31.24 |
| w/o \(\mathcal{B}_v\)(无文本→视觉 prompt) | 71.9 | 29.76 |
| w/o \(\mathcal{B}_t\)(无视觉→文本 prompt) | 72.8 | 30.41 |
| w/o \(\mathcal{B}_{vt}\)(无跨层文本→视觉) | 70.5 | 28.92 |
| w/o 全部视觉 prompt | 68.8 | 26.54 |
| w/o 所有 prompt 模块 | 62.5 | 28.49 |
| SpLIP (完整) | 76.4 | 33.45 |
关键发现¶
- 双向 prompt 共享至关重要:移除任一方向的 prompt 共享都导致 ZS-SBIR 下降 4%+,FG-SBIR 下降 3%+
- \(\mathcal{B}_{vt}\) 是最关键的模块:移除后 mAP 下降 5.9%,因为它负责聚合所有训练类文本信息到视觉端
- 自适应 margin 优于固定 margin:动态 \(\mu\) 在所有任务上显著优于固定 \(\mu=0.2\)
- 条件拼图优于 CLIP-AT 的拼图策略:替换为 CLIP-AT 的方案后性能明显下降
- 深度 prompt(逐层注入)优于浅层 prompt:随着参与的层数增加,mAP 持续提升
- 跨数据集泛化能力极强:在未见数据集上提升 14-15% mAP
亮点与洞察¶
- 首个将多模态 prompt learning 应用于 SBIR 的工作:之前的 CLIP-SBIR 方法仅使用视觉 prompt 或简单微调
- 双向信息流设计精巧:视觉→文本(通过 \(\mathcal{B}_t\))让文本 prompt 感知图像内容;文本→视觉(通过 \(\mathcal{B}_v + \mathcal{B}_{vt}\))让视觉编码器融入语义知识,形成闭环
- 类别无关的知识聚合:\(\mathcal{B}_{vt}\) 聚合所有训练类的文本特征而非仅当前类,推理时无需见过测试类名称,天然支持零样本
- 条件拼图任务的巧妙改进:将"排列后草图 vs 排列后照片"改为"排列后草图 vs 完整照片",更好地建立局部-全局对应
- 自适应 margin 利用了 CLIP 的语义结构:语义相近的类别需要更大的区分力度,这与人类直觉一致
局限性¶
- 仅使用 ViT-B/32:未探索更大的 CLIP 骨干(ViT-L/14),可能有进一步提升空间
- 训练开销:虽然 CLIP 冻结,但双向 prompt 共享和拼图求解器引入了额外计算(多个映射模块 + Transformer decoder)
- 拼图任务的超参数:排列数量 \(|\mathcal{Y}^{\text{perm}}|\) 的选择未充分讨论,可能对 FG 性能有重要影响
- FG-ZS-SBIR 仅在 Sketchy 上评估:缺少其他细粒度数据集(如 QMUL-Shoe/Chair)的结果
- 推理速度未报告:多模态 prompt 生成(尤其是 \(\mathcal{B}_{vt}\) 需处理所有训练类)可能导致推理延迟
- 损失权重 \(\alpha, \beta\) 通过网格搜索确定:对不同数据集的敏感性未分析
相关工作与启发¶
与 MaPLe (CVPR'23) 的对比¶
MaPLe 同为多模态 prompt learning,但仅支持视觉→文本的单向 token 共享(用文本 prompt 初始化视觉 prompt),且局限于特定层。SpLIP 实现了双向、全层的知识交换,在 SBIR 场景下更为有效。
与 CLIP-AT (CVPR'23) 的对比¶
CLIP-AT 使用视觉 prompt + patch shuffling 三元组目标。SpLIP 在三方面全面升级:多模态 prompt(vs 单模态)、条件拼图(vs 朴素排列匹配)、自适应 margin(vs 固定 margin)。跨数据集实验中 SpLIP 超过 CLIP-AT 14-15% mAP。
启发¶
- 双向 prompt 共享的范式可推广到其他跨模态任务(如 text-to-image 生成、VQA)
- 自适应 margin 思想可用于任何基于 CLIP 语义空间的度量学习
- 条件拼图任务思路可扩展到其他需要细粒度对齐的场景(如跨域 ReID、医学图像配准)
评分¶
- 新颖性: ⭐⭐⭐⭐ — 双向多模态 prompt 共享 + 条件拼图 + 自适应 margin,三个创新点协同工作
- 实验充分度: ⭐⭐⭐⭐⭐ — 三种 SBIR 设定 × 四个数据集 + 跨数据集泛化 + 详细消融,非常全面
- 写作质量: ⭐⭐⭐⭐ — 方法描述清晰,公式符号体系完整,图示直观
- 价值: ⭐⭐⭐⭐ — 在草图检索领域树立了新的 CLIP 适配范式,双向 prompt 机制有较好的通用性