Factorized MLLM Embeddings for Composed Image Retrieval
WonJun Moon, Seongchan Kim, Dahun Kim, Seungryong Kim
cs.CV, cs.IR
2026-11-04
FactEmbed把组合查询拆成八个隐变量,训练时补上粗布局盖不住的目标细节,推理一次前向完成召回和重排,精炼CIRR首位召回69.0%,比ReCALL高1.58个点。
组合图像检索(CIR)拿一张参考图和一句修改文本,去图库里找改完后的目标图。用户容易说出「袖子加长、logo 换掉」,很难把目标从头描述一遍。
近来的多模态大模型检索器把查询压进 [EOS] 这一个向量,用对比损失 InfoNCE 和目标图对齐。直接微调的 Qwen2.5-VL 和 ReCALL 都是这条路。损失只看两个向量是否靠近,没有一项监督要求先分开要改的属性和要留的属性。CCIN、FIRE-CIR 改到查询时的外部语言模型上做分解,能拆开,但多一轮生成;FIRE-CIR 的校验还随候选数线性变贵。另有零样本方法会先生成一张代理图。
FactEmbed 把分解留在同一次前向里:八个可学习隐变量先模拟修改,检索向量建在这些隐变量上面。
骨干是 Qwen2.5-VL-7B-Instruct,用低秩适配 DoRA 微调,秩 16。序列在 [EOS] 前放八个可学习隐变量,读完参考图和修改文本后,由 [EOS] 收成全局向量。修改得先写进这八个位置。
对比学习会把同一张图的隐变量挤到同一个方向。第 14 层(共 28 层)接一个轻量解码器,一层自注意力加三层 MLP,重建视觉基础模型 DINOv2 的目标图块特征。整图重建会被低频布局占满,所以目标特征先池化成 2×2 再放大,作为粗布局先验。隐变量只补先验没盖住的残差。
每个隐变量给出空间权重和特征,权重在隐变量维做 softmax,同一位置之和为 1。查询侧看不到目标图,只能从参考图和文本推断残差;目标侧把隐变量锚到同一套因子上。
因子级 InfoNCE 用 Sinkhorn 最优传输匹配无序隐变量,熵正则 0.1、迭代 30 步。解码器的权重再用 KL 散度蒸馏到倒数第 3 层的注意力,只在目标侧做,避免查询侧的参考图网格和目标对不齐。骨干共享,局部结构会留到推理。全局向量另走实例级 InfoNCE,想象与蒸馏的权重是 1.0 和 0.5。
想象要把隐变量拆开,对比要把它们收成一个点,于是分三阶段:先只训想象,再打开 DoRA 和全部损失,最后做难负例扩增。扩增时把原目标图一并给 GPT-5.6-luna,要求新文本不再描述原目标。CIRR 57476 条、22.82 美元,FashionIQ 56499 条、26.17 美元。余弦高于 0.99 的近重复先去掉,两边 743 对和 277 对。
推理关掉解码器。一次前向产出全局向量和八个隐变量,图库存全局向量和均值。全局向量召回后,前 100 名用两个余弦之和重排。均值没有单独的损失。
主结果在 Refined-CIRR 与 Refined-FashionIQ。原版标注有歧义,R@5、R@50 容易饱和,论文更看 R@1。精炼 CIRR 的 Avg 是 R@1 和六候选 Rsubset@1 的平均。
| 方法 | 精炼 CIRR R@1 | Rsubset@1 | Avg | 精炼 FashionIQ 平均 R@10 |
| Qwen2.5-VL 直接微调 | 64.64 | 84.65 | 74.65 | 66.82 |
| CSMCIR(图库另配文) | 67.16 | 86.15 | 76.66 | 69.55 |
| ReCALL | 67.41 | 87.12 | 77.27 | 69.48 |
| FactEmbed | 68.99 | 87.45 | 78.22 | 71.13 |
相对 ReCALL,精炼 CIRR 的 R@1 高 1.58,精炼 FashionIQ 平均 R@10 高 1.65。按相对值约是 2.3% 和 2.4%。CSMCIR 给图库图配了合成文本,这里没有,R@1 仍高 1.83,相对约 2.7%。
原版 CIRR 测试 R@1:FactEmbed 56.60,ReCALL 53.76,直接微调 51.98,CSMCIR 53.88。R@5 为 84.87,CSMCIR 略高,是 85.06。子集 R@1 为 81.86,对 81.11。原版 FashionIQ 平均 R@10 / R@50 为 57.71 / 76.87,ReCALL 53.89 / 74.99,CSMCIR 57.10 / 77.18,R@50 仍是 CSMCIR 更高。
Qwen3-VL-8B 把 CIRR 测试 R@1 做到 59.25,比 7B 高 2.65;论文所引 ReCALL 的同款换骨干只高 1.60。Qwen3-VL-Embedding-8B 上,测试 R@1 60.43,精炼 R@1 73.60。
CIRR 测试 R@1 的消融:基座 51.98,只加想象 51.45,加上因子对比 52.72,损失和重排齐全、尚无第三阶段 54.75,只扩增基座 53.69,完整模型 56.60。比「基座加后训练」高 2.91(56.60 对 53.69),精炼 R@1 高 2.57(68.99 对 66.42)。没有辅助损失的隐变量加上重排,精炼 Avg 只有 73.21,低于无隐变量基座的 74.65。
全量最优传输的 R@1 是 56.84 和 69.20,均值重排是 56.60 和 68.99,差 0.24 和 0.21。验证集 2297 张图、单卡 batch size 1,编码约 353 毫秒,重排加 0.17 毫秒。三档解码层里第 14 层最好。只做对比时,去掉数据集均值后隐变量平均余弦为 0.841,想象加蒸馏后为 0.548。
改印花、改袖长就是组合检索的用法。分解若每次查询都调用外部语言模型,延迟在在线侧。这里多出来的只是前 100 名的一次加分,索引从每图一个向量变成两个。
涨幅是渐进的。精炼集 R@1 比专用模型大约高 1.5 到 2 个点,精炼 CIRR 的 R@5、R@50 已在 91 和 99 附近。有用的是损失:粗布局迫使隐变量补残差,传输和蒸馏再交回全局向量。换 Qwen3 的涨幅大于论文所引的 ReCALL 对照。
个数固定为 8,不随画面复杂度变。全量匹配更准,均值会丢掉一部分细节,文中希望用 Matryoshka 表征在更少的向量里保住精度。评测只有 CIRR 和 FashionIQ。
训练时查询侧看得到目标特征的 2×2 池化,残差是在已知粗构图后补的。推理不喂先验,也没有去掉先验的实验。扩增文本和「是否更像原目标」的判断都来自 GPT-5.6-luna,写作者和判定者是同一个模型。端到端和 ReCALL 比,数据管线并不相同。两边都做后训练时,结构本身的 R@1 优势在原版 CIRR 是 2.91,在精炼集是 2.57。隐变量和文本修改是否对齐,只有定性图。