Utonia: Toward One Encoder for All Point Clouds
Paper: arXiv:2603.03283 Code: Pointcept/Utonia Code reference:
main@9a13cbf(2026-05-07)
Figure 1 解读:本图展示了 Utonia 作为通用三维编码器在多源域点云数据上的特征表示可视化。通过主成分分析(PCA)降维,Utonia 学习到的高维几何特征空间在不同领域间表现出强连贯的结构语义:在城市级大规模地形中特征分布平滑,表现出对极端尺度变化的高鲁棒性;在稀疏的室外 LiDAR 扫描中,特征紧紧结合了几何结构而非扫描线的线状分布,削弱了采样捷径;在室内三维重建点云中特征按物体级解耦;在以物体为中心的 CAD 模型中,则捕获了旋转不变的局部部件结构语义。
1. Motivation (研究动机)
点云(Point Clouds)作为物理三维世界的最直接表征,广泛应用于自动驾驶、AR/VR、机器人操作以及地理空间感知等关键技术领域。然而,与二维图像(如 ViT)和文本(如 Transformer 语言模型)领域相比,三维点云大模型(3D Foundation Models)的进展显著滞后。一个核心瓶颈在于:当前的点云模型预训练和应用通常被局限在单一领域内(例如,专门针对室内 RGB-D 扫描的模型,或专门针对室外 LiDAR 的模型),无法通过联合所有领域的数据来共同塑造一个泛化能力更强的点云编码器。
在尝试将不同领域的点云数据整合并预训练单个统一编码器的过程中,主要存在以下两大不可忽视的系统性障碍(Barrier):
-
空间坐标不一致性(Spatial Coordinate Discrepancies) 不同传感器采集的点云在空间尺度(Spatial Extents)、扫描模式(Sampling Patterns)和坐标约定(Coordinate Conventions)上存在巨大差异。例如:
- 城市级点云(如 HK Remote)包含数公里的三维坐标;
- 自动驾驶 LiDAR(如 Waymo, NuScenes)呈稀疏的环状(Ring-like)激光反射模式,且分布不均;
- 室内场景(如 ScanNet, ScanNet++)则为密集的三维重建表面;
- CAD 物体模型(如 PartNet)是以物体为中心且尺度归一化的三维数据;
- 基于单目/双目视频重建的点云(如 RE10K, GraspNet)则存在固有的尺度模糊和噪声。 如果直接将这些不同空间尺度的点云送入同一个网络,局部算子(如稀疏卷积或局部自注意力机制)会把领域特定的尺度特征强行当作几何特征处理,从而严重损害模型的跨域泛化和联合学习能力。此外,重力对齐场景(场景坐标有明确的向上方向)和任意旋转物体在坐标先验上也存在内在冲突。
-
输入模态缺失与不一致性(Inconsistent Modality Availability) 点云的辅助特征通道(如颜色 Color、法向量 Normal 等)在各个数据源中的存在状态是不一致的:
- 室内 RGB-D 扫描包含丰富的颜色;
- 室外 LiDAR 通常仅提供几何结构反射强度,无颜色通道;
- 即使都包含颜色或法向量,它们的噪声水平、计算方式或定义标准也大相径庭。 在朴素的联合预训练中,编码器倾向于依赖这些富含语义信息的辅助通道作为“捷径”(Shortcuts)。当在下游任务或新领域中,某些模态缺失(例如将带有颜色的室内编码器应用到只有黑白或无颜色的点云中)时,表示空间就会发生剧烈崩塌,导致下游性能断崖式下跌。
Utonia 致力于解决上述问题,提出了一条通过自监督自蒸馏机制(Self-Distillation)在室内重建、室外自动驾驶 LiDAR、地理测绘、以物体为中心的 CAD 模型和视频重建点云这五个主流领域上联合预训练单个通用编码器的路径。攻克这一问题不仅能大幅提高三维感知的泛化性能,而且在机器人操作策略条件输入、多模态大语言模型(VLM)的空间推理能力上均能带来极大的赋能,揭示出联合预训练所独有的“跨域涌现特性”(Emergent Behaviors)。
Figure 2 解读:本图展示了 Utonia 旨在解决的多源域点云编码挑战。不同于单一领域的点云任务,通用三维编码器需要同时处理来自室内重建、室外 LiDAR、以物体为中心的 CAD、地理测绘以及从单目视频解算出来的多样化点云数据。这些数据源在绝对空间尺度(从几厘米到几公里)、采样密度与反射扫描模式、以及辅助输入通道(颜色/法向量的存无与噪声水平)上存在极大的非均一性,构成了传统三维模型跨域联合学习的主要系统性障碍。
2. Idea (核心思想)
Utonia 的核心思想是通过显式的机制设计,在数据流和架构层面解耦点云领域特有的环境捷径,从而构建一个“一个编码器适配所有点云”的基础设施。具体可以概括为以下三项关键创新:
-
因果模态盲化(Causal Modality Blinding) 为了兼容任意通道输入并阻断对特定辅助模态的 shortcut 依赖,Utonia 提出了统一模态接口配合两级随机盲化策略。模型在训练中强制对缺失的通道填充默认值 0,并以一定的概率随机丢弃整个样本的辅助模态(样本级盲化)以及单个点的辅助模态(点级盲化)。这迫使模型在预训练过程中同时适应有辅助模态与无辅助模态的输入状态,使其在测试时对模态缺失具有极高的鲁棒性。
-
知觉粒度重缩放(Perceptual Granularity Rescale) 受人类视觉具有近似固定“最小角分辨率”的启发,Utonia 通过设定“知觉粒度”动态缩放所有输入点云的坐标。它不强求所有领域共享绝对尺度,而是让它们在相对分辨率上对齐,使不同领域的几何局部特征落入相似的感受野中。对于场景级点云,保留其重力先验(立正对齐);对于物体级点云,则通过三维随机旋转鼓励方向不变性。
-
粒度对齐坐标上的三维旋转位置嵌入(3D RoPE on Granularity-Aligned Coordinates) 虽然空间重缩放对齐了基本的空间单位,但传统的离散位置编码(如网格离散化、稀疏卷积位置嵌入)极易绑定到特定的扫描线密度。Utonia 提出在注意力机制中采用无参数且在空间上连续的三维旋转位置嵌入(3D RoPE)。通过对 Query 和 Key 在特征通道级别拆分为 三组并分别施加一维旋转,构建了对密度和排序不敏感的连续相对位置交互,从根本上激活了跨域几何模式的有效共享。
3. Method (方法)
Utonia 采用基于 Point Transformer V3 (PTv3) 的自监督自蒸馏预训练框架。下面是详细的整体架构及三大核心组件设计。
3.1 整体框架与网络结构
Figure 3 解读:本图展示了 Utonia 的预训练流程和 Causal Modality Blinding、Perceptual Granularity Rescale 机制的配合工作。教师(Teacher)网络与学生(Student)网络输入同一点云的两个不对称增强视图(View 1 & View 2)。Perceptual Granularity Rescale 会根据指定的粒度对两个视图进行尺度、旋转和平移缩放;同时 Causal Modality Blinding 机制在输入特征级别对颜色(Color)和法向量(Normal)进行不同程度的屏蔽(Blinding)。学生网络需要在遮掩(Masked)点云输入下重建教师网络的非遮掩(Unmasked)特征表示,通过自监督自蒸馏损失函数驱动模型在统一的特征空间中进行几何学习。
3.2 核心组件解析
3.2.1 因果模态盲化 (Causal Modality Blinding)
为了构建一个可以接受任意输入形式的统一接口,点云特征特征表示为:
其中 表示三维坐标, 表示颜色(RGB), 表示表面法向量(Normal)。若数据源天然缺失颜色或法向量,则默认用 填充。
在联合预训练时,为了防止模型将 作为判别域来源的快捷特征(如:Waymo 总是无颜色法向量,而 ScanNet 总是有颜色法向量),模型实施因果盲化:
- 样本级盲化(Per-data blinding):以固定概率 将当前整个样本的特定模态直接清零:
- 点级盲化(Per-point blinding):以概率 在空间中随机挑选点,并将其特征通道屏蔽:
通过该模态盲化策略,模型在学习过程中被迫依靠坐标结构 本身建立几何语义表示,从而阻断了模态特有捷径的负面传导。
3.2.2 知觉粒度重缩放 (Perceptual Granularity Rescale)
不同传感器的有效测量边界各不相同。Utonia 提出了知觉粒度重缩放。对于任意点云,定义其原始物理坐标为 。假设我们期望的目标“知觉粒度”(Voxel Size)为 ,而当前样本在预训练阶段被分配的缩放因子为 。则缩放后的坐标为:
在联合学习中,针对不同尺度的场景实施不同的处理:
- 场景级(Scene-level)数据:由于重力方向提供了至关重要的空间相对高度先验(例如:天花板总是高于地板,桌子总是立在地面上),Utonia 保留了 gravity 对齐,仅在 轴向上施加微小的扰动和各向同性缩放。
- 物体级(Object-level)数据:物体在物理世界中可能以任意姿态出现,因此鼓励旋转不变性。在预训练时对物体级点云施加完全的三维随机旋转(Random 3D Rotation):
3.2.3 粒度对齐坐标上的三维旋转位置嵌入 (3D RoPE)
在传统的 Transformer 注意力层中,Query 和 Key 的相对位置关联被离散的偏置或稀疏体素位置编码限制。Utonia 引入了可向任意分辨率和密度推广的 separable 3D RoPE。
对于注意力层的输入特征向量 ,我们将其沿通道维度等分为三部分,分别对应 三个坐标轴:
在每一维上,根据点的旋转缩放后坐标分量(如 分量)计算 1D RoPE。对于通道维度为 的子向量,我们根据其频率变换矩阵对其执行旋转变换。 对于第 个旋转维度,其旋转矩阵为:
其中频率基数计算为:
为了应用这一计算,特征特征维度数 的 (即 )必须是偶数。因此,特征头维度(Head Dimension)必须能够被 6 整除。
3D RoPE 的公式定义如下:
这样,注意力的打分矩阵不仅包含特征点之间的相关性,还动态绑定了它们在连续三维空间中的相对距离关系。
3.3 论文公式与 Released Code 实现差异
通过查阅 Pointcept/Utonia 开源代码 utonia/model.py 的 SerializedAttention 实现,发现论文的描述与最终的开源代码之间存在如下两点显著差异,在阅读与后续复现中需予以关注:
-
RoPE 坐标实时扰动的缺失(RoPE Coordinate Jittering/Scaling Gap)
- 论文 Claim(A.2 节):论文指出,在将坐标输入 RoPE 之前,为了提升泛化性,需要对 RoPE 的局部坐标点 进行显式的随机轴向抖动(Jitter)和等向缩放(Rescale)(参见公式 1-4)。这些变换应用于每个注意力层内部,旨在防止注意力过度绑定于绝对尺度上。
- 代码 Grounding:在
SerializedAttention类(utonia/model.py第 160-333 行)中,虽然其初始化函数__init__提供了接收shift_coords、jitter_coords和rescale_coords的参数接口并在内部赋值为self.*,但是在最终注意力模块的前向传播forward函数中(第 276-333 行),上述抖动和缩放运算完全没有被执行,而是直接克隆了排过序的点云坐标: 这意味着在实际发布的模型推理和代码运行中,注意力层中的 RoPE 直接在当前的尺度坐标上进行,缺乏层内坐标扰动。rope_coord = point.coord[order].clone() q, k = self.rope(q, k, rope_coord)
-
Causal Blinding 机制的实现位置
- 论文 Claim(3.1 节):将因果模态盲化作为一个动态的、两层级(per-data and per-point)的预训练干预机制。
- 代码 Grounding:在开源的
utonia/transform.py代码中,仅提供了RandomColorDrop用于以概率 将color特征乘以color_augment(默认为 0.0),并没有提供专门的、同时作用于color和normal的双层级(Instance & Point)联合盲化数据变换层。在公开推理代码(如demo/1_similarity.py和demo/2_sem_seg.py)中,则是直接以命令行参数的形式,通过将输入点云的某些特征整列填充为零(例如:data["color"] = np.zeros_like(data["coord"]))来模拟模态缺失的效果。
3.4 核心模块算法伪代码 (Pseudocode)
3.4.1 三维旋转位置嵌入 (3D RoPE) 模块
根据 utonia/model.py 中 Point3DRoPE 的实际代码(第 51-107 行)实现的纯 PyTorch 伪代码:
import torch
import torch.nn as nn
class Point3DRoPE(nn.Module):
def __init__(self, head_dim: int, base: float = 10000.0):
super().__init__()
# 必须能够被 3 整除以用于三维特征拆分,且由于 1D RoPE 要求通道两两分组,每组必须为偶数
# 因此 head_dim 必须能够被 6 整除
assert head_dim % 6 == 0, f"Head dimension must be divisible by 6, got {head_dim}"
self.head_dim = head_dim
self.chunk_dim = head_dim // 3
self.base = base
# 计算 1D RoPE 的逆频率表:大小为 chunk_dim // 2
inv_freq = 1.0 / (
self.base ** (torch.arange(0, self.chunk_dim, 2).float() / self.chunk_dim)
)
self.register_buffer("inv_freq", inv_freq)
def get_cos_sin(self, xyz: torch.Tensor):
# xyz 形状: (N, 3),代表 N 个点的坐标
x = xyz[:, 0:1] # (N, 1)
y = xyz[:, 1:2] # (N, 1)
z = xyz[:, 2:3] # (N, 1)
freqs = self.inv_freq.unsqueeze(0) # (1, chunk_dim // 2)
# 广播计算各轴的嵌入
emb_x = x * freqs # (N, chunk_dim // 2)
emb_y = y * freqs
emb_z = z * freqs
# 拼接以扩展为 chunk_dim 大小 (即通道成对复制)
emb_x = torch.cat((emb_x, emb_x), dim=-1) # (N, chunk_dim)
emb_y = torch.cat((emb_y, emb_y), dim=-1)
emb_z = torch.cat((emb_z, emb_z), dim=-1)
# 拼接成最终的 3D 嵌入矩阵: 形状 (N, head_dim)
emb_3d = torch.cat((emb_x, emb_y, emb_z), dim=-1)
# 返回 cos 与 sin 偏置,增加头维度 (1) 用于注意力广播
return emb_3d.cos().unsqueeze(1), emb_3d.sin().unsqueeze(1) # (N, 1, head_dim)
def rotate_half(self, x: torch.Tensor):
# 交换特征的前半部分与后半部分,并对前半部分取反
x1, x2 = x[..., : x.shape[-1] // 2], x[..., x.shape[-1] // 2 :]
return torch.cat((-x2, x1), dim=-1)
def forward(self, q: torch.Tensor, k: torch.Tensor, xyz: torch.Tensor):
# q, k 形状: (N, num_heads, head_dim)
# xyz 形状: (N, 3)
cos, sin = self.get_cos_sin(xyz) # 均为 (N, 1, head_dim)
# 分离 x, y, z 对应的三部分分量
qs = torch.split(q, self.chunk_dim, dim=-1)
ks = torch.split(k, self.chunk_dim, dim=-1)
coss = torch.split(cos, self.chunk_dim, dim=-1)
sins = torch.split(sin, self.chunk_dim, dim=-1)
q_outs = []
k_outs = []
# 对每一个空间分量应用一维旋转
for i in range(3):
q_part = (qs[i] * coss[i]) + (self.rotate_half(qs[i]) * sins[i])
k_part = (ks[i] * coss[i]) + (self.rotate_half(ks[i]) * sins[i])
q_outs.append(q_part)
k_outs.append(k_part)
# 重新拼接输出特征
q_rot = torch.cat(q_outs, dim=-1)
k_rot = torch.cat(k_outs, dim=-1)
return q_rot, k_rot3.4.2 Causal Modality Blinding 数据处理模块
以下是模拟论文中所描述的两级盲化机制(Instance-level & Point-level)的 PyTorch 数据集增强变换:
import numpy as np
import torch
class CausalModalityBlinding(object):
def __init__(self, p_data: float = 0.2, p_point: float = 0.15, fill_val: float = 0.0):
self.p_data = p_data
self.p_point = p_point
self.fill_val = fill_val
def __call__(self, data_dict: dict) -> dict:
# data_dict 包含 "color" 形状 (N, 3) 和 "normal" 形状 (N, 3)
N = data_dict["coord"].shape[0]
# 1. 样本级(Per-data)盲化:整个样本的辅助特征丢弃
if "color" in data_dict and np.random.rand() < self.p_data:
data_dict["color"] = np.full_like(data_dict["color"], self.fill_val)
if "normal" in data_dict and np.random.rand() < self.p_data:
data_dict["normal"] = np.full_like(data_dict["normal"], self.fill_val)
# 2. 点级(Per-point)盲化:样本内部随机丢弃点的特定通道
if "color" in data_dict and self.p_point > 0:
mask_color = np.random.rand(N) < self.p_point
data_dict["color"][mask_color] = self.fill_val
if "normal" in data_dict and self.p_point > 0:
mask_normal = np.random.rand(N) < self.p_point
data_dict["normal"][mask_normal] = self.fill_val
return data_dict3.4.3 SerializedAttention 核心层前向传播
在注意力计算中使用 3D RoPE 对 Query 和 Key 进行旋转编码的伪代码:
import torch
import torch.nn as nn
class SerializedAttention(nn.Module):
def __init__(self, channels: int, num_heads: int, patch_size: int):
super().__init__()
self.channels = channels
self.num_heads = num_heads
self.patch_size = patch_size
self.scale = (channels // num_heads) ** -0.5
self.qkv = nn.Linear(channels, channels * 3, bias=True)
self.proj = nn.Linear(channels, channels)
self.rope = Point3DRoPE(head_dim=channels // num_heads)
self.softmax = nn.Softmax(dim=-1)
def forward(self, x: torch.Tensor, coords: torch.Tensor) -> torch.Tensor:
# x: 输入的点云序列特征 (N, C)
# coords: 输入的点云空间坐标 (N, 3)
# 这里的输入假设已经完成了排序(Serialization)
N, C = x.shape
H = self.num_heads
K = self.patch_size # 局部窗口大小(Patch Size)
# 1. 映射生成 Q, K, V
qkv = self.qkv(x) # (N, 3 * C)
qkv = qkv.reshape(N, 3, H, C // H) # (N, 3, H, head_dim)
q, k, v = qkv.unbind(dim=1) # 得到三个形状为 (N, H, head_dim) 的张量
# 2. 注入三维旋转位置编码
q, k = self.rope(q, k, coords) # q, k 转换为带有位置旋转的张量
# 3. 将点划分到局部的 Patch/Window 内部进行自注意力计算
# 假设点云已被完美 Padding 到了 K 的整数倍
num_patches = N // K
q = q.reshape(num_patches, K, H, C // H).permute(0, 2, 1, 3) # (num_patches, H, K, head_dim)
k = k.reshape(num_patches, K, H, C // H).permute(0, 2, 1, 3) # (num_patches, H, K, head_dim)
v = v.reshape(num_patches, K, H, C // H).permute(0, 2, 1, 3) # (num_patches, H, K, head_dim)
# Attention 打分矩阵计算
attn = (q * self.scale) @ k.transpose(-2, -1) # (num_patches, H, K, K)
attn = self.softmax(attn) # 沿最后一个 K 维度做 Softmax
# 加权输出
out = (attn @ v).transpose(1, 2).reshape(N, C) # (N, C)
# 4. 最终 FFN 线性投射
out = self.proj(out)
return out3.5 代码与论文概念映射表 (Code-to-Paper Mapping)
Code reference:
main@9a13cbf(2026-05-07) — 伪代码和映射关系基于该 commit
| 论文概念 | 源码文件 | 关键类 / 函数 | 映射描述 |
|---|---|---|---|
| 整体网络骨干 (PTv3) | model.py | PointTransformerV3 | 实现包含 5 个 stage 的学生与教师模型结构,具有序列化、稀疏化与降采样 pooling 逻辑。 |
| 模态融合接口 | transform.py | Collect | 将 coord、color、normal 进行张量拼接 (torch.cat) 生成 9 维初始点云输入特征。 |
| 因果模态盲化 | transform.py | RandomColorDrop | 提供基础的以一定概率屏蔽点云中 color 通道的数据变换。 |
| 知觉粒度重缩放 | transform.py | GridSample | 实施基于指定 grid_size 粒度的坐标网格降采样与坐标归一化对齐。 |
| 3D RoPE 注意力 | model.py | Point3DRoPE | 实现把 Query & Key 按 通道分块,分别乘上由三维网格计算出的旋转余弦和正弦系数。 |
| 局部注意力交互 | model.py | SerializedAttention | 局部窗口划分并实施 self.rope 的 Query/Key 旋转,在非 Flash 与 Flash Attention 间分流。 |
| 跨尺度特征传播 | model.py | GridPooling | 在下采样过程中设置 pooling_parent 与 pooling_inverse 的级联关系。 |
| 探针级特征融合 | 2_sem_seg.py | SegHead 类定义与推理插值循环 | 定义了线性探针分割头,并通过 pooling-inverse 插值将多尺度特征拼接并传播回原始分辨率进行最终分类(插值循环见 demo/2_sem_seg.py#L186-L191)。 |
4. Experimental Setup (实验设置)
4.1 预训练数据集与规模
Utonia 在 2 个预训练阶段中使用了极大规模的多源域混合点云数据集,包括:
- 室内场景数据集(密集的 RGB-D 重建点云):
- ScanNet:1,201 个训练场景,312 个验证场景,共 1,613 个点云;
- ScanNet++:856 个训练场景,50 个验证场景,共 956 个高精度点云;
- S3DIS:272 个室内房间扫描;
- ARKitScenes:5,047 个真实移动端扫描;
- HM3D:9,147 个大范围真实住宅扫描;
- Structured3D:20,005 个合成的精细房间点云。
- 室外数据集(稀疏的 LiDAR 扫描点云):
- Waymo:28,130 帧训练集,6,019 帧验证集,共 40,157 帧;
- NuScenes:40,157 帧 LiDAR 数据。
- 视频 lift 几何与以物体为中心的数据集:
- RE10k:从互联网现实视频中解算出的 46,282 个点云段;
- PartNet:合成的三维 CAD 分层零件切割数据集(26,671 个物体实例);
- Cap3D:利用多视角重构的 3D 图网,每个 epoch 采样 90,000 个实例。
4.2 对比基线 (Baselines)
为了科学全面地评估性能,实验与以下主流点云编码器与预训练策略进行对比:
- PTv3 (Supervised):采用完全监督学习模式下直接训练的骨干网络;
- Sonata:利用点云多视图和对比学习对齐的自监督表示模型;
- Concerto:利用图文对齐的单域或两域点云多模态表示模型;
- MSC & PPT:其他代表性的自监督/多任务点云掩码预训练框架。
4.3 下游评估任务与指标
- 室内语义分割(Indoor Semantic Segmentation):在 ScanNet Val, ScanNet200 Val, ScanNet++ Val 以及 S3DIS Area 5 数据集上评测。主要指标为:
- mIoU(平均交并比);
- mAcc(平均类别准确率);
- allAcc(所有点总体准确率)。
- 室外语义分割(Outdoor Semantic Segmentation):在 NuScenes Val, Waymo Val 以及 SemanticKITTI Val 上评测。
- 机器人抓取操作(Robotic Clutter Manipulation):在基于 PyBullet / MuJoCo 物理引擎的 95 个 held-out Clutter 场景中评估机械臂抓取成功率(Success Rate)。
4.4 硬件与训练超参数 Trace
NOTE
当前开源的
Pointcept/Utonia官方仓库主要是一个推理与评估(Inference & Evaluation)仓库,其预训练脚本和训练损失算子并未包含在内。以下列出的具体训练硬件及超参数均来自于原论文的附录 A.1 节(Appendix A.1)。
- 训练环境与分布式设置:
- 硬件平台:64 张 NVIDIA H20 GPU;
- 混合批大小(Global Batch Size):256。
- 训练调度安排:
- Stage 1 (初始化阶段):在 ScanNet、Structured3D、Waymo 和 PartNet 数据集所组成的高质量混合子集上进行基础对齐训练;
- Stage 2 (全数据联合阶段):使用 Stage 1 的模型权重初始化,在全量数据集混合体上继续微调训练 100 个 Epoch;
- 自蒸馏上采样配置:相较于 Concerto 与 Sonata 使用的多级上采样蒸馏,Utonia 为了提升在 64 张 H20 上的训练速度,将 self-distillation 的 upcast level 设置为了 0。这在保障跨域预训练精度的同时,显著降低了显存开销与单步迭代耗时。
- 微调与评估探针配置:
- 线性评估(Linear Probing,
lin.):冻结编码器权重,后接极轻量化的线性层; - 探针解密(Decoder Probing,
dec.):冻结编码器,后接较轻的 PTv3 Decoder 解码层; - 全参微调(Full Fine-Tuning,
f.t.):对编码器和解码器进行端到端微调。
- 线性评估(Linear Probing,
5. Experimental Results (实验结果)
5.1 室内语义分割结果 (Indoor Semantic Segmentation)
如表 1 所示,Utonia 在各项室内场景语义分割中均取得了超越 Concerto 的成绩,充分体现了其跨域联合学习所学到的空间泛化能力:
| 评估方法与模型类型 | ScanNet Val mIoU | ScanNet200 Val mIoU | ScanNet++ Val mIoU | S3DIS Area 5 mIoU |
|---|---|---|---|---|
| PTv3 (Supervised) | 77.6 | 35.3 | 48.2 | 73.4 |
| Concerto (线性探针 lin.) | 77.3 | 37.4 | 45.6 | 73.5 |
| Utonia (线性探针 lin.) | 77.7 | 36.4 | 44.7 | 74.7 |
| Concerto (解码探针 dec.) | 79.5 | 37.8 | 48.3 | 75.5 |
| Utonia (解码探针 dec.) | 80.3 | 38.0 | 48.5 | 76.2 |
| Concerto (全参微调 f.t.) | 80.7 | 39.2 | 50.7 | 77.4 |
| Utonia (全参微调 f.t.) | 81.1 | 39.6 | 49.0 | 78.1 |
5.2 室外自动驾驶语义分割结果 (Outdoor Semantic Segmentation)
如表 2 所示,Utonia 在稀疏的室外 LiDAR 点云分割任务中表现优异,通过对不同分辨率和扫描模式的自适应学习,取得了极高的 mIoU 增幅:
| 评估方法与模型类型 | NuScenes Val mIoU | Waymo Val mIoU | SemanticKITTI Val mIoU |
|---|---|---|---|
| PTv3 (Supervised) | 80.4 | 71.3 | 70.8 |
| Concerto (线性探针 lin.) | 74.2 | 62.2 | 66.6 |
| Utonia (线性探针 lin.) | 75.5 | 63.8 | 67.7 |
| Concerto (解码探针 dec.) | 77.5 | 69.4 | 69.3 |
| Utonia (解码探针 dec.) | 78.2 | 69.4 | 70.0 |
| Concerto (全参微调 f.t.) | 82.0 | 69.2 | 71.2 |
| Utonia (全参微调 f.t.) | 82.2 | 71.4 | 72.0 |
5.3 核心消融实验发现 (Key Ablation Findings)
Utonia 开展了系统性的消融分析(以 38M 级别的参数版本作为消融基准,在 Stage 1 混合数据集上训练评测),证明了各个模块在打破域间捷径和促进跨域泛化方面的独特贡献:
5.3.1 辅助模态依赖的消融 (CMB 机制有效性)
Figure 4 解读:消融实验分析了重力对齐和随机旋转的性能偏差。对于大尺度的场景(如 ScanNet 室内和 Waymo 室外),模型在不进行随机三维旋转(保持 Upright 状态)的情况下效果最优,这表明大尺度场景具有深刻的重力高度分布规律;而在 CAD 物体级分类任务(如 PartNet)中,如果不进行三维随机旋转,模型将严重依赖绝对坐标分布而丧失旋转不变性。知觉粒度重缩放根据这两种类型划分了不同的数据增强先验,最终调和了这两种相互排斥的几何偏置。
消融数据表明:
- 在无模态盲化(w/o Causal Blinding)的普通预训练下:如果在测试阶段将特征的颜色和法向量特征置为零(即模拟室外 LiDAR 或仅具备深度图重建的下游任务),ScanNet 上的 mIoU 将从 72.3% 剧烈滑坡至 35.4%,表明网络已经形成了对输入辅助通道的极大捷径依赖。
- 在启用了 Causal Modality Blinding 后:即使测试时所有的颜色与法向量都被彻底盲化(All Blinded),ScanNet 上的语义分割 mIoU 依然能够保持在 68.2%,下降幅度被极大控制。此外,当在全模态提供输入时,模型性能依然高达 72.1%,说明盲化在几乎不损失上限的前提下,极具韧性地支撑了下游的模态不完整输入任务。
5.3.2 连续位置编码的消融 (3D RoPE 有效性)
将可扩展的 3D RoPE 与传统的绝对离散位置编码(A.P.E.)以及无位置编码(None)进行对比消融:
- 采用 A.P.E.:模型难以应对密度大范围变化的测试,从密集点云向极稀疏点云迁移时性能衰减达 12.4% mIoU。
- 采用 3D RoPE:由于直接在 Query 和 Key 上通过高频三角函数表对相对位移进行解析表达,使得在对稀疏点云进行跨域测试时性能明显更强,证明了连续旋转表达对于稀疏与密度的通用外推能力。
5.4 涌现行为与下游任务表现 (Emergent Behaviors & Downstream Applications)
5.4.1 跨域匹配与部件级泛化
Utonia 展示了非常显著的跨域语义涌现,能够直接用于零样本(Zero-shot)的跨域点云检索与部件对齐。
Figure 5 解读:本图可视化了 Utonia 特征在部件级上的分割与跨源域对齐性能。即使输入点云的数据源从合成的 CAD 模型(ShapeNet)迁移到视频解算点云或 LiDAR 扫描,Utonia 仍能够凭借其自监督预训练学到的连贯空间几何表征,准确实现跨域的相似度对齐(如将椅子的扶手、靠背等精细语义部件完美关联起来)。
5.4.2 机器人抓取与控制 (Robotics Manipulation)
Figure 6 解读:在机器人操作的成功率测试中,通过将 Utonia 所提取的鲁棒三维几何特征直接作为视觉-语言-动作(VLA)决策网络(如 Robo-Transformer)的特征编码输入,相比于无预训练点云表征,在复杂的多物体杂乱桌面环境(Cluttered Tabletop)中进行物体抓取与放置任务的决策成功率表现出稳定的提升。这表明 Utonia 所包含的通用三维信息能够无缝充当物理操纵策略所需的关键三维表征。
6. Conclusion (结论)
Utonia 提出了第一步也是极其关键的探索——构建一个横跨所有点云域的统一自监督编码器。通过设计 Causal Modality Blinding(样本级和点级双层屏蔽以打破输入快捷依赖)、Perceptual Granularity Rescale(多尺度自适应粒度调整)和 3D RoPE(将相对位置交互通过头可分的形式引入注意力矩阵),Utonia 在保证模型参数 divisible by 6 的结构规范下,跨越了传感器尺度、重力先验与模态不完整带来的系统性隔阂。
实验结果表明,Utonia 不仅在传统的室内/室外三维语义分割微调上展现出对主流 Concerto 与 Sonata 模型的稳定超越,并且首次证明了联合大规模预训练可以激发出部件级跨域零样本对齐等一系列极具想象力的几何涌现行为,为未来三维视觉基础大模型(3D Foundation Models)的发展和向空间智能、机器人物理操纵领域的进一步外推奠定了坚实的基础。