论文题目:OpenGaussian: Towards Point-Level 3D Gaussian-based Open Vocabulary Understanding
只是快速梳理一下阅读后脑中的思路。可能会用词不严谨,如果有任何错误,感谢纠正!
a. 3D Consistency-Preserving Instance Feature Learning (跨视角一致性)
目的:在不同视角下保持同一实例的语义特征一致,同时区分不同实例。
方法:选择任意视角,通过alpha-blending,将3d instance feature
f
f
f 渲染到2d feature map
M
M
M(即 3D 高斯场的投影)。然后,
M
M
M 与binary mask
B
B
B 之间做 Intra-mask Smoothing Loss 和 Inter-mask Contrastive Loss。(这里所说的特征都是semantic feature.。因为对于2d feature map,我们希望一个实例内的所有pixel的语义特征都相同;对于3d gaussian,我们希望表示一个实例的所有高斯球的语义特征相同。)
Intra-mask Smoothing Loss:让同一实例内的特征一致,使其特征在不同视角下更稳定。
Inter-mask Contrastive Loss:增加不同实例之间的特征距离,确保不同实例特征在特征空间中具有明显的分离。
b. Two-Level Codebook for Discretization
目的:通过 codebook 来区分相同类型但不同实例,同时减少内存消耗。特别是针对相同类型但几何位置不同的物体,这些物体语义上相似,但空间位置不同。
比如停车场有很多🚗,还有🌲、🚶等等。每一辆🚗都是一个实例(instance),但他们都是汽车,也就是他们的语义信息相似,但是空间位置不同。我们通过codebook去存储不同类型,比如🚗类、🌲类、🚶类。这样每个实例都可以通过这个codebook归类。
经过a)之后,我们从所有的高斯的instance feature F ∈ R n × 6 F \in R^{n \times6} F∈Rn×6 中,随机选择 k = 64 k= 64 k=64个 features作为 C ∈ R k × 6 C \in R^{k \times 6} C∈Rk×6。
- 对于每一个instance feature { f i } i = 1 n \{f_{i}\}^{n}_{i=1} {fi}i=1n,我们都选择一个最近的quantized feature { c j } j = 1 k \{c_{j}\}^{k}_{j=1} {cj}j=1k, 并将index j j j 记在 I I I中。
- 我们在渲染feature map和计算损失函数的时候,都用 c j c_{j} cj 代替 f i f_{i} fi。
- 在反向传播的时候,quantized feature c j c_{j} cj 的梯度可以复制给instance feature f i f_{i} fi,来优化instance feature。
- 更新codebook的 C C C和 I I I。
由于遮挡或距离,两个对象可能永远不会共享相同的视点,因此无法通过对比损失进行优化,无法确保它们的特征是不同的。为了解决这个问题,这里进行两级离散化:
-
coarse-level codebook:
- 额外加入了几何信息,避免相同语义但空间上相距较远的物体特征混淆。
- [ F ∈ R n × 6 ; X ∈ R n × 3 ] ⇒ { C c o a r s e ∈ R k 1 × ( 6 + 3 ) , I c o a r s e ∈ { 1 , . . . , k 1 } n } [F \in R^{n \times6}; X \in R^{n \times3}] \Rightarrow \{C_{coarse} \in R^{k_{1} \times (6 + 3)}, I_{coarse} \in \{1,...,k_{1}\}^{n}\} [F∈Rn×6;X∈Rn×3]⇒{Ccoarse∈Rk1×(6+3),Icoarse∈{1,...,k1}n} k 1 = 64 k_{1} = 64 k1=64
-
fine-level codebook:
- 则在相似的几何区域内进一步聚类相似语义特征,保证相同类型物体的特征聚集。
- F ∈ R n × 6 ⇒ { C f i n e ∈ R ( k 1 × k 2 ) × 6 , I f i n e ∈ { 1 , . . . , k 2 } n } F \in R^{n \times6} \Rightarrow \{C_{fine} \in R^{(k_{1} \times k_{2})\times 6}, I_{fine} \in \{1,...,k_{2}\}^{n}\} F∈Rn×6⇒{Cfine∈R(k1×k2)×6,Ifine∈{1,...,k2}n} k 2 = 10 k_{2} = 10 k2=10
c. 3D-2D CLIP feat. Association
目的:在没有深度图的情况下,将 3D 实例与 2D 图像中的实例关联,解决同类物体的不同实例之间的混淆问题。(即高IoU,低特征距离 => geometry重叠且semantic相似)
方法:通过结合 IoU 和特征距离,避免同类物体被误识别为相同实例(我的理解是 IoU 和特征距离 可以作为pseudo depth information,因为它们分别从空间重叠和语义一致性两个方面来处理 2D 和 3D 实例的关联。这种结合方式可以帮助模型在复杂场景中更好地识别和区分遮挡物体。):
- 使用二值遮罩 B B B 标识出 2D 图像中的每个实例区域。
- 将这个遮罩 B B B 与对应 3D instance feature结合生成 pseudo GT(伪标签特征填充遮罩 P P P ),并计算渲染图中的 3D 实例特征和 pseudo GT 的特征距离。
通过 IoU 和特征距离的联合评分,匹配 3D 实例和 2D 遮罩,确保仅将位置和特征都匹配的实例关联在一起。有效避免了在没有深度图的情况下,同类物体之间的误匹配问题,实现了高效、准确的 3D-2D 实例级关联。