纯图像也能搞定3D开放词汇感知!POP-3D让机器“看懂3D+听懂人话”
先搞懂核心:POP-3D到底解决了什么问题?
核心目标:本文的目标是基于输入的2D RGB图像集合,预测环境的3D体素表示,以支持零样本语义分割或自然语言查询驱动的概念搜索等开放词汇任务:
- 这个格子是空的还是被物体占用的(占用预测);
- 被占用的话,它对应哪个物体(语义分类),而且这个物体可以是训练时没见过的(开放词汇)。
而它要解决的行业痛点的很直接:
- 成本高:不用激光雷达,仅靠相机就能实现3D感知;
- 标注难:训练时不用人工标注3D数据,靠LiDAR和预训练模型自动生成监督信号;
- 不灵活:支持自然语言查询,新增类别不用重新训练(比如想识别“施工锥”,直接输入文字就行)。
核心方法:3个模块+1个训练策略,搞定纯图像3D开放词汇感知
POP-3D的成功,关键在于“简洁又精准”的架构设计和三模态自监督训练。不用复杂的模块堆叠,核心就是“编码器+两个预测头”,再加上巧妙的训练方式。
1. 模型架构:2D转3D+双头输出,兼顾“占用判断”和“语言理解”
整个模型的输入只有2D环视图像(比如车顶上6个相机拍的画面),输出是3D体素的“占用状态”和“语言对齐特征”,架构分三部分:
2D-3D编码器(f3df3df3d):核心是把2D图像特征“升维”成3D体素特征。POP-3D用了TPVFormer作为骨干(之前专门做3D占用预测的强基线),能把多相机的2D画面,融合成一个密集的3D体素特征网格。
编码器f3D生成特征体素网格:
其中HV、WV和DV是体素网格的空间维度,CV是每个体素的特征维度。该特征体素网格随后被输入到两个不同的预测头。占用头(g):专门判断每个体素“空不空”。它是一个简单的非线性网络,输入3D体素特征,输出每个体素的“空/占用”概率。比如某个体素里有车的一部分,就会被预测为“占用”。
其输出张量为:
该头采用非线性网络实现,包含Nocc个隐藏块(结构为Linear-Softplus-Linear),每个隐藏块具有C个隐藏特征,最后通过线性分类器输出占用概率。3D语言头(h):让每个体素“懂人话”的关键。它把每个体素的视觉特征,转换成和自然语言对齐的特征(比如512维向量)。这个特征能直接和“车”“门”“轮胎”这些文字的特征做匹配——这也是“开放词汇”的核心:体素特征和语言语义绑在了一起。
其输出张量为
与占用头类似,3D语言头包含N个隐藏块(结构为Linear-Softplus-Linear),每个线性层输出C个特征,最后通过线性层输出每个体素的Cftout维视觉-语言嵌入。
2. 训练策略:三模态自监督,不用人工3D标注!
这是POP-3D最巧妙的地方:用“图像+LiDAR+语言”三种模态自动生成监督信号,完全不用人工标注3D数据。
占用头的监督:LiDAR自动标“空/占用”
训练时用LiDAR点云当“免费标注工具”:如果一个体素里有LiDAR点,就自动标为“占用”;没有的话标为“空”。
然后用交叉熵+Lovász-softmax损失训练,解决“空体素远多于占用体素”的类别不平衡问题。不用人手动标3D,LiDAR自己就能搞定。语言头的监督:MaskCLIP+提供“像素级语言特征”
语言头需要知道“哪个体素对应哪个文字语义”,但没法手动标,所以POP-3D用了预训练的MaskCLIP+:把LiDAR点投影到2D图像上,找到每个3D点在图像里的对应像素;
用MaskCLIP+提取这个像素的“语言对齐特征”(比如图像里“轮胎像素”的特征,已经和“轮胎”文字对齐了);
在图像Ic上运行语言-图像对齐特征提取器fI,并利用2D投影坐标从生成的特征图中采样:把这个2D像素特征,作为3D体素的“语言特征目标”,用L2均方误差损失训练语言头,让体素特征和像素语言特征对齐。
最终损失:训练整个网络的最终损失是占用损失和语言-图像损失的加权和,通过单一超参数λ平衡两个损失的权重:
3. 关键环节:3D开放词汇测试时推理(怎么“用”模型)
训练好的POP-3D,核心价值在于“开放词汇推理”——不用重新训练,输入文字就能完成3D语义分割或物体定位。具体分两个核心任务,步骤简单又直观:
(1)零样本3D语义分割:输入文字,自动给3D体素分类
比如想让模型在3D空间里分割“车、人、施工锥”(其中“施工锥”没训练过),步骤如下:
- 输入图像,得到基础输出:把环视图像喂给模型,占用头输出O_occ(每个体素“空/占用”),语言头输出O_ft(每个体素的语言对齐特征);
- 文字扩展,生成稳定特征:为了让模型更精准理解文字,用预定义模板扩展查询(比如“施工锥”扩展成“道路上的橙色警示锥”“临时交通锥”),把这些句子输入语言编码器,得到多个语言特征,再求平均——避免单个句子描述片面;
- 相似度匹配,给体素贴标签:对每个“被占用”的体素,计算它的O_ft特征和每个文字特征的相似度(比如“施工锥”文字特征和体素特征的匹配分数),把分数最高的文字类别贴给这个体素。
(2)语言驱动3D接地:输入文字,精准定位3D区域
比如想在3D场景里找“建筑门”“斑马线”,步骤更简洁:
- 筛选占用体素:从O_occ里挑出“被占用”的体素,忽略空体素;
- 单句查询,计算相似度:输入单个文字查询(比如“斑马线”),编码成语言特征,和每个占用体素的O_ft特征算相似度;
- 可视化或定位:相似度分数可以做成热力图(颜色越深,匹配度越高),也能设阈值筛选出目标区域——比如直接标出3D空间里“斑马线”对应的体素位置。
实验亮点
POP-3D的实验结果很有说服力,核心亮点就是“纯图像输入,干过带激光雷达或全监督的方法”:
占用预测超全监督:在nuScenes数据集上,类别无关的占用IoU(判断空/占用的精度)达到38.8,比全监督的TPVFormer高11.5个点——说明纯图像+自监督,在“找物体位置”上比依赖3D标注的方法还强。
零样本分割性能能打:不用标注3D语义,仅靠文字查询,就能实现3D语义分割,性能达到全监督方法的78%。比如想分割“车、人、树”,不用提前训练这些类别,输入文字就能自动标注3D体素。
开放词汇检索更精准:在自己构建的3D检索数据集上,mAP达到18.4,比直接把2D语言特征反投影到3D的MaskCLIP+高3.5个点。比如输入“建筑门”“轮胎”,模型能在3D空间里精准找到对应的区域,还能用热力图可视化。
推理时不用激光雷达:这是最实用的点!训练时用LiDAR生成监督信号,实际部署时只需要相机——成本直接降下来,普通车辆、机器人都能装。
实际应用:这些场景直接受益
POP-3D的核心优势是“低成本+高灵活”,所以应用场景特别广:
- 自动驾驶:不用激光雷达,仅靠环视相机就能识别道路上的新物体(比如施工锥、垃圾桶),输入“前方橙色警示锥”,就能3D定位并避让;
- 机器人导航:配送机器人在陌生小区里,输入“绿色垃圾桶”,就能精准找到位置投递;
- 3D场景检索:在3D城市模型里,输入“所有消防栓”,自动找出所有消防栓的3D坐标,用于城市设施盘点;
- 增强现实(AR):AR眼镜识别现实场景时,输入“会议室的门”,就能在3D空间里标注出门的位置,辅助导航。
局限性与未来方向
当然POP-3D也有不足:
- 体素分辨率较低,对小物体(比如钥匙、手机)的识别效果一般;
- 不支持图像序列输入,没法利用运动信息识别遮挡的物体;
- 文字查询的描述质量会影响结果,比如太简洁的描述可能导致匹配不准。
未来可以优化的方向:提升体素分辨率、加入时序信息、支持更细粒度的语言查询(比如“红色轿车的左后视镜”),甚至自动优化文字描述模板。