SAMosaic3D:以可学习马赛克组装实现实时在线3D实例分割 | CVPR 2026 论文精读

SAMosaic3D:以可学习马赛克组装实现实时在线3D实例分割 | CVPR 2026 论文精读

论文信息

标题:SAMosaic3D: Modular Scene Assembly for Real-Time 3D Segment Anything

会议:CVPR 2026

单位:中国人民大学信息学院、中国水运科学研究院

代码:https://penk1ng.github.io/SAMosaic3D/(代码待发布)

论文:https://openaccess.thecvf.com/content/CVPR2026/papers/Wang_SAMosaic3D_Modular_Scene_Assembly_for_Real-Time_3D_Segment_Anything_CVPR_2026_paper.pdf


一、背景:3D在线分割的两大顽疾

如果你戴过AR眼镜逛房间,大概率遇到过两种尴尬:一是明明是一把椅子,系统愣是把靠背、坐垫、椅腿识别成三个独立物体;二是你转身走两步再转回来,刚才那把椅子直接"换了个ID",系统当新物体重新认了一遍。

这就是在线3D实例分割领域的两大核心难题:

  1. 空间碎片化:把SAM这类2D大模型的掩码直接升维到3D,单个物体会被拆成多个不相连的碎片,遮挡时尤其严重;
  2. 身份漂移:用传统3D IoU做时序跟踪,新观测的物体几何信息稀疏、重叠度低,匹配极不稳定,转个视角就认不出同一个物体。

以往的解法基本都是"事后打补丁":先拿到SAM的2D掩码,升维后用几何聚类、手工规则硬凑合并,再用IoU做帧间关联。但这种修补式的方法天生脆弱,一遇到遮挡、拓扑变化就直接崩。

图1 三种3D实例分割范式对比(出自原文Figure 1)

  • (a) 离线范式:需要先重建完整场景再做分割,相当于把整个房间扫描完再慢慢认东西,完全不适合实时场景;
  • (b) 传统在线范式:把SAM的掩码直接当成最终实例单元,靠手工规则合并,容易出现碎片和错误合并;
  • © SAMosaic3D范式:把SAM的细粒度掩码当成"马赛克瓦片",让模型端到端学习如何组装成完整、时序一致的3D实例。

通俗备注:之前的方法像拿到一堆拼图碎片,只靠形状硬凑,经常拼错;本文是直接教AI"拼图的逻辑",让它自己学着把碎片拼成完整物体,还能记住每一块拼好的图对应哪个物体。


二、整体架构概览

SAMosaic3D的核心设计是双层查询推理范式:把空间分组和时序合并解耦,但又保持端到端联合可训练。整个流程每帧输入带位姿的RGB-D图像,输出更新后的全局场景记忆。

图2 SAMosaic3D整体架构(出自原文Figure 2)

整个框架分为两大核心模块:

  1. 碎片到实例自适应组装(Fragment-to-Instance Adaptive Assembly):单帧内把SAM输出的碎片掩码,通过可微分聚类和软门控注意力,组装成完整的实例表示;
  2. 实例到场景在线合并(Instance-to-Scene Online Merging):把当前帧的实例和历史场景记忆做关联,通过两级记忆+级联语义-几何匹配,保持物体身份的时序一致性。

通俗备注:第一步是"单帧拼拼图",把碎块拼成完整的物体;第二步是"跨帧认物体",记住之前见过的东西,新看到的能对上号,不会重复计数。


三、模块一:碎片到实例的自适应组装

输入单帧RGB-D图像后,先通过3D稀疏U-Net得到点云特征,再把SAM生成的2D掩码投影到3D,池化得到每个碎片的特征。接下来的核心任务,就是把这些过分割的碎片,自适应拼成完整实例。

3.1 场景自适应碎片分组

传统硬聚类用argmax做分配,梯度断了,没法端到端训练。本文设计了可微分的软分组机制,能根据场景动态预测实例数量,同时保持梯度可传。

核心公式1:软分配矩阵

Aik=exp⁡(−∥fi−ck∥22/τ)∑j=1N^exp⁡(−∥fi−cj∥22/τ)A_{ik}=\frac{\exp (-\left\|f_{i}-c_{k}\right\|{2}^{2} / \tau)}{\sum{j=1}^{\hat{N}} \exp (-\left\|f_{i}-c_{j}\right\|_{2}^{2} / \tau)}Aik=∑j=1N^exp(−∥fi−cj∥22/τ)exp(−∥fi−ck∥22/τ)

符号全解释

  • AikA_{ik}Aik:第iii个碎片属于第kkk个实例中心的软分配概率,取值范围0~1;
  • fif_ifi:第iii个SAM碎片的特征向量;
  • ckc_kck:第kkk个可学习的实例中心特征;
  • τ\tauτ:温度系数,控制分配的"软硬程度",值越小分配越接近硬聚类;
  • N^\hat{N}N^:当前帧预测的实例数量;
  • ∥⋅∥2\|\cdot\|_2∥⋅∥2:L2范数,即两个特征向量的欧氏距离。
核心公式2:共实例亲和矩阵

Wij=∑k=1N^AikAjkW_{ij}=\sum_{k=1}^{\hat{N}} A_{ik} A_{jk}Wij=k=1∑N^AikAjk

符号全解释

  • WijW_{ij}Wij:第iii个和第jjj个碎片属于同一个实例的概率,取值范围0~1;
  • Aik,AjkA_{ik}, A_{jk}Aik,Ajk:两个碎片对应同一个实例中心的分配概率。

通俗备注:先给每个碎片算"我更像哪个小组"的概率,不是非黑即白归组,而是给个软概率;再通过软分配算出"这俩碎片是不是一家的"置信度,给后面的注意力模块当"门禁参考"。

整个分组流程是:

  1. 把所有碎片特征池化成全局场景描述符;
  2. 用M(\mathcal{L})P预测当前场景的实例数量,同时生成一组候选实例中心;
  3. 计算每个碎片到每个中心的距离,通过softmax得到软分配矩阵;
  4. 由分配矩阵推导共实例亲和矩阵。

3.2 软门控注意力

普通自注意力会让所有碎片互相传递信息,很容易把不同物体的特征混在一起。本文基于前面得到的亲和矩阵,给注意力加了一道"软门":同个实例的碎片顺畅交流,不同实例的抑制干扰。

核心公式3:软门控自注意力

Qfragl=softmax((QcalWlQ)(QcalWlK)⊤dk+βlog⁡(W+ϵ))Qcal,\begin{aligned} Q_{frag }^{l}=softmax( & \frac{\left(Q_{ca}^{l} W_{l}^{Q}\right)\left(Q_{ca}^{l} W_{l}^{K}\right)^{\top}}{\sqrt{d_{k}}} \\ & +\beta \log (W+\epsilon)) Q_{ca}^{l}, \end{aligned}Qfragl=softmax(dk (QcalWlQ)(QcalWlK)⊤+βlog(W+ϵ))Qcal,

符号全解释

  • QfraglQ_{frag }^{l}Qfragl:第lll层解码器输出的碎片特征;
  • QcalQ_{ca}^{l}Qcal:经过点-碎片交叉注意力后的碎片特征,用来把特征锚定在几何信息上;
  • WlQ,WlKW_{l}^{Q}, W_{l}^{K}WlQ,WlK:第lll层的查询、键投影矩阵;
  • dkd_kdk:键向量的维度,用于缩放点积,防止数值过大导致softmax饱和;
  • β\betaβ:门控强度系数,控制亲和矩阵对注意力的影响程度;
  • WWW:共实例亲和矩阵;
  • ϵ\epsilonϵ:极小常量(原文取10−810^{-8}10−8),防止对数运算中出现0;
  • softmaxsoftmaxsoftmax:归一化函数,将注意力权重映射到0~1区间。

通俗备注:这个设计就像办公室的门禁系统:同部门的人(同个实例的碎片)可以自由进出交流;别的部门的人(不同实例)门禁权限低,交流通道收窄。这样既能让同个物体的碎片互补信息,又不会把别的物体的特征混进来。

3.3 逐层实例预测

为了提供更强的监督信号,模型在每一层解码器都做一次实例预测:

Qinstancel=A⊤QfraglQ_{instance }^{l}=A^{\top} Q_{frag }^{l}Qinstancel=A⊤Qfragl

符号全解释

  • QinstancelQ_{instance }^{l}Qinstancel:第lll层的实例特征矩阵;
  • AAA:软分配矩阵,转置后做加权池化;
  • QfraglQ_{frag }^{l}Qfragl:第lll层的碎片特征。

简单说就是用软分配的概率当权重,把碎片特征加权求和,得到每个实例的聚合特征。浅层负责拼出粗略的物体边界,深层逐步细化分割质量。

有趣案例:SAM把一把办公椅拆成了坐垫、靠背、左前腿三个碎片。传统几何聚类因为三者空间不相连,会当成三个独立物体;而SAMosaic3D的分组模块会算出三者都属于同一个椅子实例中心,软门控注意力让三个碎片互相交换特征,补全彼此的几何信息,最终输出一个完整的椅子实例。


四、模块二:实例到场景的在线合并

拼好单帧的实例后,下一步是把它们和历史场景记忆关联起来,保证同一个物体不会因为视角变化就换ID。这里最大的矛盾是:新观测的实例几何稀疏、重叠低,IoU匹配不靠谱;而积累了多帧的实例几何完整,适合做几何验证。

4.1 观测感知的两级场景记忆

为了兼顾效率和精度,模型把场景记忆分成两层:

  • 短期记忆:固定容量(默认50个),用FIFO队列维护,存最近观测到的实例;满了就把最老的挪去长期记忆;
  • 长期记忆:动态增长,存所有历史出现过的实例;如果长期记忆里的物体重新被观测到,就晋升回短期记忆。

通俗备注:短期记忆就像你脑子里刚见过的东西,细节清晰,用来快速匹配;长期记忆是很久以前见过的东西,存个大概轮廓,等再见到的时候核对一下。容量固定的短期记忆,保证了计算量不会随着场景变大无限膨胀。

4.2 级联语义-几何匹配

针对"新观测稀疏、老实例完整"的不对称性,模型设计了两阶段级联匹配:

图3 实例到场景在线合并流程(出自原文Figure 4)

阶段1:语义匹配(对接短期记忆)

用带空间权重的交叉注意力,基于特征相似度计算合并概率,同时用3D边界框距离和语义类别做引导。这个阶段不依赖高IoU,适合几何稀疏的新观测。

得到软合并矩阵后,推理时用贪心分配:得分超过阈值就认为是同一个物体。

阶段2:几何验证(对接长期记忆)

第一阶段没匹配上的实例,再去长期记忆里做3D IoU匹配。此时的实例特征已经经过第一阶段的语义信息增强,匹配更鲁棒。匹配成功的长期实例会晋升回短期记忆。

两阶段都没匹配上的实例,判定为新出现的物体,加入短期记忆。

通俗备注:第一阶段靠"脸熟不认轮廓",哪怕只看到物体一角,也能靠特征认出是之前见过的;第二阶段靠"轮廓核对",对很久没见的物体,等几何信息攒够了再确认身份,避免认错。

4.3 记忆更新

匹配成功的实例对,会做融合更新:

  • 特征和边界框用指数移动平均(EMA)平滑更新;
  • 掩码取空间并集,逐步积累完整的几何覆盖;
  • 语义类别和置信度取最大值,保留最高置信的预测。

没匹配上的记忆实例会原样保留,等下次再出现时重新匹配。


五、训练策略与损失设计

整个框架采用渐进式训练:先单独训碎片到实例模块,再开启时序合并模块联合训练。总损失由三部分组成。

5.1 碎片到实例监督

基础实例查询损失

Lquery(j,σ(j))=λmaskLmask+λboxLcls+Lobj \mathcal{L}{query }(j, \sigma(j))=\lambda{mask } \mathcal{L}{mask }+\lambda{box } \mathcal{L}{cls }+\mathcal{L}{obj } Lquery(j,σ(j))=λmaskLmask+λboxLcls+Lobj

符号全解释

  • Lquery\mathcal{L}_{query}Lquery:单个实例的匹配损失;
  • σ(j)\sigma(j)σ(j):二分图匹配得到的第jjj个预测对应的真值索引;
  • λmask,λbox\lambda_{mask}, \lambda_{box}λmask,λbox:掩码损失、分类损失的权重系数;
  • Lmask\mathcal{L}_{mask}Lmask:3D点掩码损失;
  • Lcls\mathcal{L}_{cls}Lcls:语义分类损失;
  • Lobj\mathcal{L}_{obj}Lobj:目标置信度损失。
分配加权实例监督

普通损失对所有实例一视同仁,但有的分组很确定,有的很模糊。本文给每个实例的损失加了权重:

Linstl,t=∑j=1Nwj⋅Lquery(j,σ(j)),where wj=max⁡iAij \mathcal{L}{inst }^{l, t}=\sum{j=1}^{N} w_{j} \cdot \mathcal{L}{query }(j, \sigma(j)), \quad \text{where}\ w{j}=\max {i} A{i j} Linstl,t=j=1∑Nwj⋅Lquery(j,σ(j)),where wj=imaxAij

符号全解释

  • Linstl,t\mathcal{L}_{inst }^{l, t}Linstl,t:第ttt帧第lll层的总实例损失;
  • wjw_jwj:第jjj个实例的损失权重,等于该实例所有碎片分配概率的最大值;
  • AijA_{ij}Aij:第iii个碎片对第jjj个实例的软分配概率。

通俗备注:对"拼得很确定"的实例,损失权重大,让模型重点学好靠谱的分组;对"模棱两可"的实例,权重小,避免带偏训练。

5.2 实例到场景监督

为了防止注意力学到"靠位置近就瞎匹配"的假规律,加入了显式的合并监督:

Lmerget=BCE(MLshort,Gt) \mathcal{L}{merge }^{t}=\text{BCE}\left(M{L}^{short }, G^{t}\right) Lmerget=BCE(MLshort,Gt)

符号全解释

  • Lmerget\mathcal{L}_{merge }^{t}Lmerget:第ttt帧的合并损失;
  • BCE\text{BCE}BCE:二元交叉熵损失;
  • MLshortM_{L}^{short}MLshort:解码器最后一层输出的软合并矩阵;
  • GtG^{t}Gt:真值对应关系的二值矩阵,同一ID对应位置为1,否则为0。

5.3 总损失

L=1T∑t=1T(λcountLcountt+∑l=1LLinstl,t+λmergeLmerget) \mathcal{L}=\frac{1}{T} \sum_{t=1}^{T}\left(\lambda_{count } \mathcal{L}{count }^{t}+\sum{l=1}^{L} \mathcal{L}{inst }^{l, t}+\lambda{merge } \mathcal{L}_{merge }^{t}\right) L=T1t=1∑T(λcountLcountt+l=1∑LLinstl,t+λmergeLmerget)

符号全解释

  • L\mathcal{L}L:总损失;
  • TTT:训练序列的帧数;
  • LLL:解码器层数;
  • λcount,λmerge\lambda_{count}, \lambda_{merge}λcount,λmerge:数量预测损失、合并损失的权重;
  • Lcountt\mathcal{L}_{count }^{t}Lcountt:实例数量预测的分类损失;
  • Linstl,t\mathcal{L}_{inst }^{l, t}Linstl,t:逐层实例分割损失;
  • Lmerget\mathcal{L}_{merge }^{t}Lmerget:时序合并监督损失。

六、实验结果与性能分析

6.1 数据集与评价指标

实验在4个主流室内3D数据集上验证:

  • ScanNet:1513个室内场景,20个语义类别;
  • ScanNet200:ScanNet的细粒度版本,200+物体类别;
  • SceneNN:50个标注室内场景;
  • 3RScan:46个快速相机运动的测试场景,考验运动鲁棒性。

评价指标采用标准AP(平均精度),同时报告AP50AP_{50}AP50(IoU阈值0.5)和AP25AP_{25}AP25(IoU阈值0.25)。

6.2 同数据集性能对比

表1 ScanNet与SceneNN验证集同数据集评测结果(出自原文Table 1)

方法 ScanNet SceneNN
AP AP₅₀ AP₂₅ AP AP₅₀ AP₂₅
离线方法
TD3D 46.2 71.1 81.3 -- -- --
OneFormer3D 59.3 78.8 86.7 -- -- --
在线方法
INS-Conv -- 57.4 -- -- 57.6 --
TD3D-MA 39.0 60.5 71.3 26.0 42.8 59.2
ESAM-E † 41.6 60.1 75.6 27.5 48.7 64.6
ESAM-E+FF †‡ 42.6 61.9 77.1 33.3 53.6 62.5
AutoSeg3D † 43.4 62.5 77.4 33.1 52.6 63.8
SAMosaic3D (本文) 45.3 65.9 78.5 33.2 56.5 69.3
SAMosaic3D † (本文) 46.5 67.7 80.1 35.1 58.2 71.8

注:† 表示使用FastSAM骨干;‡ 表示额外融合FastSAM提取的图像特征到点云。

结果分析

在同数据集训练评测的设置下,SAMosaic3D在在线方法中全面领先。使用与AutoSeg3D相同的SAM骨干时,ScanNet上AP高出1.9,SceneNN上高出0.1;切换到更快的FastSAM后,性能进一步提升。这说明性能增益并非来自更强的2D分割模型,而是源于可学习组装框架本身。

6.3 细粒度类别无关分割与速度

表2 ScanNet200验证集类别无关3D实例分割结果(出自原文Table 2)

方法 VFM骨干 AP AP₅₀ AP₂₅ FPS
离线方法
SAMPro3D SAM 18.0 32.8 56.1 --
SAI3D SemanticSAM 28.2 47.2 67.9 --
在线方法
SAM3D SAM 20.2 35.7 55.5 0.4
ESAM SAM 42.2 63.7 79.6 0.7
ESAM-E FastSAM 43.4 65.4 80.9 10.6
AutoSeg3D SAM 45.5 66.7 81.0 0.7
AutoSeg3D-E FastSAM 46.2 67.9 81.7 10.1
SAMosaic3D (本文) SAM 46.1 68.5 84.2 0.7
SAMosaic3D (本文) FastSAM 48.7 69.3 85.4 11.2

结果分析

在更细粒度的ScanNet200数据集上,SAMosaic3D同样保持SOTA。尤其关键的是,搭配FastSAM时推理速度达到11.2 FPS,真正满足实时交互要求,同时AP达到48.7,比AutoSeg3D-E高出2.5。对机器人、AR等具身智能场景来说,"又快又准"是落地的核心前提。

6.4 零样本跨数据集泛化

表3 从ScanNet200到SceneNN、3RScan的零样本跨数据集泛化结果(出自原文Table 3)

方法 ScanNet200 → SceneNN ScanNet200 → 3RScan
AP AP₅₀ AP₂₅ AP AP₅₀ AP₂₅
离线方法
SAMPro3D 12.6 25.8 53.2 3.9 8.0 21.0
SAI3D 18.6 34.7 65.7 8.1 16.9 37.0
在线方法
SAM3D 15.1 30.0 51.8 6.2 13.0 33.9
ESAM 28.8 52.2 69.3 14.1 31.2 59.6
ESAM-E † 28.6 50.4 71.0 13.9 29.4 58.8
AutoSeg3D 29.7 53.6 71.9 16.0 32.4 60.7
AutoSeg3D-E † 30.2 54.1 72.8 16.8 34.3 61.0
SAMosaic3D (本文) 31.7 56.8 74.2 16.3 34.7 63.1
SAMosaic3D (本文) † 32.4 57.8 74.7 17.0 35.5 63.7

注:† 表示使用FastSAM骨干。

结果分析

零样本泛化是检验模型是否学到真本事的试金石------只在ScanNet200上训练,不做任何微调直接拿到新数据集上跑。结果显示,SAMosaic3D在SceneNN上AP达到31.7,比第二名高出1.5;在相机运动更剧烈的3RScan上,也达到了16.3 AP。这说明模型学到的是"组装碎片、关联时序"的通用能力,而非拟合特定数据集的分布。

6.5 消融实验

整体系统消融

表4 整体系统消融实验(出自原文Table 4)

F2I模块 I2S模块 实例损失 数量损失 合并损失 AP AP₅₀ AP₂₅
40.5 60.2 78.5
44.8 65.3 82.1
48.2 68.9 85.0
49.1 69.8 85.7

结果分析

从基线到完整模型,AP一共提升了8.6。其中碎片到实例模块贡献4.3的涨幅,说明可学习软分组相比硬聚类提升巨大;实例到场景模块贡献3.4,说明两级记忆和级联匹配对时序一致性至关重要;显式合并监督再涨0.9,进一步强化身份保持能力。

碎片到实例模块消融

表5 碎片到实例模块消融实验(出自原文Table 5)

软分配 亲和矩阵 门控注意力 分配加权 AP AP₅₀ AP₂₅
- - - 42.5 62.8 80.1
max 44.6 64.9 81.8
max 46.8 67.5 84.2
uniform 47.3 68.2 84.6
sum 47.6 68.4 84.7
max 49.1 69.8 85.7

结果分析

共实例亲和矩阵是贡献最大的组件,单独带来2.2 AP提升;软分配解决梯度回传问题,涨2.1 AP;软门控注意力和max分配加权进一步带来增益。最终完整模块相比硬聚类基线涨了6.6 AP。

实例到场景模块消融

表6 实例到场景合并模块消融实验(出自原文Table 6)

记忆层级 合并阶段 合并损失 AP AP₅₀ AP₂₅
0+∞(纯长期) S2(仅几何) 43.8 64.1 81.0
50+∞(两级) S1(仅语义) 46.9 67.2 83.7
50+∞(两级) S1+S2(级联) 48.2 68.9 85.0
50+∞(两级) S1+S2(级联) 49.1 69.8 85.7

结果分析

纯几何匹配基线只有43.8 AP,换成两级记忆+语义匹配后直接涨到46.9,说明面对稀疏新观测,语义特征比IoU靠谱得多;级联语义+几何再涨1.3,两者互补;显式合并监督再涨0.9。

短期记忆大小敏感性

表7 短期记忆大小超参数敏感性分析(出自原文Table 7)

短期记忆容量 AP AP₅₀ AP₂₅ 单帧延迟(ms)
20 48.4 69.0 85.1 58
50 49.1 69.8 85.7 69
100 49.0 69.7 85.4 88
无限大 48.0 68.5 84.7 -

结果分析

短期记忆不是越大越好。容量50时达到精度和速度的最佳平衡;容量太小记不住足够多的近期物体,太大则会引入远古噪声,精度反而下降,延迟还会升高。

6.6 运行时间分解

表8 单帧推理时间分解(不含视觉基础模型,出自原文Table 8)

3D-Unet骨干 碎片到实例模块 实例到场景模块 总计
分组 注意力 阶段1 阶段2 更新
41.0 3.0 17.0 5.0 1.0 2.0 69.0

单位:毫秒

结果分析

整个框架不含VFM的单帧延迟仅69ms,其中3D骨干占了大头,核心的组装和合并模块加起来才28ms,效率很高。

6.7 定性可视化

图5 3D实例分割定性对比(出自原文Figure 5)

图中从左到右分别是真值、ESAM方法结果、SAMosaic3D结果。可以明显看出,ESAM存在显著的过分割问题,单个物体被拆成多个碎片;而SAMosaic3D的结果更接近真值,实例边界更完整,碎片数量显著减少,直观验证了组装机制的有效性。


七、核心代码实现

以下是两个核心模块的简化PyTorch实现,还原论文中的核心逻辑。

7.1 场景自适应软分组

python 复制代码
import torch
import torch.nn as nn
import torch.nn.functional as F

class SceneAdaptiveGrouping(nn.Module):
    def __init__(self, feat_dim=128, max_inst=50, temperature=0.1):
        super().__init__()
        self.feat_dim = feat_dim
        self.max_inst = max_inst  # 最大实例数 N_max
        self.tau = temperature    # 温度系数 \(\tau\)
        
        # 实例数量预测头
        self.count_head = nn.Sequential(
            nn.\(\mathcal{L}\)inear(2 * feat_dim, feat_dim),
            nn.Re\(\mathcal{L}\)U(),
            nn.\(\mathcal{L}\)inear(feat_dim, max_inst)
        )
        # 实例中心生成头
        self.center_gen = nn.Sequential(
            nn.\(\mathcal{L}\)inear(2 * feat_dim, feat_dim),
            nn.Re\(\mathcal{L}\)U(),
            nn.\(\mathcal{L}\)inear(feat_dim, max_inst * feat_dim)
        )
    
    def forward(self, frag_feats):
        """
        Args:
            frag_feats: [M, C] M个碎片的特征
        Returns:
            assign_matrix: [M, N_hat] 软分配矩阵 A
            affinity_matrix: [M, M] 共实例亲和矩阵 W
            inst_count: 预测的实例数 N_hat
        """
        M, C = frag_feats.shape
        
        # 1. 生成全局场景描述符(最大池化+平均池化拼接)
        global_max = torch.max(frag_feats, dim=0)[0]
        global_avg = torch.mean(frag_feats, dim=0)
        global_desc = torch.cat([global_max, global_avg], dim=-1)  # [2C]
        
        # 2. 预测当前场景的实例数量
        count_logits = self.count_head(global_desc)  # [N_max]
        inst_count = torch.argmax(count_logits).item() + 1  # 预测的N_hat
        
        # 3. 生成候选中心,取前N_hat个激活
        centers = self.center_gen(global_desc).view(self.max_inst, C)  # [N_max, C]
        active_centers = centers[:inst_count]  # [N_hat, C]
        
        # 4. 计算软分配矩阵 A
        dist = torch.cdist(frag_feats.unsqueeze(0), active_centers.unsqueeze(0)).squeeze(0) ** 2  # [M, N_hat]
        assign_matrix = F.softmax(-dist / self.tau, dim=-1)  # [M, N_hat]
        
        # 5. 计算共实例亲和矩阵 W
        affinity_matrix = assign_matrix @ assign_matrix.T  # [M, M]
        
        return assign_matrix, affinity_matrix, inst_count

7.2 软门控自注意力

python 复制代码
class SoftGatedSelfAttention(nn.Module):
    def __init__(self, feat_dim=128, beta=1.0):
        super().__init__()
        self.beta = beta  # 门控强度 \(\beta\)
        self.q_proj = nn.\(\mathcal{L}\)inear(feat_dim, feat_dim)
        self.k_proj = nn.\(\mathcal{L}\)inear(feat_dim, feat_dim)
        self.v_proj = nn.\(\mathcal{L}\)inear(feat_dim, feat_dim)
        self.scale = feat_dim ** -0.5  # 1/sqrt(d_k)
    
    def forward(self, x, affinity):
        """
        Args:
            x: [M, C] 输入碎片特征
            affinity: [M, M] 共实例亲和矩阵 W
        Returns:
            out: [M, C] 输出特征
        """
        Q = self.q_proj(x)  # [M, C]
        K = self.k_proj(x)
        V = self.v_proj(x)
        
        # 计算原始注意力分数
        attn_scores = Q @ K.T * self.scale  # [M, M]
        
        # 加入亲和矩阵偏置(log空间)
        eps = 1e-8
        attn_scores = attn_scores + self.beta * torch.log(affinity + eps)
        
        # softmax归一化
        attn_weights = F.softmax(attn_scores, dim=-1)
        
        # 加权求和得到输出
        out = attn_weights @ V
        return out

代码备注:第一段实现了"动态算实例数、软分配碎片"的核心逻辑,全程可微分;第二段实现了带门禁的自注意力,同实例碎片多交流,不同实例少干扰。


八、总结与展望

核心贡献

  1. 范式创新:把在线3D实例分割从"事后修补"重构为"可学习组装"问题,端到端可训练;
  2. 碎片组装模块:场景自适应软分组+软门控注意力,有效解决SAM过分割带来的空间碎片化;
  3. 时序合并模块:两级记忆+级联语义-几何匹配,解决稀疏观测下的身份漂移问题;
  4. 性能领先:在多个数据集上取得SOTA,零样本泛化能力强,搭配FastSAM可实现11.2 FPS实时推理。

局限与未来

目前框架主要做类别无关的实例分割,还不支持开放词汇语义查询;未来工作会集成视觉语言模型,扩展到视觉语言导航任务,并将长期记忆机制适配到更大规模的室外场景。

总的来说,SAMosaic3D提供了一种很优雅的思路:不强行修正大模型的输出,而是顺着大模型的输出特点,设计配套的可学习组装机制------这或许是2D基础模型向3D具身感知迁移的一条高效路径。

相关推荐
GlueNa2SiO32 小时前
07-Docker Compose多容器编排
笔记·学习·docker·容器
brave_zhao3 小时前
vetur是什么
学习
lifallen3 小时前
edit-article:AI 味来自跳级
人工智能·学习·ai·ai编程·ai写作
dalong103 小时前
WPF:3D型材模型
3d·wpf
杀生丸学AI4 小时前
【前馈三维重建】AdaptiveSplat:前馈重建的纹理感知可控3DGS分配方法(ECCV 2026)
3d·三维重建·扩散模型·视觉大模型·高斯泼溅·前馈模型·大场景重建
xian_wwq4 小时前
【学习笔记】工具设计,Agent 的手比大脑更容易出问题-8/16
笔记·学习·agent
晴天164 小时前
Agent 全栈学习笔记 1-Day14
数据库·笔记·学习
Hhy_11074 小时前
《C++深度解构01》C++入门基础
c语言·开发语言·c++·学习·visual studio
数智工坊4 小时前
UECP:不确定性增强的协同感知 | 基于物理先验的BEV融合新范式
linux·ubuntu·3d·机器人