ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

O3N:自动驾驶开放词汇3D语义占据预测技术解析

O3N:自动驾驶开放词汇3D语义占据预测技术解析 1. 项目概述当自动驾驶“看见”并“理解”周围的一切最近和几个做自动驾驶感知的朋友聊天大家不约而同地提到了一个痛点现在的模型能“看见”障碍物但很难“理解”它到底是什么。比如前方有个物体模型能识别出它是一个“可通行区域”或“障碍物”甚至能给出一个“车辆”或“行人”的标签。但如果这个物体是“一个被风吹倒的垃圾桶”、“一辆抛锚的快递三轮车”或者“一片散落的建筑围挡”系统可能就懵了要么归类错误要么直接当成未知障碍物处理导致车辆做出过于保守甚至错误的决策。这正是“O3N: Omnidirectional Open-Vocabulary Occupancy Prediction for Urban Autonomous Agents”这个项目要解决的核心问题。简单来说它想让城市里的自动驾驶智能体不只是车也包括机器人等拥有一种更强大的“视觉理解”能力不仅能360度无死角地预测周围每个空间位置是否被占据Occupancy Prediction还能用开放词汇Open-Vocabulary的方式告诉你占据那个空间的“到底是什么东西”。这不再是传统的封闭集识别只能认出训练集里有的几十个类别而是像我们人类一样能用语言描述出看到的任何物体。结合“Lilian Weng”等研究者推动的“LLM Powered Autonomous Agents”热潮你会发现让智能体真正理解物理世界并用自然语言进行交互和推理正成为下一代自动驾驶系统的关键。O3N就是这个方向上一个非常扎实且具有前瞻性的技术方案。它试图为智能体构建一个既稠密每个3D空间点又语义丰富可自由描述的环境理解基础。2. 核心思路拆解如何实现“全向开放词汇占据预测”理解O3N我们可以把它拆解成三个关键词Omnidirectional全向、Open-Vocabulary开放词汇、Occupancy Prediction占据预测。这三者组合在一起构成了一个极具挑战性但又非常实用的技术目标。2.1 为什么是“Occupancy Prediction”而不是“Detection”传统自动驾驶感知以目标检测Detection和语义分割Segmentation为主流。检测给出的是“物体框”分割给出的是“像素级类别”。但它们都有局限检测框难以描述不规则物体如一堆垃圾分割的类别是固定的。而占据预测Occupancy Prediction近年来兴起它不关心物体边界只关心每一个3D体素Voxel或网格Grid是否被占据。这更接近物理世界的本质——对于规划和控制来说知道“这里能不能走”往往比知道“这里是什么”更直接。但纯几何的占据信息缺乏语义不利于高层决策比如同样是占据是应该绕行的卡车还是可以缓慢接近的人群。因此最新的趋势是“语义占据预测”Semantic Occupancy Prediction。O3N在此基础上更进一步要做“开放词汇的语义占据预测”这相当于把每个被占据的体素都打上一个可由自然语言描述的、无限可能的标签。2.2 “Omnidirectional”全向感知的技术实现路径对于城市自动驾驶智能体视野必须是无死角的。车顶的旋转激光雷达LiDAR提供了360度水平视野但垂直视野有限且点云稀疏环视摄像头Surround-View Cameras提供了丰富的纹理和颜色信息但受限于透视原理和遮挡。O3N的方案必然是多传感器融合。典型的输入包括环视图像6-8个摄像头覆盖水平360度。激光雷达点云提供精确的3D距离信息。可能还包括毫米波雷达用于补充恶劣天气下的测距能力。融合的难点在于如何将不同模态、不同坐标系、不同特征表示的数据统一到一个框架下。目前主流的方法是在BEV鸟瞰图空间或3D体素空间进行特征对齐和融合。O3N需要在这个统一的3D空间内预测每个体素的占据概率和开放词汇语义。注意这里的“全向”不仅指输入更指输出。模型最终需要生成一个以自车为中心的、覆盖周围360度、一定距离和高度范围的3D语义占据网格。这对于计算和内存是巨大挑战通常需要采用稀疏化表示如只处理可能被占据的体素或多尺度金字塔结构来优化。2.3 “Open-Vocabulary”开放词汇的基石视觉-语言模型这是O3N最具创新性的部分。如何让模型认识训练时从未见过的物体类别答案在于借助在大规模图文对上预训练好的视觉-语言模型Vision-Language Model, VLM例如CLIP、ALIGN等。这些VLM的核心能力是将图像和文本映射到同一个特征空间。对于一张图片VLM能提取出丰富的视觉特征对于一个文本描述如“a red tricycle”VLM能提取出对应的文本特征。在共享的特征空间里相似的概念距离更近。O3N的思路大概是这样的特征提取利用主干网络如ResNet、Swin Transformer从多视角图像中提取2D视觉特征。视角转换与融合通过基于深度或Transformer的方法将2D特征“提升”或“投射”到统一的3D体素空间并与LiDAR特征融合形成3D场景特征。开放词汇查询这是关键一步。模型不再有一个固定的分类器输出N个已知类别的概率而是将3D体素特征与一个庞大的“文本词典”进行相似度匹配。这个“文本词典”由无数个文本描述的特征组成可以是预先定义好的常见类别提示词“car”, “pedestrian”, “tree”的VLM文本特征。根据场景动态生成的文本描述这可能涉及LLM的辅助。甚至允许在线输入任意文本查询“find the emergency vehicle”。占据与语义解码模型最终为每个3D体素输出两个结果一个占据分数是否被物体填充和一个语义特征向量或与文本词典最匹配的类别。这个语义特征可以直接与VLM的文本特征空间对齐从而实现开放词汇识别。实操心得直接在整个高分辨率3D网格上对海量文本词典做全局匹配计算量是不可接受的。因此工程实现上会有大量优化例如只在被预测为“占据”的体素上进行语义匹配使用层次化的文本标签树或利用LLM对场景进行先验理解生成一小部分相关的候选文本描述进行匹配大幅缩小搜索空间。3. 模型架构与关键技术点深潜基于上述思路我们可以勾勒出一个O3N系统可能的架构蓝图。请注意以下是我根据当前多模态3D感知和开放词汇研究前沿推演的一个合理技术方案并非论文原文披露因为这是一个假设性项目标题。3.1 多模态3D特征构建模块这个模块负责将原始的、异构的传感器数据转化为一个统一的、富含信息的3D场景表示。2D图像特征提取每个环视摄像头图像通过一个共享权重的2D主干网络如VoVNetV2或EfficientNet-B7进行特征提取。输出是多尺度的2D特征图包含丰富的纹理、颜色和上下文信息。3D空间投影Lift这是将2D特征注入3D空间的关键。常用方法有基于深度的投影LSS, Lift-Splat-Shoot首先预测每个像素的深度分布然后将2D特征按深度概率“涂抹”到3D射线上的各个点形成“点云特征”。基于查询的TransformerBEVFormer, PETR在3D空间中定义一组可学习的查询Query每个查询通过可变形注意力Deformable Attention机制去参考所有2D图像特征图中相关的区域从而聚合出3D特征。这种方法对深度预测误差更鲁棒。对于O3N由于需要精细的3D体素语义可能采用“体素查询”直接在3D体素网格的每个格点设置一个查询通过注意力机制聚合多视角图像特征。LiDAR特征提取与融合原始LiDAR点云通过体素化Voxelization和3D稀疏卷积网络如SparseConvNet提取几何结构特征。得到的3D体素特征与从图像“提升”上来的3D特征进行融合。融合方式可以是简单的通道拼接Concat后接卷积也可以是更复杂的基于注意力的特征交互模块。输出该模块最终输出一个稀疏的3D特征体Sparse 3D Feature Volume。之所以是稀疏的是因为大部分空间是空的只对可能被占据的区域进行计算可以极大节省资源。每个非空体素位置都有一个高维的特征向量这个向量融合了视觉外观和几何结构信息。3.2 开放词汇语义解码器这是模型的核心创新模块其输入是上述的3D特征体输出是每个体素的占据概率和开放词汇语义。占据预测头一个轻量级的3D卷积或MLP网络以每个体素的融合特征为输入输出一个标量经过Sigmoid函数后得到该体素被占据的概率 ( o \in [0, 1] )。这本质上是一个3D二值分割任务。开放词汇语义头这是实现“Open-Vocabulary”的关键。该头部的目标是为每个体素生成一个语义特征向量这个向量应与视觉-语言模型VLM的文本特征空间对齐。方案A直接特征对齐。语义头将体素特征映射到一个与VLM文本特征维度相同的空间。在训练时我们利用有标注的3D数据集如nuScenes-LidarSeg但其标签是封闭集的如“car”。我们将这些类别名称如“car”通过VLM的文本编码器得到文本特征 ( T_{car} )然后强制让预测为“car”的体素其语义特征向量 ( S ) 与 ( T_{car} ) 在余弦相似度上接近。同时为了避免所有特征坍缩需要加入对比学习损失让不同类别的特征相互远离。方案B提示学习Prompt Learning。我们维护一个可学习的“提示词词典”例如对于“car”不是直接用“car”这个词而是用一个可学习的向量序列“[V1][V2]...car”作为文本输入VLM编码器。在训练中同时优化这些提示向量和语义头使得对齐效果更好。这能更好地适配VLM到3D感知任务。方案C生成式描述需LLM辅助。这是一个更前沿的思路。用一个轻量化的模块根据体素及其周围环境的特征生成一段对该区域的自然语言描述如“a silver sedan with its trunk open”。这需要引入一个预训练的文本解码器如T5的小型版本并在3D特征上进行训练。推理时可以直接读出描述。推理时的语义查询训练完成后在推理部署时对于任何一个被预测为占据( o 0.5 )的体素我们有其语义特征向量 ( S )。如果我们有预设的常见类别列表我们可以将这些类别的名称或优化后的提示词通过VLM文本编码器得到一组文本特征 ( {T_k} )然后计算 ( S ) 与每个 ( T_k ) 的相似度取最高者作为类别。这实现了封闭集识别但可轻松扩展类别只需修改文本列表。如果我们想实现真正的开放查询用户可以输入任意文本描述 ( Q )如“a dog running”我们计算 ( S ) 与 ( Q ) 的文本特征的相似度高于某个阈值的体素就被认为是匹配的。这实现了以文搜物。参数计算示例假设我们构建的3D网格范围是[-50m, 50m] in X, Y[-5m, 3m] in Z体素分辨率0.2m。那么网格尺寸为 (100/0.2) x (100/0.2) x (8/0.2) 500 x 500 x 40 10,000,000 个体素。如果每个体素特征维度是256全精度存储需要约10GB显然不可行。因此必须使用稀疏卷积和稀疏张量表示只存储和计算非空体素实际计算量可能只有1%-5%。3.3 训练策略与损失函数设计训练这样一个模型是复杂的需要精心设计损失函数。占据损失Occupancy Loss使用带权重的二元交叉熵损失Weighted BCE Loss或Focal Loss。由于场景中大部分体素是空的负样本需要给占据体素正样本更高的权重防止模型预测全部为空。权重可以根据数据集中正负样本的比例动态设定。语义对齐损失Semantic Alignment Loss这是实现开放词汇能力的核心。对比对齐损失Contrastive Alignment Loss对于一批训练数据我们有为数不多的已知类别标签。对于每个有标签的体素我们将其语义特征 ( S ) 与对应类别的文本特征 ( T_{pos} ) 拉近作为正样本对同时与同一批次内其他类别的文本特征 ( T_{neg} ) 推远作为负样本对。使用InfoNCE损失或类似变体。提示学习损失如果采用提示学习提示向量也作为可训练参数通过上述对比损失进行优化。几何一致性损失Geometric Consistency Loss可选但重要由于我们使用了多视角图像可以引入额外的自监督信号。例如强制要求从不同视角“提升”到同一个3D体素的特征应该是一致的。或者利用LiDAR点云作为占据真值的强监督同时利用图像特征进行语义补全。多任务训练通常采用分阶段或联合训练。例如先用一个大型3D数据集如Waymo Open Dataset预训练占据预测分支让模型学会准确的3D几何重建。然后在带有语义标签的数据集如nuScenes上联合训练占据分支和语义对齐分支。4. 数据、训练与部署的实战挑战理论很美好但把O3N这样的系统从论文搬到现实中间隔着无数个“坑”。这部分分享一些基于类似项目经验的实操要点。4.1 数据准备与标注的困境开放词汇模型的一大卖点是减少对精细标注的依赖但训练初期仍然需要高质量的数据。占据真值Occupancy Ground Truth获取稠密3D占据真值非常困难。激光雷达点云是稀疏的不能直接作为真值因为没扫到的地方不代表空。常用方法有多帧累积与动态物体移除融合连续多帧的LiDAR点云并利用目标跟踪信息移除动态物体形成相对完整的静态场景“扫描”。使用高清地图HD Map结合高精地图的先验信息如道路表面、路缘、建筑物立面等可以生成可靠的静态占据真值。基于深度学习的补全用一些学习型的方法从单帧或稀疏点云预测稠密占据但这本身就是一个难题。语义真值Semantic Ground Truth对于开放词汇训练我们至少需要一部分有类别标签的数据。现有的3D语义数据集SemanticKITTI, nuScenes提供了封闭集的标签。我们可以直接利用这些标签但需要将类别名称如“car”通过VLM编码器转化为文本特征作为监督信号。这里的一个技巧是进行标签文本增强例如“car”可以扩展为“a photo of a car”, “a vehicle on the road”, “a white car”等增加文本的多样性让模型对齐更鲁棒。数据流水线处理多传感器、时间同步、坐标系转换的数据流水线极其复杂。必须有一个强大的中间件如ROS2或内部框架来保证图像、LiDAR、GPS/IMU数据在时间和空间上的精确对齐。标定Camera-LiDAR extrinsic calibration的误差会直接导致特征融合失败。4.2 模型训练的技巧与调参学习率与优化器这种大型多模态模型通常使用AdamW优化器。由于有预训练的VLM组件其文本编码器通常冻结或微调需要为不同的参数组设置不同的学习率。主干网络和3D部分的学习率可以稍高如1e-4而VLM文本编码器如果微调学习率要设得非常低如1e-6到1e-5防止破坏其强大的语言先验知识。批次大小Batch Size由于3D体素表示非常消耗内存即使使用稀疏卷积批次大小也往往只能设为1或2。这会导致训练不稳定。可以采用梯度累积Gradient Accumulation技术即多次前向传播累积梯度后再更新一次参数来模拟大批次训练的效果。损失函数权重平衡占据损失和语义对齐损失的权重需要仔细调整。初期可以侧重占据损失让模型先学会准确的3D几何。后期再逐步提高语义对齐损失的权重。也可以采用动态调整策略如根据各自损失的下降情况自动调整。过拟合与泛化开放词汇模型的核心目标是泛化到新类别。要警惕模型只是记住了训练集中类别的视觉-文本对应关系而没有真正学会对齐的“概念”。除了使用数据增强3D旋转、缩放、随机丢弃点云等一个重要的技巧是在验证集上引入“新类别”进行测试。例如训练集中有“car”验证集中可以包含“fire truck”、“ambulance”等未见过的车辆类型看模型能否通过语义相似度正确归类。4.3 部署优化与实时性考量自动驾驶对实时性要求极高通常要求100ms以内完成感知-规划-控制的全链路。O3N模型计算密集必须进行深度优化。模型轻量化主干网络选择使用计算高效的2D主干如MobileNetV3、GhostNet和3D主干如MinkowskiEngine支持的轻量化稀疏网络。降低分辨率权衡精度和速度适当降低3D体素网格的分辨率如从0.2m降到0.4m或空间范围。知识蒸馏用一个大型的、精度高的教师模型O3N本身来训练一个小型的学生模型保留其开放词汇能力的同时大幅减少参数量和计算量。推理引擎优化TensorRT / ONNX Runtime将PyTorch模型转换为高度优化的推理引擎格式利用GPU的Tensor Core进行混合精度FP16/INT8推理能获得数倍的加速。稀疏卷积算子优化稀疏卷积是性能瓶颈。需要针对特定的硬件如NVIDIA GPU进行内核级优化或者使用像TorchSparse这样高度优化的库。流水线设计将感知模块流水线化。例如可以将占据预测计算量相对小和开放词汇语义查询计算量大解耦。占据预测以高频10Hz运行为规划提供即时避障信息开放词汇语义查询可以低频2-5Hz运行或仅在特定区域如规划路径前方进行用于高层决策和交互。5. 应用场景、问题排查与未来展望5.1 核心应用场景解析O3N输出的稠密、带开放语义的3D占据网格能为自动驾驶智能体带来质变。更安全、更拟人的路径规划传统规划器将障碍物视为“黑盒”。O3N提供了语义规划器可以做出更精细的决策。例如识别出是“草丛”或“低矮灌木”在确保安全的情况下可以缓慢压过。识别出是“人群”会触发更保守的跟车距离和更低的速度上限。识别出是“施工围挡”和“锥桶”可以提前理解并遵守临时交通规则。高阶场景理解与推理LLM-Agent交互这是与“LLM Powered Autonomous Agents”结合的关键。O3N输出的3D语义场景可以转化为一段自然语言描述“前方30米处有一辆抛锚的货车左侧车道有稀疏车流右侧是人行道”输入给车内的LLM智能体。LLM可以基于此进行常识推理、任务分解和决策。例如LLM可以指令“检测到紧急车辆请寻找安全区域靠边避让。”长尾场景处理这是开放词汇最大的价值。对于训练集中极少或从未出现的物体如“载着超宽家具的板车”、“庆典用的充气拱门”模型不再只能将其归类为“未知障碍物”而急刹而是可以通过语义特征匹配到“大型物体”、“临时障碍”等描述从而采取更合理、更平滑的应对策略。高精地图众包与更新车辆可以将感知到的静态物体如新的路灯、长期停放的集装箱及其开放词汇语义上传到云端用于众包更新高精地图使地图元素更加丰富和实时。5.2 常见问题与排查技巧实录在实际开发和测试中你可能会遇到以下典型问题问题现象可能原因排查思路与解决方案占据预测结果“支离破碎”物体不完整有很多空洞。1. 多视角图像特征融合不充分存在大量遮挡区域信息缺失。2. LiDAR与Camera外参标定不准。3. 占据损失中正样本权重过低模型倾向于预测为空。1.检查特征融合模块可视化不同视角投影到3D的特征看是否覆盖均匀。可尝试增强Transformer融合层的注意力头数或层数。2.重标定传感器使用标定板在多种距离、角度下重新标定并验证重投影误差。3.调整损失权重计算数据集中正负体素比例据此大幅提高正样本权重如1:100的比例正样本权重可设为100。开放词汇语义混乱同类物体被赋予完全不同、不相关的文本描述。1. 语义对齐损失未收敛或权重太低。2. 文本提示词Prompt设计不佳区分度不够。3. VLM文本编码器在微调时学习率过高破坏了预训练知识。1.监控对齐损失确保训练过程中对比损失在稳步下降。可以单独增加该损失的权重进行一段时间的训练。2.优化提示工程将简单的“car”改为“a photo of a car on the street”增加上下文信息。或采用可学习的提示向量。3.冻结或极低LR微调VLM在训练初期完全冻结VLM的文本编码器。后期如需微调学习率不应超过1e-5。模型推理速度极慢无法满足实时性要求。1. 3D体素网格分辨率过高或范围过大。2. 开放词汇语义查询与文本词典计算相似度是计算瓶颈。3. 未使用稀疏卷积或稀疏化程度不够。1.降低分辨率/范围进行消融实验找到精度和速度的平衡点。例如将Z轴范围从[-5,3]缩减到[-3,1]主要关注路面区域。2.优化语义查询a) 仅对高占据置信度的体素进行查询。b) 使用层次化聚类或近似最近邻搜索如Faiss库加速大规模文本特征匹配。3.检查稀疏性确保使用的3D卷积库如SparseConvNet, MinkowskiEngine正确配置并且输入数据是真正的稀疏张量。对新类别如“滑板车”的识别时好时坏。1. 模型在“车辆”和“行人”等大类上过拟合未能学到细粒度或跨类别的视觉-语言对齐。2. 训练数据中缺乏形态多样的物体。1.引入更细粒度的监督即使数据集中只有“vehicle”标签也可以在文本端使用更丰富的描述如“two-wheeled vehicle”, “motorcycle”, “scooter”等让模型隐式学习子类别的特征分布。2.数据增强与合成使用3D模型合成或数据增广技术在场景中插入更多样化的物体即使它们的语义标签是粗糙的也有助于提升泛化能力。5.3 个人体会与未来方向我个人在探索类似方向时一个很深的体会是O3N这类工作本质是在为自动驾驶系统构建一个“可查询的、语义化的3D场景记忆”。它不再是感知模块的终点而是成为了一个基础的空间语义数据库供规划、预测、交互等多个下游模块按需查询。从技术演进来看有几个明确的趋势从封闭集到开放世界O3N代表了这一方向。下一步是如何更好地利用互联网规模的图文-视频数据和3D合成数据来训练更强大的开放世界3D基础模型。多模态大模型的端到端融合未来可能不再需要分立的感知、预测、规划模块。一个以视觉、语言、激光雷达等多模态数据为输入以驾驶动作为输出的端到端大模型可能会成为新的范式。O3N可以看作是其中负责环境建模的关键子模块或中间表示。仿真与真实世界的闭环O3N模型可以在高保真仿真环境中进行海量、极端场景的训练和测试其输出的语义占据又可以用来构建更真实、更动态的仿真环境形成闭环。计算硬件的协同设计这类模型对算力要求极高。也许未来会有专为“3D稀疏视觉-语言计算”设计的AI芯片从硬件层面优化稀疏张量运算和注意力机制让O3N这样的技术能够实现在车载计算平台上。最后一个小技巧在项目初期不必追求完整的O3N系统。可以从一个简化的版本开始比如在BEV空间做开放词汇的2D语义分割验证视觉-语言对齐在驾驶场景的可行性。然后再逐步扩展到3D加入激光雷达模态。这种渐进式的路线能更快地获得反馈降低研发风险。毕竟让机器真正看懂世界我们才刚刚迈出第一步但这一步方向至关重要。
返回列表