VGVLP思路探索和讨论
OVD 与查询文本的动态交互
动机
在候选框产生阶段,是先根据 NLP 工具从表达式中提取一个“类别词”(如“狗”“桌子”),再调用 OVD(如 Detic)检测对应类别的所有框;而后续的 GradCAM 热图仅作为二次打分参考。这种“先提取类别,再检测类别,再融合热图” 的流程,潜在存在两方面不足:
- 类别提取不精确:单一的名词抽取会丢失表达式中的关键信息(如外观、上下文、数量、位置等),导致 OVD 产生大量噪声框,甚至漏检真实目标。
- OVD 与文本语义脱节:OVD 只关心类别标签,无法感知表达式中的限定词或修饰词(如“红色的”“在左边的”“穿着白衬衫的”等),因此无法动态调整 proposal 生成策略。
如果能让 OVD 的候选框生成也“感知”到更丰富的文本信息(不仅仅是类别),就有可能:
- 更精确地生成“语义对齐度更高”的初始候选框;
- 降低后续热图融合阶段需要过滤的冗余候选框数目;
- 整体减少两阶段筛选所带来的误差累积。
思路
在 OVD(如 Detic、OWL-ViT 等开放词汇检测器)的输入阶段,引入一条“文本条件分支”,使得 OVD 在生成物体候选框时同时参考查询文本的整体语义——包括类别、属性、空间关系等。这可以从以下两个角度入手实现:
-
文本嵌入引导的特征调制
-
将查询文本(整个表达式)输入文本编码器(可共享 CLIP 文本分支或 VLP 自身的文本编码器),得到一个全局文本特征向量 t∈Rd\mathbf{t}\in\mathbb{R}^dt∈Rd。
-
在 OVD 的骨干网络某些关键层(如特征金字塔网络 FPN、或检测头),使用 t\mathbf{t}t 对卷积特征图 F∈RC×H×W\mathbf{F}\in\mathbb{R}^{C\times H\times W}F∈RC×H×W 做条件调制(conditional modulation)。
- 例如,将 t\mathbf{t}t 映射为通道注意力权重 a∈RC\mathbf{a}\in\mathbb{R}^Ca∈RC,然后做逐通道乘法:F~c=ac⋅Fc\widetilde{\mathbf{F}}_c = a_c \cdot \mathbf{F}_cFc=ac⋅Fc。
- 或者将 t\mathbf{t}t 与特征图做多头自注意力(cross-attention),让文本语义直接对图像特征进行加权,以强化最有可能对应表达式的区域响应。
-
这样,OVD 在生成 region proposals(候选框)时,特征图已经被文本“指导”,更倾向于检测与表达式整体语义匹配度高的区域。
-
-
候选类别动态筛选与排序
- 与原来只提取一个类别不同,先将查询整体通过依存句法/命名实体识别等 NLP 模型,提取多个“潜在实体词”与“修饰词组合”:例如,“穿着红色衬衫的男人”可拆分为 {“男人”,属性:“红色衬衫”};“左侧两只黑猫”拆分为 {“猫”,属性:“黑色”“左侧”“数量=2”}。
- 使用 CLIP 或 VLP 文本 encoder,将每个“候选实体 + 修饰词”合并为一句提示语(prompt),如 “a photo of a man wearing red shirt” / “two black cats on the left”。对 OVD 的类别词汇表(COCO/Detic 等)做转译映射后,分别计算提示语与类别嵌入的相似度,选出 TopK 个最相关类别作为检测类别。
- OVD 不再只接受单一类别(如“man”),而是利用 TopK 候选词、修饰词和空间提示,一次性生成多个语义条件下的候选框,然后在后续阶段聚合这些候选框。
-
OVD 可插入文本条件分支:目前 Detic、OWL-ViT、GLIP 等开放词汇检测器在训练或推理阶段,都有一个文本嵌入→图像特征查询的过程(通常是把类别标签拼成 “a photo of {label}”),并通过 CLIP 或自有融合模块,计算文本-视觉相似度对 RoI 进行分类。只需把这一步由单一的“标签文本”替换为“完整表达式文本”或“多种 Prompt 文本”,并让模型在特征层面(CNN feature 或 transformer patch feature)加入文本引导,就可以做到“根据完整查询动态调整检测结果”。
-
无需全新训练大规模数据:如果已有的 OVD 已经包含“文本→候选框”模块,我们只需把它当作可微调(或者在推理时引入额外逐层特征融合)模块,添加几层轻量化的跨模态 attention 即可。例如,在 FPN 上向每个位置注入文本语义的通道注意力权重;或者在 RPN 阶段,对 anchors 做文本注意力加权。这些改动并不需要重新从零训练整个检测器,只需在包含少量(甚至零样本)图文对上做轻微微调或直接推理即可。
使用可学习的融合模块进行微调
动机
在候选框与热图融合阶段采用简单的加权打分公式:
gk = 1Akα × sk × rk g_k \;=\; \frac{1}{A_k^\alpha} \; \times \; s_k \; \times \; r_k gk=Akα1×sk×rk
其中:
- AkA_kAk:表示第 kkk 个候选框的面积,用来“抑制过大框”偏好;
- sks_ksk:表示 OVD 对该框的置信度;
- rkr_krk:表示 GradCAM 热图在该框区域的总热度。
这种方法虽然直观,但存在手动超参调节且线性耦合的局限:
- 权重共享与线性假设:公式里认为 sks_ksk 和 rkr_krk 乘积即可最优组合,没有考虑它们之间可能存在复杂的“非线性关联”,也未考虑“文本与候选框语义对齐度”这一路径;
- 超参数敏感:α\alphaα、候选框置信度阈值 θ\thetaθ 都是手动调节,适用于一个数据集/模型组合,但面对不同语言现象、图像场景会失灵;
- 违背零样本极限:如果想要更智能,需要引入可微调模块,违背“完全不使用任何视觉定位标注”零样本设定。但若放宽到“小规模微调”,又能兼顾更强性能。
因此,引入可学习的融合模块,让系统能够在“少量标注数据”上微调比手动公式更鲁棒。
思路
可学习融合结构设计
-
输入特征设计
对于每个候选框 kkk,构建一个多模态特征向量 xk\mathbf{x}_kxk,包含至少以下几部分:- 热图分布特征 rkr_krk:可以是框内热图之和,也可以细化为多尺度的统计直方图(如热区分布、均值、方差等);
- OD 置信度向量 sks_ksk:不仅仅是一个 scalar,还可包含 “类别 embedding ck∈Rd\mathbf{c}_k \in \mathbb R^dck∈Rd + 置信度值” 两部分;
- 框几何信息:xk1,yk1,xk2,yk2,areakimage area{x_{k1}, y_{k1}, x_{k2}, y_{k2}, \frac{\text{area}_k}{\text{image area}}}xk1,yk1,xk2,yk2,image areaareak,以便网络感知框大小、位置、长宽比;
- 语义对齐分 ϕk\phi_kϕk:通过 CLIP 或 VLP 将候选框的“裁剪图像 Patch” 与查询表达式文本做一次类似 dot-product 相似度计算,得到此框与表达式在语义空间的相似度。
这样,x∗k∈RD∗feat\mathbf{x}*k \in \mathbb R^{D*{\text{feat}}}x∗k∈RD∗feat 可全面反映 “热度 + 置信度 + 几何 + 语义” 4 条信号。
-
融合网络结构
可设计为一个轻量的 Multi-Layer Perceptron(MLP)或小型 Transformer 层,输出一个 得分映射 gklearnedg_k^{\text{learned}}gklearned,再选分数最高的框作为最后预测。-
MLP 方案示例:
hk=ReLU(W1xk+b1)gklearned=W2hk+b2\begin{aligned}\mathbf{h}_k &= \text{ReLU}(\mathbf{W}_1 \mathbf{x}_k + \mathbf{b}_1) \\g_k^{\text{learned}} &= \mathbf{W}_2 \mathbf{h}_k + b_2\end{aligned} hkgklearned=ReLU(W1xk+b1)=W2hk+b2
其中 W∗1∈RH×D∗feat,,W2∈R1×H\mathbf{W}*1 \in \mathbb R^{H\times D*{\text{feat}}},,\mathbf{W}_2\in\mathbb R^{1\times H}W∗1∈RH×D∗feat,,W2∈R1×H;HHH 为隐藏维度(如 256 或 512)
-
小型 Transformer 方案:将一张图片所有 x∗k∗k=1N{ \mathbf{x}*k }*{k=1}^Nx∗k∗k=1N 视为一个序列,输入 LLL 层 Multi-Head Self-Attention + MLP 预测,每个框最终得到一个得分。通过 查询-候选框交叉注意力,可让得分网络自己学习“哪些候选框之间需要互相抑制”或“组合决策”——更强鲁棒性。
-
-
微调策略
- 冻结 VLP 与 OVD:仅微调融合网络(MLP 或 Transformer),大幅度减少参数量(<2< 2<2M)。
- 损失函数:使用标准的定位回归交叉熵(对每张图像,仅给出一个 GT 框,train 时令 GT 框对应的候选框 label=1,其余 label=0),再做二分类 softmax 或直接回归边框偏差也可;如果已有若干定位标注,可扩展做交叉熵+IoU 约束。
- 训练数据:可用 RefCOCO/+ 的 train split 上的“图-表达-框”三元组,几千到万级样本即可能使得融合网络收敛。
基于 DETR/MDETR 的“一步到位”视觉定位
目前最接近“单阶段视觉-语言定位”的公共方案是 MDETR(Modulated Detection for End-to-End Multi-Modal Understanding,图文定位 Transformer)。它在 DETR(DEtection TRansformer)基础上引入“文本查询”做多模态融合,直接输出一个或多个对应给定文本表达式的边界框。因此,我们可以借鉴 MDETR,将 GroundVLP 改造为:
给定一张图片 + 一个查询表达式(Referring Expression),Transformer 网络直接预测一个边界框,无需先调用 Open-Vocabulary Detector
MDETR 的大致工作流程
- 图像特征提取:使用 CNN(如 ResNet)或 Vision Transformer,将图片划分成若干 patch / grid,提取一系列视觉 tokens vii=1N{v_i}_{i=1}^Nvii=1N
- 文本特征提取:使用文本 Encoder(如 BERT、RoBERTa 或 CLIP 的 Text Encoder),将查询表达式编码为文本 tokens tjj=1M{t_j}_{j=1}^Mtjj=1M
- 多模态交叉注意力:将 vi{v_i}vi 与 tj{t_j}tj 同时送入一个多层“多模态 Transformer”中,网络通过跨模注意力(Cross-Attention)让视觉与文本特征充分交互
- 检测头(Decoder Queries):与 DETR 类似,引入一组固定数目的“查询向量”(Detection Queries),每个查询向量都做跨模注意力,最终映射成一组输出向量;这些向量经头部网络回归出“边界框坐标 + 文本匹配置信度”
- 匹配与损失:通过 Hungarian Matching,将预测出的若干框与 GT 文本-框 对一一匹配,优化包含“文本-图像对齐”和“框回归”在内的多任务损失
对于零样本场景,只需把“训练阶段”改为 纯 ITM(Image-Text Matching)+检测数据 预训练,而在推理阶段不需要 GT 定位标注,也能给出“文本+图片→定位框”结果。GroundVLP 本质也是在利用 预训练的图文一致性 与 预训练的检测能力。MDETR 则给出了一个“端到端双模态 DETR 架构”的实现路径。
Loss 设计
-
因为 MDETR 本身需要“文本-框”对齐做监督,此处也可借鉴:
- Box Regression Loss:让网络把与文本最匹配的槽位预测到 GT 框。(需要在训练时给定“GT表述-GT框”)
- Text-Object Matching Loss:对每个预测槽位,网络还要给出一个“置信度”,表示该槽位与 GT 文本匹配的概率;
- Negative Slot 监督:其它与文本不匹配的 Slot 贴标签 0。
-
如果想“真零样本”:可预先在大规模无需标注“文本→框”对应关系的数据(如 COCO Captions + COCO 检测)做混合预训练,让模型先学到“图文+检测”能力;推理时直接给出定位。
-
视觉 Backbone:可以选用 ResNet-50 + FPN(如 DETR),或者 ViT(如 Deformable DETR)。
-
文本 Encoder:可以优先使用 CLIP 的 Text Encoder,以便与 CLIP 中已有的“文本-视觉相似度”统一;若想更深入融合,也可直接用 BERT / RoBERTa,然后再做一次嵌入对齐。
-
多模态 Encoder:借鉴 MDETR,至少要有 L=6 层 Transformer,其中每层包含:
- 对视觉特征做 Self-Attn;
- 对文本特征做 Self-Attn;
- 文本与视觉之间的 Cross-Attn(即 Visual Query 关注 Text Key/Value,或 Text Query 关注 Visual Key/Value);
- FFN + 归一化层。
-
Detection Decoder:如 DETR 的 Decoder,直接进行 N=100 个 Query→Attention→FFN→回归。
-
输出 Head:每个 Decoder Slot 输出一个(x,y,w,h)(x,y,w,h)(x,y,w,h) + “Text-Match Score”(s)(s)(s),再做 Softmax 交叉熵判断哪个 Slot 与文本最匹配。
训练与微调策略
预训练
-
预训练数据:
- Image-Text Matching (ITM):使用 COCO Captions、Flickr30k Captions、LAION400M 等大规模无检测标注的图文对;网络学习“给定图像+文本,是否匹配”任务。
- Open-Vocabulary 检测数据:COCO Detection、Visual Genome Detection、LVIS 等含有检测标注但不含“指代表达式-框对”,允许网络学习“视觉特征→边框回归”能力。
-
联合预训练任务:
- ITM Loss:给网络一对“图像+文本”,期望预测出匹配/不匹配。
- Detection Loss:随机在图像中选取类别标签(如 COCO 类别),将“类别文本”送入文本分支,网络需要输出对应的框集合。也可直接用 COCO 标注“将图像→检测框”当作 DETR 训练。
- 跨模对齐增强:在预训练阶段,让文本和视觉在交叉注意力中互相模仿(Contrastive Loss),提升多模态对齐能力。
这样,模型学会了:
- “给图 + 文本(任意自然语言描述),先学习能否匹配”;
- “给图 + 单一类别名称 → 预测框”;
- 这两者结合后,模型大概能做到“给图 + 表达式 → 回归出最可能匹配的一个或若干框”。
在下游定位数据上做弱微调(Weakly Supervised Fine-tuning)
-
数据:RefCOCO/RefCOCO+(约 20 万表达式-框对),Flickr30k Entities(约 30 万实体短语与对应框)。
-
微调任务:
- Referring Expression Comprehension (REC):给“图+完整表达式”,让模型在 N 个 Decoder Slot 中,将与表达式匹配的 Slot 回归到 GT 框;损失同 DETR:Box L1 + GIoU + Text-Match CE。
- Phrase Grounding(可选):需要把一句话中多个短语分别定位到多个框。可以在 Decoder 最后一层,把每个 Entity Phrase 分配给一个 Query Slot → 回归;或先把整句拆成多个“图+Phrase”对,一次训练一个 Phrase。
-
冻参策略:冻结视觉 Backbone 与文本 Encoder(如 CLIP Text),仅微调多模态 Encoder 与 Decoder、输出 Head
为什么要加关系推理/场景图
- 多对象交互
在一句描述里,如果涉及到“人给狗喂食”“杯子放在桌子上”“猫躲在沙发后面”等关系,只靠 GradCAM 热图往往只关注“最显著的单体词”,而对“谁在做什么”这一动态或相对位置关系抓得不够,只能算出“这张图里有一个人、一个狗、一个桌子”,却很难知道“哪只狗正被哪个人在喂”。 - 遮挡与上下文补全
当目标被部分遮挡时,单纯的热图常常分布在可见部分,OVD 也可能因遮挡而漏掉目标。此时,如果能“知道”语境里其他对象、彼此关系和场景布局——例如“狗在沙发后面”“椅子上放着一只手套”,就能用上下文填补遮挡信息,对定位打分更加稳健。
因此,引入一个场景图(Scene Graph)或者关系推理(Relational Reasoning)模块,让系统在选框阶段或打分阶段,多考虑“候选盒子之间的语义关系是否和句中描述吻合”,就能在复杂交互、遮挡环境下大幅提高定位精度。
流水线概览
-
文本解析(Structured Query Extraction)
-
对输入的“指代表达式” QQQ(例如 “wearing a red hat next to a sitting dog”)先做依存句法及语义角色标注,抽取出若干三元组 (主体, 关系, 客体)(\text{主体},\;\text{关系},\;\text{客体})(主体,关系,客体)。
-
例如从“a man holding a red ball next to a sitting dog” 可以得到两条主谓宾:
- (man, holding, ball)(\text{man},\;\text{holding},\;\text{ball})(man,holding,ball)
- (dog, sitting, —)(\text{dog},\;\text{sitting},\;\text{—})(dog,sitting,—) 或者 KaTeX parse error: Expected 'EOF', got '_' at position 26: …l},\;\text{next_̲to},\;\text{dog…——具体提取策略可参考 off‐the‐shelf NLP 库(如 SpaCy + SRL)。
-
-
生成 OVD 候选框
- 先用 NLP 抽出的“核心名词”(man、ball、dog)分别触发 Detic,得到 {boxk}k=1N\{\text{box}_k\}_{k=1}^N{boxk}k=1N,附带原始置信度 sks_ksk。
- 同时为每个候选框 kkk 记录它的“类别标签” c^k\hat{c}_kc^k,例如某框被判定为“dog”或“ball”或“person”。
-
场景图生成(Scene Graph Generation)
- 采用一个预训练的开源场景图检测模型(如 Neural‐Motifs、Graph R‐CNN、或基于 Transformer 的 SGG 模型)直接在图像上预测出一张 Scene Graph。
- 这个 SGG 模块的输出包含一系列节点(image regions 对应的实体,如 “person: box_a”、“dog: box_b”、“ball: box_c”……)以及节点之间的边(关系 Triplet,比如 (boxa,holding,boxc)(\text{box}_a, \text{holding}, \text{box}_c)(boxa,holding,boxc)、KaTeX parse error: Expected 'EOF', got '_' at position 26: …}_c, \text{next_̲to}, \text{box}…)。
- 整个 SGG 模型在训练时只用 Visual Genome、COCO VG、Open‐Images 等公开的关系标注数据微调好,在下游仍保持“零标注”状态——届时直接加载预训练权重,不再触碰 RefCOCO 之类的显式“定位+关系”标注。
-
文本三元组 ↔ 场景图对齐(Relational Matching)
-
将第 1 步从文本里解析出的三元组 {(主体i, 关系i, 客体i)}\{(\text{主体}_i,\;\text{关系}_i,\;\text{客体}_i)\}{(主体i,关系i,客体i)} 与第 3 步 SGG 输出的所有检测到的 (boxu, r^uv, boxv)(\text{box}_u,\;\hat{r}_{uv},\;\text{box}_v)(boxu,r^uv,boxv) 做匹配。
-
匹配标准示例:
- 文本“三元组”里主体词 “man” 与 SGG 中节点类别相同且置信度最高的 Box 匹配。
- 文本关系词 “holding” 先在预定义的关系词汇表里和 SGG 输出的关系类别(“holds”、“grasping”等)做近义匹配(可用 WordNet/CLIP Embedding 相似度)。
- 文本客体“ball”同样匹配到 SGG 节点。
- 如果 ∃\exists∃ 一对 (boxu, boxv)(\text{box}_u,\;\text{box}_v)(boxu,boxv) 满足 “SGG 分类为 person ↔ ball” 且关系 label 为“holding” 或近似,则认为这个候选对对应该文本三元组。
-
对于每条文本三元组,都能找到一组满足条件的 (u,v)(u,v)(u,v)。如果某条三元组在候选框列表里找不到对应节点,就认为当前候选盒子组合不满足“关系约束”,在后续打分时要大幅打折。
-
-
关系‐热图‐置信度联合打分
-
每个候选框 kkk 都有 sks_ksk(OVD 置信度)、rkr_krk(GradCAM 热度)、AkA_kAk(面积惩罚)。这里再引入一个“关系一致度” ρk\rho_kρk。
-
ρk\rho_kρk 的计算思路:
-
如果候选框 kkk 对应的实体参与到了 SGG ⟨node⟩ → ⟨relation⟩ → ⟨node⟩ 中,且与文本里某条三元组 (subject, pred, object)(\text{subject},\;\text{pred},\;\text{object})(subject,pred,object) 完全“类别+关系+类别”对齐,则 ρk≈1\rho_k\approx1ρk≈1。
-
如果该框没有参与任何与文本三元组匹配的关系,则 ρk≈0\rho_k \approx 0ρk≈0。可以将它定义为 0 或者一个很小的正数 ϵ\epsilonϵ。
-
若只部分匹配,例如“主体类别对上了,但关系没对上”,则 ρk=0.5\rho_k = 0.5ρk=0.5 之类的中间分。具体分数可设计为:
ρk=max(u,v)∈候选 pairs[ 1(类别一致)⋅cos(文中关系 embedding, SGG 关系 embedding)].\rho_k = \max_{(u,v) \in \text{候选 pairs}} \Bigl[\;\mathbf{1}(\text{类别一致}) \cdot \cos(\text{文中关系 embedding},\, \text{SGG 关系 embedding})\Bigr]. ρk=(u,v)∈候选 pairsmax[1(类别一致)⋅cos(文中关系 embedding,SGG 关系 embedding)].
-
-
最终,给每个候选框 kkk 计算一个综合打分:
Gk = skβ1 × rkβ2 × (1Ak+ϵ)β3 × ρkβ4,G_k \;=\; s_k^{\beta_1} \;\times\; r_k^{\beta_2} \;\times\; \bigl(\tfrac{1}{A_k + \epsilon}\bigr)^{\beta_3} \;\times\; \rho_k^{\beta_4}, Gk=skβ1×rkβ2×(Ak+ϵ1)β3×ρkβ4,
其中 βi\beta_iβi 均可通过在 Val 集上做少量超参调优(不做 RefCOCO test 微调),整体仍算作“零样本”,因为你只在 Val 上用数百张图片做 β\betaβ 搜索,不会泄露 Test Split 信息。
-
按照 GkG_kGk 排序即可输出 Top-1 框;如果 ∃\exists∃ 多个三元组(长句里有两个或更多关系描述),则对每个三元组分别输出满足关系的候选对,最后综合合并结果。
-
零样本/弱监督条件下的可行性
- 场景图模型完全“离线预训练”
只要你选用一个已经在 Visual Genome/COCO VRD/Visual Relationship Detection(VRD)之类的大数据集上预训练好的 SGG 模型,就能在绝对不碰 RefCOCO/RefCOCO+g 定位标注的前提下,直接在测试时调用它提取关系,保证“零样本”。 - 文本解析与关系匹配不动训练
文本解析(句法依存、SRL、HOI 关系近义匹配)都只用“通用 NLP 预训练模型”(如 SpaCy+BERT)输出,不触碰 RefCOCO 标注。 - 打分超参只在 Val 上调优
把 (β1,β2,β3,β4)(\beta_1,\beta_2,\beta_3,\beta_4)(β1,β2,β3,β4) 的组合限定在超小网格(比如 {0.5, 1.0, 2.0}\{0.5,\,1.0,\,2.0\}{0.5,1.0,2.0}),只在 RefCOCO val split(不到 5k 样本)上做验证,绝不背离“零样本”的标准。Test 时再直接复用最佳参数即可。
只要严格做到:
- SGG 模型从不在 RefCOCO train split 上微调;
- 文本→三元组匹配逻辑不需要 RefCOCO 标注,那就在 Test 时可以算作“完全零样本”流程。
潜在收益
-
多关系场景显著提升
- 如表达式中包含“左边的人在给右边的孩子打伞”“拿着红球的人正坐在沙发边上”等复杂交互关系时,单纯的热图往往会在抽象关键词(“人”“球”“沙发”)上分散,而难以直接定位“哪个人”“哪个球”。加入 ρk\rho_kρk 后,可以让模型更聚焦到“正确的那对对象关系”。
- 尤其在 RefCOCOg 这种句子较长、描述细节多的任务上,关系匹配能在多次交叠的热图响应中淘汰掉大量错误候选框,将真正满足“holding”或“next_to”关系的框对排在最前面。
-
遮挡场景补全
- 当数据中“ball”被部分遮挡时,OVD 可能没能给出高置信度的“ball”盒子,但 SGG 模型若捕捉到“person–holding–object”这样的结构,就可能把“object”节点预测出来并标记为“ball”——即使遮挡也能推断它在桌子边或人手里,然后用 ρk\rho_kρk 补偿让这个候选框在综合得分中击败那些只是“热度稍弱的裸露目标”。
-
仅需少量额外计算
- SGG 模型和 NLP 解析的时间开销相比“每条都 2 次反向的 GradCAM”要可控得多,而且这些流程可以并行在 GPU 上跑。通常一次 SGG 推理≈50–80 ms、一次 GradCAM≈80 ms,关系匹配只需在少量候选框间做字符串/嵌入相似度比较即可。
- 超参 βi\beta_iβi 调整只在 Val 阶段做一次,测试时仅做一次查表决策,前向并不增加太多延迟。
需要注意的
-
场景图预测精度受限
- 目前公开的 SGG 模型在 COCO/Visual Genome 上对“常见关系”能达到 35%–45% mAP,但对“长尾关系”“细粒度动作”表现较弱。换句话说,你可能会在“桌子上拿着笔的人”这种场景里,SGG 预测出 “person–holding–something” 但没给出 “something” = “pen”,或者状态判断不准确。
- 如果 ρk\rho_kρk 依据的 SGG 关系本身不可靠,就会把一些误判推分,反而影响整体定位精度。因此要选择或微调一个对常见“人—物—物”交互较为鲁棒的 SGG 模型,甚至可以先在 VRD 数据集上做一次简单微调(只用 VRD,不碰 RefCOCO),以提升 SGG 对“人/动物/常见用品”关系的检测率。这样在下游真正零样本测试时,SGG 自身的泛化才更好。
-
文本关系解析歧义
- 有时候一句话里面的关系很隐晦:例如“the dog under the table next to the boy”里既有“dog under table”也有“table next_to boy”,NLP 三元组抽取可能把“under”当成“next_to”的同级关系,或者提取顺序不对,导致后续 SGG 匹配出现混淆。
- 需要做一些启发式或结构化约束,明确指定“邻近”“在下面”“持有”等关系的优先级,或者直接用 CLIP‐based 相似度对表意关系做二次筛选。
-
系统整体复杂度与失效情况下的 fallback
- 如果 SGG 模型在某张图里完全预测不到任何文本中提到的关系,那 ρk\rho_kρk 就都是 0,此时候选框全靠 sks_ksk 和 rkr_krk 打分。必须做一个“当关系一致度 ρk\rho_kρk 全部为 0 时,退化到原始加权公式”的保护逻辑。
- 整个 pipeline 增加了 SGG+文本解析模块,部署复杂度略增,但由于所有模型都可并行化,实际推理延迟在 100–150 ms 范围内仍算可接受。