资讯详情

3D语义占用预测新范式:从高斯溅射到超二次曲面

📅 2026/10/18 23:01:36 | 华诺云谱 👁 阅读
3D语义占用预测新范式:从高斯溅射到超二次曲面
3D语义占用预测最近确实是自动驾驶感知圈绕不开的话题。从一个三维空间里“有没有东西、是什么东西”到直接在体素网格上做密集语义分类再到今天要聊的高斯表示和超二次曲面参数化这条技术路线的演进速度比很多人想象中要快。这篇文章想借QuadricFormer、S2GO、SuperOcc这三类代表性工作把“从高斯到超二次曲面”这条新范式的来龙去脉、核心设计、工程落地细节一次讲透。3D语义占用预测之所以能成为新范式根本原因是传统的3D目标检测遇到了瓶颈。边界框只能描述“大概在哪、大概多大”遇到部分遮挡、长尾形态、不规则几何体时框的表示能力就明显不够用了。而占用预测直接输出整个场景的稠密语义占用状态相当于给自动驾驶系统一张“高分辨率的地图级体素语义标签”这对后续的规划、避障、可行驶区域判断都有直接价值。不过真正让3D语义占用预测从学术demo走向可落地方案的是表示方式的变化。早期方法动辄输出几十万甚至上百万体素的预测计算和内存开销都很大。后来有团队尝试用3D高斯溅射承担场景表示再到用超二次曲面做语义级的几何参数化每一步都在解决一个实际问题如何在保持语义表达能力的同时把几何表示压缩到可推理、可部署的规模。这篇文章适合正在做自动驾驶感知、三维视觉、具身智能相关工作的朋友。如果你是刚接触这个领域建议从第1节开始读如果你已经在看占用预测相关论文但被一堆“高斯”“超二次曲面”“surflet”之类的术语绕晕了可以直接跳到第3节看三个方案的对比再回头补原理。1. 3D语义占用预测到底在解决什么问题1.1 边界框的局限性为什么占用预测成了必选项传统的3D目标检测把每个物体用一个轴对齐或旋转的3D边界框包起来输出类别和长宽高。这套方案在“物体比较规整、场景相对空旷”时表现不错比如高速公路上的车辆。但落到城市复杂路口、园区低速场景、停车场等地方问题就暴露了。举个很实际的例子一辆卡车装了一堆伸出车厢的管材3D检测框只能把它当成一个巨大的长方体框内其实大量区域是空的反过来一个骑车人弯腰拿东西身体和自行车形成不规则的组合形态边界框又往往把行人和自行车框成一个扁平的盒子几何细节完全丢失。边界框本质上是“用一个粗糙的外接盒近似任何物体”这种近似对于后续的避障规划来说太粗糙了。占用预测的思路完全不同。它把三维空间划分成均匀的体素网格对每一个体素判断“是否被占据”以及“被什么语义类别占据”。这样输出的是一个完整的、稠密的语义占用地图不再依赖某个特定物体假设。对下游规划来说它能告诉系统“前方10米到15米之间存在未知障碍物但语义不确定”这种信息在边界框方案里是拿不到的。但要付出代价。一个60米x60米x3米的感知范围如果用0.4米体素会有几十万的体素单元。要在算力有限的嵌入式平台上实时处理这个规模的密集预测直接做3D卷积或者全量Transformer会非常吃力。这也是为什么近两年的工作都在寻找“更聪明的表示方式”。1.2 稠密体素预测的成本痛点早期方法来来回回绕不开两个瓶颈一是显存二是计算量。3D体素上的卷积网络随着感知范围扩大特征图的通道数和空间分辨率都在涨显存常常以几倍几倍的速度放大。用稀疏卷积能缓解一部分但稀疏卷积的实现和部署本身就有门槛在嵌入式设备上并不好优化。另一方面稠密预测往往存在大量“浪费”。自动驾驶场景里大部分空间其实是空的真正被占据的体素占比很低。但在稠密体素方案中模型仍然要对所有体素做分类打分这就像给一本1000页的书做内容摘要却要把每一行都精读一遍效率可想而知。所以研究者开始想能不能找到一个参数化的几何表示用“几百个参数”而不是“几百万个体素”来描述场景中的占用答案就是高斯和超二次曲面。1.3 “从高斯到超二次曲面”这条演进线3D高斯溅射近两年在渲染领域彻底火了它本质上是把场景表示成一组3D高斯分布每个高斯有一个中心点、协方差矩阵、颜色和不透明度渲染时对这组高斯做投影和合成。高斯表示在自由曲面建模上有天然优势因为它不要求物体有拓扑结构几十万个高斯可以拼出任意的复杂几何。但高斯的问题也很明显它缺乏“物理解释”。一个场景里可能有几十万个高斯它们分别对应什么物体、属于什么语义网络并不知道。高斯只是几何基元不是语义实体。超二次曲面则是另一条路。它用一个数学表达式描述“带圆角的方体”“柱状体”“盘状体”“胶囊形”等一族形状只需要少数几个参数。相比高斯超二次曲面的参数天然具备语义可读性——你看到一个超二次曲面的参数就能大概知道它描述的是“一个细长的杆子”还是一个“扁平的圆盘”。把场景里的物体用超二次曲面来建模几何表征有了全局连续性语义归属也更清晰。所以“从高斯到超二次曲面”的本质是从“无结构的几何基元集合”走向“结构化的语义几何参数化”。高斯负责表达复杂细节超二次曲面负责抽象语义实体两者结合既保精度又能压缩表示维度。2. 核心表示3D高斯和超二次曲面怎么选2.1 3D高斯溅射表示的底层逻辑先直观理解一下3D高斯是什么。想象你在空间里放了一团彩色的烟雾烟雾中心浓度最高越往外越稀薄。在数学上这种“中间浓、边缘淡”的分布可以用高斯函数描述。3D高斯溅射就是用很多这样的彩色烟雾团拼出整个三维场景每个烟雾团有中心位置xyz协方差矩阵决定烟雾在三个方向上的“胖瘦”角度颜色和不透明度决定这个烟雾团在被看到时贡献什么颜色、多不透明训练时我们调整这几十万个烟雾团的参数让它们渲染出来的图像尽量接近真实相机的观测。这个过程可以完全用可微的渲染管线做端到端优化所以收敛快、渲染质量高甚至在很多场景里能接近神经辐射场的重建质量但训练和推理速度都快得多。在占用预测里用高斯做中间表示核心价值在于几何灵活性。高斯不需要显式定义物体的边界和拓扑它天然能表达不规则的碎片、旷野里的草丛、雨天的水渍反光等等。这些细节在体素方案里往往被体素大小给抹平了。2.2 超二次曲面的数学形式和表达优势超二次曲面这个名字听着唬人其实是“椭圆球的一般化”。它的隐式方程大致长这样((x/a)^(2/ε2) (y/b)^(2/ε2))^(ε2/ε1) (z/c)^(2/ε1) 1这里a、b、c是三个轴长决定了物体在x、y、z方向上的尺度ε1和ε2是形状参数控制这个形体从“方形”过渡到“圆柱形”再到“尖锥形”的连续变化。简单类比超二次曲面就像一个“可以被捏成方盒子、胶囊、橄榄球、扁盘”的橡皮泥玩具捏出的形状一大类都能用这个公式描述。超二次曲面在几何表达上的核心优势有两个。第一是参数维度低得惊人。一个普通长方体需要9个自由度来描述位置、旋转、尺寸而超二次曲面只需在这基础上加两个形状参数就可以描述一整个形状族。这意味着一辆车可以用一个超二次曲面实例表示一个行人也可以用一个超二次曲面实例表示整个场景可能只需要几百个实例参数而不是几十万个高斯参数。第二是几何约束天然存在。高斯表示里没有任何机制保证物体表面是连续的、封闭的。超二次曲面则自带“三维连续曲面”这个约束所以用于占用预测时输出的几何一定是密封且物理可解释的。这一点对自动驾驶很重要——规划模块不会喜欢“一张到处漏风的语义几何图”。2.3 为什么先高斯后超二次曲面从高斯的稠密基元到超二次曲面的稀疏参数中间并不是做“表示替换”而是做“抽象提升”。一个典型的做法分两阶段第一阶段用3D高斯表示场景因为高斯拟合复杂细节很稳能覆盖各种自由形态的障碍物第二阶段把属于同一物体的高斯组分出来再拟合一个超二次曲面实例来统一描述它。这个过程可以理解为先用“像素级”的方式看清楚场景里有什么再把它们抽象成“图形学级”的简化三维模型。这里有个工程上的关键点高斯到超二次曲面的过渡需要解决“哪些高斯属于同一个超二次曲面”的聚类问题。如果聚类错了一个超二次曲面可能同时描述行人和他身后的路牌语义就乱了。所以这些工作里通常都包含一个“几何分组模块”利用空间连续性、颜色一致性、语义特征相似度做联合分组而不是单纯靠坐标距离。3. 三大方案对比QuadricFormer、S2GO、SuperOcc3.1 QuadricFormer用Transformer回归超二次曲面参数QuadricFormer的核心理念是很直接地把“语义占用预测”改写成“一组超二次曲面实例的参数回归问题”。它不再对每个体素做稠密分类而是让网络直接输出N个超二次曲面的参数包括中心点、轴长、旋转、形状参数和语义类别。模型整体是一个编码器-解码器结构。编码器处理输入的多视角图像提取出带位置信息的二维特征解码器部分使用一组可学习的查询向量每个查询向量对应一个潜在的超二次曲面实例。解码器通过交叉注意力机制从图像特征中查询“这个位置有没有一个物体”“它是什么形状”“它属于哪一类”最终输出该实例的参数。这样做的好处非常明显输出是紧凑的向量集合后处理极其简单下游规划可以直接把每个超二次曲面当成一个几何障碍物来做碰撞检测。同时由于使用Transformer结构网络对跨视角的几何一致性也更容易建模——多目相机看到的同一个物体在注意力机制下会被同一个查询向量压制到一起。3.2 S2GO从高斯到语义超二次曲面的生成式路径S2GO更贴近“从高斯到超二次曲面”这个标题本身。它的路线是先构造一个3D高斯场景表示再通过一个“语义超二次曲面生成模块”把高斯组提炼为带语义标签的超二次曲面实例。具体过程大致是2D图像经过编码器生成体素特征然后解码为3D高斯基元。这个阶段类似于一个高斯的预测头网络输出每个高斯的位置、协方差、颜色和密度。接下来是核心的“抽象模块”——为了防止直接预测超二次曲面参数时丢掉细节S2GO选择先在高斯基元上做分组把几何位置相近、语义特征相似的高斯聚成一簇对每一簇拟合一个超二次曲面。实际操作时这个拟合用的是可微的方式把预测出来的超二次曲面的隐式方程和高斯分布做能量对齐鼓励超二次曲面的内部区域“覆盖”到高斯的稠密区域外部区域则尽量留空。拟合过程是可微的整个模型可以端到端训练不需要额外的离线后处理标注。这套设计让它对稠密细节的还原明显更好。举个例子一排栏杆在纯超二次曲面方案里可能被拟合成一块扁平的墙但在S2GO里高斯基元会先把每根栏杆的位置表达出来后续拟合的超二次曲面再对局部做形状修正整体几何细节保留度会高不少。3.3 SuperOcc多视角占用预测的动态实例化方案SuperOcc把重点放在了“实例化语义占用”上。它不满足于输出“这里有一片路面、那边有一个行人”的语义级结果而是希望进一步区分“这个行人和那个行人分别是不同的实例”同时每个实例仍然有可解释的几何形状。它的实现路径和QuadricFormer类似采用了基于查询的解码机制但额外引入了“实例感知”的监督信号。训练阶段不仅要用超二次曲面参数做几何监督还要在2D图像上用分割掩码做语义对齐确保每个超二次曲面实例能在图像上对应到明确的像素区域。这种2D-3D联合约束让SuperOcc从多视角图像中学习的一致性强了不少。SuperOcc对动态物体的处理也值得一提。它对待检测的动态物体单独设置了一组“运动状态查询”在输出超二次曲面参数的同时还输出物体在当前时刻的速度和朝向。这样下游规划模块可以直接拿到动目标的三维几何和运动信息而不需要再在规划阶段做额外的追踪和关联。3.4 三个方案怎么选方案输入方式核心表示流程输出特点典型优势主要代价QuadricFormer多视角图像Transformer查询直接回归超二次曲面紧凑参数集合语义实例流程简单、部署友好极不规则物体容易参数化过度S2GO多视角图像图像编码到高斯基元再做超二次曲面抽象高保真几何语义实例细节还原度最高中间高斯表示训练开销大SuperOcc多视角图像实例感知查询解码超二次曲面带运动信息实例语义占用运动状态对动态场景规划友好需要更复杂的2D-3D联合标注真实项目里如果你的目标平台算力紧张、想尽快跑通一个占用感知demoQuadricFormer这种直接回归参数的结构最省心。如果你们拿到的是高质量稀疏点云或LiDAR辅助标注追求几何的精细还原S2GO更合适。如果下游规划对动目标追踪有硬性需求SuperOcc的工作方式会更匹配。4. 训练、损失函数与部署要点4.1 损失函数怎么设计才不打架超二次曲面占用预测的损失函数通常由三部分组成。几何对齐损失负责把预测超二次曲面拉向真值物体表面。常用做法是在超二次曲面表面上采样一些点计算这些点到真值点云或真值体素边界的距离用Chamfer距离约束。这里的关键是采样策略也影响收敛。我试过直接在参数空间均匀采样表面点效果不稳定改成在训练中动态增加高曲率区域采样密度后收敛速度明显改善。语义分类损失处理每个预测实例的类别。这个和常规分类任务一样难点在于类别不均衡——场景里车和行人大量出现施工标识、异形障碍物出现很少。建议给少数类增加focal loss权重。参数回归损失则约束超二次曲面参数本身的数值稳定性。比如轴长的预测不能出现负值形状参数要保证在能让隐式方程成立的范围内。如果不对这部分做约束训练初期网络输出的形状参数会跳出定义域让后续采样计算梯度时直接崩掉。4.2 数据标注和真值从哪来这是超二次曲面占用预测落地时最容易被低估的问题。直接标注超二次曲面参数不现实任何标注工具都不可能让人工去“对着点云描出一个超二次曲面的五个参数”。实际项目中通常走两步先用现有的自动驾驶数据集去拿3D边界框和语义分割标签然后用离线拟合算法把每个物体的点云拟合成超二次曲面把这个拟合结果当作真值。这个过程不需要人工参与但要注意拟合真值本身有误差会把“方形的车拟合成长圆柱”这类错误带进来。我一般会在拟合后加一道清洗程序对每个超二次曲面计算它覆盖的点云比例和表面贴合度误差如果偏差太大就不生成这个实例的真值让模型在训练中自动忽略它。4.3 从模型到部署的硬指标很多人以为回归几百个参数比体素分类轻松部署起来一定更简单。其实没那么乐观。超二次曲面类模型的推理链通常包括图像编码器、解码器和后处理几何模块编码器如果选大模型计算瓶颈反而在“图像理解”这一层。我的经验是部署时优先做两件事。第一是图像编码器轻量化把输入分辨率从800x1600降到640x1280再使用通道剪枝后的骨干网络通常能减少三分之一的延迟精度损失在可接受范围。第二是超二次曲面参数的后处理可以走CPU并行因为实例数并不多几百个实例在几个核上做几何解析完全能实时跑不需要把全部推理都压到GPU上。显存方面中间高斯基元方案最费显存。S2GO类方法在训练时要用几十万高斯做渲染监督显存占用轻松上到20GB以上基本告别低显存显卡。推理时倒是可以把高斯数量压到原来的一半以下但需要重新微调。如果是实际车端部署我更建议QuadricFormer这类直接回归参数的轻量方案部署难度低一个量级。5. 常见问题与排查技巧实录5.1 超二次曲面退化全都变成了球这是我踩过最典型的坑。训练刚开始时网络找不到一个合理的形状初始化策略输出的超二次曲面几乎全部收敛成球体或椭球体。原因在于形状参数的梯度在“球体区域”附近几乎是零网络一旦滑到这个区域就很难再走出来。解决办法有两个方向。第一是给形状参数加正则化引导网络偏向“柱状”和“盘状”的初始位置而不是默认的球状。第二是分支预测用一个专门的小模块直接估计“这个物体更接近长条、扁盘还是方形球”把这个估计作为超二次曲面形状参数的先验偏差。我实测后者收敛速度和最终贴合精度都更好。5.2 高斯分组边界错乱S2GO这类方法里高斯基元分组一旦出错后续超二次曲面拟合就会连锁出错。典型场景是行人站在车辆旁边如果只靠空间距离分组行人手臂上的高斯基元很可能被划到车身那一簇里去最后拟合出来的超二次曲面把人和车“缝”在一起。排查时先检查声明的语义特征——分组模块输入里有没有带上图像的语义特征。如果只输入坐标和颜色几乎必出错。带上语义特征后效果会好很多但要注意“语义特征与几何特征的比例权重”也需要调。我的经验是几何距离权重设为语义特征权重的2到3倍在多数场景下平衡最好。5.3 推理时的实例数量如何确定基于查询的解码方案要求预设最大实例数量比如预定义最多预测256个超二次曲面。推理场景里实际物体数量可能只有30个剩下的查询如果没有合适的对象网络通常会输出一些置信度很低的“垃圾实例”。后处理时一定要做置信度过滤但过滤阈值不能一刀切。我踩过的坑是阈值调太高把远处小物体直接滤没了调太低又产生很多噪声实例。现在我的处理方式是分距离段设置不同阈值近处要求高置信度远处适当放宽同时结合体素占用预测的结果做投票确认效果明显更稳。5.4 实操调试建议最后给几条实在的建议。跑通代码前先拿单张图像做可视化看看高斯基元覆盖是否合理这能过滤一半以上的训练配置问题。训练损失卡住不动时优先检查采样点的数量太多会导致梯度平均化太少则噪声太大。另外所有超二次曲面类模型在训练初期都不建议用很大的学习率参数回归问题对初始步长非常敏感我一般会把学习率设为标准图像分类任务的一半。如果你打算在真实项目中尝试这套方案可以从输入输出接口最干净的QuadricFormer开始跑通之后再叠加高斯细节作为增强。这个路线踩坑最少也最容易看到“从高斯到超二次曲面”这个范式带来的实际增益。我个人在实际操作中的体会是超二次曲面占用预测最有价值的地方不在所谓的“赛道前沿”而在于它让感知结果第一次变成可以直接喂给规划控制模块的“结构化几何实体”。过去我们从感知拿到的是一堆点和框现在拿到的是带语义的、连续的、可参数化的三维模型。这个变化对系统集成的影响远比榜单上的精度数字要深远。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑