SAQN: Semantic-based Adaptive Query Network for 3D Referring Expression Segmentation¶
会议: CVPR 2026
论文: CVF Open Access
代码: 无
领域: 3D视觉 / 多模态分割
关键词: 3D指代分割, 语义级查询, 自适应查询, 点云分割, 视觉语言
一句话总结¶
SAQN 把 3D 指代分割里"按点生成查询"的做法换成"每个语义类一个可学习查询",用极少的查询(21 类 + 10 个自适应查询,共 31 个)取代过去上百个查询,并用 Adaptive Query Fusion 模块化解"一个类查询要代表场景里所有同类物体"带来的歧义,在 ScanRefer 与 Multi3DRefer 上同时刷到 3D-RES / 3D-GRES 的 SOTA。
研究背景与动机¶
领域现状:3D Referring Expression Segmentation(3D-RES)的目标是:给定一段自然语言描述和一个点云场景,把描述指代的目标物体从点云中分割出来。早期是两阶段(先生成 proposal 再与文本匹配),效率低且受 proposal 质量限制;近期主流转向单阶段 query-based 方法。其中 MDIN、IPDN 这类 instance-based(基于实例/点)查询框架取得了明显增益——它直接从 3D 点生成查询,让查询和 superpoint 一一对应,从而绕开了 2D 里那套昂贵又不稳定的匈牙利匹配(Hungarian matching)。
现有痛点:instance-based 查询有两个绕不开的毛病。其一是查询数量爆炸:点云里点非常多,直接由点派生的查询也极多(MDIN 里多达 128 个),为了压数量只能再设计采样模块。其二是采样随机性:这些采样算法是非确定性的,必须在计算开销和信息损失之间权衡,结果是既保留了大量查询,又因为随机采样可能根本没采到目标所在的点——论文 Figure 1 里就给了反例:保留了 128 个查询却仍漏掉了上方那把椅子。
核心矛盾:把查询和"原始的点"硬绑在一起,就注定要面对"点很多 → 查询很多 → 必须采样 → 采样可能漏目标"这条死链。
本文目标:在保留"不需要匈牙利匹配"这个好处的前提下,既大幅减少查询数量,又彻底消除"采样漏目标"的风险。
切入角度:作者注意到一个关键事实——点云里每个点都自带语义标签。既然如此,与其给每一把椅子(每个实例)一个查询,不如给"椅子"这个语义类一个查询。查询数量从"几百"直接降到"语义类数量"(ScanRefer 上只有 21 类);而且因为每个点都能可靠地归到对应的类查询,不存在"采样没采到目标类"的问题。
核心 idea:把查询从实例级(per-point)上移到语义类级(per-class)——每个语义类一个可学习查询;再用少量"自适应查询"补回类内多目标的区分能力。
方法详解¶
整体框架¶
SAQN 输入是点云(坐标 \(F_P\in\mathbb{R}^{N_p\times3}\) + RGB \(F_C\))和一段文本描述,输出是指代目标的逐点二值 mask。整条管线分四步:先用 Sparse 3D U-Net + 多视角 CLIP 特征 + RoBERTa 抽取视觉/文本特征;再用 Semantic-based Query Generation 生成"每类一个 + 少量自适应"的固定长度查询,并用文本调制查询优先级;查询经过 6 层 Multi-Query Interaction 解码器反复与视觉、文本特征以及彼此交互;最后由 Adaptive Query Fusion 模块把自适应查询的 mask 按空间和语义注意力融回语义类查询,得到精细 mask。整套设计的核心是把"查询锚定到语义类而非原始点",从而既保留无需匈牙利匹配的便利,又摆脱了实例级查询的数量与采样问题。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["输入<br/>点云 + 文本描述"] --> B["特征提取<br/>Sparse 3D U-Net + CLIP + RoBERTa"]
B --> C["Semantic-based Query Generation<br/>每类一个查询 + 自适应查询,文本调制"]
C --> D["Multi-Query Interaction<br/>视觉/自/文本注意力 × 6 层"]
D --> E["Adaptive Query Fusion<br/>空间+语义注意力融回类查询"]
E --> F["输出<br/>逐点二值 mask"]
关键设计¶
1. Semantic-based Query Generation:把查询锚定到语义类,告别按点采样
这一步直接针对"查询太多 + 采样漏目标"的死链。作者为 \(k_1\) 个语义类各设一个可学习位置嵌入 \(P_1\in\mathbb{R}^{k_1\times C}\)(ScanRefer 上 \(k_1=21\),其中含一个 "others" 类兜底训练时没见过的类别),再为自适应查询设 \(k_2\) 个位置嵌入 \(P_2\in\mathbb{R}^{k_2\times C}\),拼成 \(P=\text{Concat}(P_1,P_2)\)。问题是 \(P\) 是 text-agnostic 的,无法根据这句话调整各类的优先级,于是用文本特征 \(T\) 调制:先算 \(A^r=\text{Softmax}(PW_{lp}(TW_{lt})^T)\),再得到最终语义查询 \(Q=A^rT+P\)。
这样查询长度固定、只与类别数挂钩,与文本复杂度和点数都无关,给解码器一个结构一致、稳定的输入。因为每个点都能可靠归到所属类查询,不再有"采样没采到目标点"的风险;又因为查询天然按类对齐(implicit class alignment),仍然不需要匈牙利匹配。代价是数量从上百降到几十——这是 SAQN 整篇文章的地基。
2. Multi-Query Interaction:让类查询和自适应查询在解码器里反复对齐视觉与文本
光有初始查询不够,要让它们吸收场景视觉信息、语言信息,并让"类查询"和"自适应查询"互相通气。每层解码器(共 6 层)依次做三种注意力:先用视觉注意力把查询对齐到 superpoint 视觉特征 \(V\),\(\hat Q^i=A^i_v V\),其中 \(A^i_v=\text{Softmax}(Q^iW^i_{vq}(VW^i_{lv})^T)\);再做查询间自注意力,让语义查询 \(\hat Q^i_s\) 与自适应查询 \(\hat Q^i_a\) 建立联系,\(\hat Q^i_q=A^i_q\hat Q^i\);最后用文本注意力把语言信息融进来,\(\hat Q^i_t=A^i_tT\)。
关键在于语义查询和自适应查询走两条独立的 MLP 前向更新:\(Q^{i+1}_s=\text{MLP}^i_s(\hat Q^i_s+\hat Q^i_{t,s}+\hat Q^i_{q,s})\),\(Q^{i+1}_a=\text{MLP}^i_a(\hat Q^i_a+\hat Q^i_{t,a}+\hat Q^i_{q,s})\),再拼回 \(Q^{i+1}\)。两类查询职责不同(一个管"类",一个管"类内实例差异"),分开更新避免互相干扰。每层用 \(M^i=Q^i(VW_m)^T\) 预测 mask;只对语义查询用 \(\text{Prob}^i=\sigma(Q^i_sW_p)\) 预测"该类是否出现在目标里",自适应查询不预测概率,只负责贴 mask、并跟随它最相关的类别。
3. Adaptive Query Fusion:用自适应查询化解"一个类查询代表所有同类物体"的歧义
语义级查询省了数量,却带来新麻烦——cross-object ambiguity:一个 "chair" 查询要代表场景里所有椅子,但它们形状、大小、位置各异,把所有椅子的特征压进一个向量会让特征糊掉,难以精确分割单个目标。AQF 的思路是:让自适应查询(不绑定固定类、on-the-fly 计算)去捕捉类内的细粒度差异,再有控制地融回类查询。
具体地,给定自适应查询预测的 mask \(M^i_a\in\mathbb{R}^{k_2\times N_s}\),先算空间注意力 \(A^i_{spatial}=\text{Softmax}(M^i_a)\)(把每个自适应查询精确指派到具体空间区域),再算语义注意力 \(A^i_{semantic}=(\text{Softmax}(Q^i_aW_q))^T\in\mathbb{R}^{k_1\times k_2}\)(判断每个自适应查询归属哪个语义类)。最后融合:\(\hat M^i_s=M^i_s+A^i_{semantic}(M^i_a\odot A^i_{spatial})\),其中 \(\odot\) 是逐元素积,\(\hat M^i_s\) 是最终 mask。空间注意力管"在哪"、语义注意力管"属于哪类",两者结合让自适应查询同时考虑空间和语义地融进类查询,从而把类内不同实例/部件区分开,给类查询"减负"。
⚠️ 框架图与三个关键设计一一对应:特征提取与输入/输出是脚手架节点,未单列设计;自适应查询的 Adaptive Queries Intersection Loss 属于训练约束,归入下面"损失函数"小节。
损失函数 / 训练策略¶
总损失由三项组成:
- 概率损失 \(\mathcal{L}_p=\text{BCE}(P,L^{tgt})\),其中 \(L^{tgt}\in\{0,1\}^{k_1}\) 标注哪些语义类出现在目标中,监督类查询的"是否命中"。
- mask 损失 \(\mathcal{L}_m=\text{BCE}(\hat M^+,M^{tgt})+\text{DICE}(\hat M^+,M^{tgt})\),\(\hat M^+\) 是与目标同语义类的查询 mask。对 no-target 样本,作者把 \(\hat M^+\) 取概率最高语义类的 mask、\(M^{tgt}\) 取零 mask,以增强模型对"负向文本描述"的判别力。
- 自适应查询交并损失(AQIL) \(\mathcal{L}_a=\frac{1}{k_2(k_2-1)}\sum_{i}\sum_{j\neq i}|M_{a,i}\cap M_{a,j}|\),惩罚不同自适应查询 mask 的重叠,逼它们各管一块、关注不同区域,提高查询利用率、进一步降低类内歧义。
最终 \(\mathcal{L}=\mathcal{L}_m+\lambda_p\mathcal{L}_p+\lambda_a\mathcal{L}_a\),\(\lambda_p=0.1\)、\(\lambda_a=1.0\)。训练 70 epoch,batch 16,PolyRL 学习率从 0.0001 衰减(power 4.0),解码器 6 层,\(k_1=21\)、\(k_2=10\),单对文本+点云推理约 30.7 ms(RTX 4090)。推理时 3D-RES 取概率最高查询并以 0.5 阈值二值化;3D-GRES 合并所有概率 >0.5 的查询 mask,若点数 <50 或无查询概率超 0.5 则判为 no-target。
实验关键数据¶
主实验¶
3D-GRES(Multi3DRefer):mIoU 与高精度指标 [email protected] 全面领先,尤其在 zero-target(ZT)抗干扰场景优势明显。
| 方法 | [email protected] All | [email protected] All | mIoU |
|---|---|---|---|
| MDIN | 67.0 | 44.7 | 47.5 |
| IPDN | 71.5 | 50.0 | 51.7 |
| SAQN | 70.5 | 53.8 | 53.1 |
[email protected] 整体比最强的 IPDN 高 3.8;ZT 场景下含干扰物 +7.9%、无干扰物 +6.8%。[email protected] 略低于 IPDN——作者解释为 recall/precision 权衡:0.25 是宽松指标偏好高召回,而 SAQN 偏向高精度(体现在 [email protected] 领先),mIoU 53.1 仍确认其整体 mask 质量最优。
3D-RES(ScanRefer):overall mIoU 最高,[email protected] 大幅领先。
| 方法 | Overall 0.25 | Overall 0.5 | Overall mIoU |
|---|---|---|---|
| MDIN | 58.0 | 53.1 | 48.3 |
| IPDN | 60.6 | 54.9 | 50.2 |
| SAQN | 68.3 | 53.4 | 51.1 |
在无干扰物的 "Unique" 设定与 [email protected] 上优势来自语义级查询——它擅长准确识别物体的大类别与空间范围。[email protected] 略低于 instance-based 方法,作者归因于后者查询更"丰富"、能贴出几何上更紧的 mask;而 SAQN 以最高 mIoU 体现整体 mask 质量更优。
消融实验¶
组件消融(Multi3DRefer,[email protected] 含干扰物 / mIoU):
| IQ | SQ | AQF | AQIL | ZT | ST | MT | mIoU |
|---|---|---|---|---|---|---|---|
| ✓ | 37.1 | 32.5 | 51.2 | 50.3 | |||
| ✓ | 54.9 | 37.8 | 49.6 | 52.1 | |||
| ✓ | ✓ | 55.2 | 38.2 | 51.1 | 52.5 | ||
| ✓ | ✓ | ✓ | 36.9 | 33.6 | 51.9 | 50.9 | |
| ✓ | ✓ | 33.6 | 34.2 | 49.9 | 50.4 | ||
| ✓ | ✓ | ✓ | 55.8 | 39.8 | 52.3 | 53.1 |
超参消融(\(k_2\) 与 \(\lambda_a\)):
| 配置 | mIoU | 说明 |
|---|---|---|
| \(k_2=5\) | 52.7 | ZT/ST 略好但 MT 与整体 mIoU 偏弱 |
| \(k_2=10\) | 53.1 | MT 与 mIoU 最佳,最优平衡 |
| \(k_2=15\) | 51.9 | 查询过多引入噪声,全指标下降 |
| \(\lambda_a=0.1\) | 52.3 | 损失约束太弱 |
| \(\lambda_a=1\) | 53.1 | 最优 |
| \(\lambda_a=10\) | 49.9 | 过度强调该项,优化方向偏移、显著掉点 |
关键发现¶
- SQ(语义级查询框架)是地基:单加 SQ 就把 ZT [email protected] 从 37.1 拉到 54.9(+17.8),但 MT 反而从 51.2 降到 49.6——正是语义级查询引入的 cross-object ambiguity,验证了 AQF 存在的必要。
- AQF 专补多目标:在 SQ 上加 AQF 把 MT 从 49.6 回升到 51.1,AQIL 再补到 52.3,三者互补、缺 SQ 时(第 4、5 行)AQF/AQIL 几乎无效,说明语义框架是其他模块发挥作用的前提。
- 查询数量大降:21+10=31 个查询 vs MDIN 的 128,且无需任何点采样机制,推理 30.7 ms。
- 自适应查询需带语义先验:把 31 个自适应查询改成只分正/负、不按类别(消融第 5 行)后各指标下降,说明语义先验对查询很重要。
亮点与洞察¶
- 查询粒度的"降维":把"per-point/per-instance 查询"上移到"per-class 查询",一举把"数量多 + 采样漏目标"两个问题连根拔掉——这是很干净的问题重定义,思路可迁移到其他"按点/按 proposal 生成查询又被数量拖累"的 3D 任务。
- 用辅助查询补回信息、再用注意力可控融回:固定类查询负责"类",少量自适应查询负责"类内差异",并用空间×语义双注意力融合——这种"主查询稳、辅查询活"的分工,是兼顾稳定性与表达力的实用范式。
- AQIL 是个轻量但有效的 trick:仅用一个惩罚 mask 重叠的损失,就逼自适应查询各司其职、提升利用率,几乎零额外结构成本。
局限与展望¶
- 作者承认:当前用 "others" 类兜底开放词表目标,在类别数量很大的实际场景里能力有限。
- ⚠️ [email protected](3D-RES ScanRefer)上 SAQN 仍略逊于 instance-based 的 IPDN,说明语义级查询在"贴出几何上极紧的 mask"这件事上不占优——它强在召回与整体 mIoU,对边界极致精度敏感的应用要权衡。
- \(k_2\) 是敏感超参(5/10/15 表现差异明显),跨数据集是否仍 10 最优、是否需要自适应确定查询数,论文未深入。
相关工作与启发¶
- vs MDIN / IPDN(instance-based 查询):它们从 3D 点生成查询、靠 superpoint 对应避开匈牙利匹配,但查询多(达 128)且依赖随机采样,可能漏目标;SAQN 改用语义类查询,数量降到 31、消除采样漏检风险,3D-GRES mIoU 反超(53.1 vs 51.7),代价是 3D-RES 的 [email protected] 略低。
- vs RefMask3D(预定义可学习查询):RefMask3D 用 2D 风格的预定义查询,却又退回到昂贵不稳的匈牙利匹配;SAQN 的语义类查询天然按类对齐,无需匈牙利匹配。
- vs 3D-STMN(文本作查询):3D-STMN 直接拿文本特征当查询,查询长度可变、受语言歧义影响、训练难度大;SAQN 用固定长度的类级查询给解码器稳定输入。
评分¶
- 新颖性: ⭐⭐⭐⭐ 把 3D-RES 查询从实例级上移到语义级是个干净且有效的问题重定义,AQF/AQIL 配套自洽
- 实验充分度: ⭐⭐⭐⭐ ScanRefer + Multi3DRefer 双任务 SOTA,组件/超参消融完整,但仅两个数据集、缺更多场景泛化
- 写作质量: ⭐⭐⭐⭐ 动机—方法—实验逻辑清晰,公式与图示到位
- 价值: ⭐⭐⭐⭐ 查询数大降 + 消除采样漏检,对 3D 指代分割的查询设计有实用借鉴