查看原文
其他

特斯拉的Occupancy Network与立体双目

周彦武 佐思汽车研究 2023-06-06


之前有过一篇特斯拉的Occupancy Network的文章,不过还不够深入,本次我们对其进一步剖析。特斯拉的Occupancy Network最初应该是受到立体双目视觉路径规划的启发,立体双目视觉依靠视差图得到深度图,再用栅格占有法得到可行驶空间,这种方法针对任何障碍物均有效,实际立体双目不识别任何目标,当然任何障碍物在它看来都是一样的。特斯拉似乎是想用非立体双目达到这个效果。特斯拉主要是结合语义分割和Occupancy Network 3D重建来打造了自己的Occupancy Network。


特斯拉Occupancy Network的两个基础:
  • 一是2019年初的一篇论文《Occupancy Networks: Learning 3D Reconstruction in Function Space》,https://arxiv.org/pdf/1812.03828.pdf。第一作者是Tubingen大学自动驾驶视觉组,其中包括Andreas Geiger,奔驰集团赞助其研究立体双目的视觉分割,也曾是奔驰集团顾问;第二作者是德国ETAS,博世子公司,博世也是立体双目拥趸;第三作者是谷歌柏林AI小组。这篇论文得到了微软研究院和英特尔的赞助。
  • 第二个是NeRF,即 Representing Scenes as Neural Radiance Fields for View Synthesis,这就是特斯拉BEV灵感的主要来源,https://arxiv.org/pdf/2003.08934.pdf,作者来自UC巴克利大学。还有《VaxNeRF: Revisiting the Classic for Voxel-Accelerated Neural Radiance Field》对NeRF做了改进,作者主要是日本筑波大学的Naruya Kondo和Yoichi Ochiai,东京大学的Yuya Ikeda和Yutaka Matsuo。


Occupancy Networks最初的用意是取代VOXEL,详细可见https://rlschuller.github.io/onet_site/slides_no_copyright/slides.pdf,有详尽的对比。


图片来源:Occupancy Networks: Learning 3D Reconstruction in Function Space


3D重建的方法包括VOXEL(体素)、点云、Mesh。体素表示是直接将像素一般化的情况,随着分辨率的提高,这种方法的内存占用将会呈指数增长,因此限制了分辨率。这与室内机器人导航用的栅格占有法缺点类似,就是消耗大量内存,适用空间有限,只能在室内应用。使用适当的损失函数,点云和网格被引入作为深度学习的代替表示。但点云缺少底层网格的连接结构,从模型中提取3D几何需要额外的过程。现存网格的表示方法大多数是基于一个模板变形,因此不允许任意的拓扑结构。也就是说用激光雷达提取3D几何反而很困难,不如纯视觉来得好,这也是特斯拉不用激光雷达的原因之一。


要做3D重建,就需要两点,一是此点在空间中的位置,另一个是此点在关键点或者说3D点的边界。与VOXEL最大不同就是Occupancy Networks只关注对象表面的边界,它存储的是网格占据概率的模型,而非网格本身。然后用机器学习方式实现这种概率的推算,一个函数,它接受一个观察x作为输入,输出一个从点p到R的函数,这可以通过一个函数等价描述:一对(p, x)作为输入和输出一个实数。后一种表示可以用一个神经网络参数化,该神经网络以一对(p,x)作为输入,输出一个表示占用概率的实数:为了学习神经网络的参数,考虑在对象的三维边界体中随机采样点,对于第i个样本,采样K个点,然后评估这些位置的小批量损失Lb。


多分辨率等值面提取算法(MISE)获得表面重建。图片来源:Occupancy Networks: Learning 3D Reconstruction in Function Space


首先在给定的分辨率上标记所有已被评估为被占据(红色圆圈)或未被占据(青色方块)的点。然后确定所有的VOXEL体素已经占用和未占用的角落,并标记(淡红色),细分为4个亚体素。接下来,评估所有由细分引入的新网格点(空圆)。重复前两个步骤,直到达到所需的输出分辨率。最后使用marching cubes算法提取网格,利用一阶和二阶梯度信息对输出网格进行简化和细化。如果初始分辨率的占用网格包含网格内外各连通部分的点,则算法收敛于正确的网格。


预测每一个点被占用的概率,即该3D点是处于模型内部还是在模型的外面。通过采样多个点,就可以得到一个决定性表面,这种3D重建的表面非常光滑,整体性很强,没有突出。


这样的3D重建对于奇形怪状的物体非常有效,如隔离护栏、角锥,可以得到其几何结构的3D重建,这也是有些人拿特斯拉检测护栏来说明特斯拉似乎可以做到对障碍物的分类和形状完全不敏感,无法识别的障碍物也不在话下。然而,既然是深度学习,那么就有置信度,也就是说这个网格占有准确度是有限的,不可能达到100%置信度,一般在50%-90%之间;再有训练样本对其影响非常大,护栏、角锥的3D模型完全一致,几乎不会有什么偏差,但是行人、骑车(包括自行车、电动车、三轮车)、路边的树等等3D模型差别极大。这种方法应对静止的路上目标准确度应该还不错,应对移动目标,效果差,所以特斯拉会再加入语义分割。


语义分割可以看做是目标检测的升级,智能驾驶早期包括Waymo都是基于目标检测,近年来开始转向语义分割,因其更能发挥BEV的优点。


目标检测中,只有目标和非目标两种类别,且无论目标是任何形状,都需要一个长方体的Bounding Box,这样做有个明显的缺点,对于目标的外形高度敏感,Bounding Box框会有过多覆盖,准确度不高。再有就是对有遮挡的目标,Bounding Box会有重叠或不完整,比较难以表达3D环境。这就出现了语义分割。


典型的2D语义分割(左)与3D语义分割(右)

图片来源:Towards a Meaningful 3D Map Using a 3D Lidar and a Camera


再来说NeRF,(Neural Radiance Fields神经辐射场)最早是在2020年ECCV会议上的最佳论文中提出的概念,其将隐式表达推上了一个新的高度,仅用2D的posed images作为训练样本,即可表示复杂的三维场景。它要处理的任务是新视角合成。我们用一个直观的表述方式来理解它的作用,如下图所示,如果我们需要对图中的挖掘机进行新视角合成,首先我们会围绕挖掘机采集不同角度的图像,之后计算每个采集角度的相机位姿,将采集的图像序列以及它们对应的位姿送入到NeRF,就可以合成一些新的视角。


图片来源:知乎(联想上研)


也就是我们从空间中任意位置来看这个挖掘机,看到的图像应该是什么样的,NeRF可以合成出来。它与SFM(structure-from-motion)有点类似,SFM算法是一种基于各种收集到的多角度无序图片进行三维重建的离线算法。顾名思义就是从运动中(不同时间不同角度拍摄的图片集)恢复物体的三维结构。不过,SFM中最关键的深度估计比较消耗算力,准确度不高,输出的分辨率不高,容易出现孔洞或纹理混乱。NeRF就是用深度学习跳过深度估计这一难关。NeRF可以合成照片级别的新视角,重建的模型细节更加丰富,它通过使用稀疏的输入视图集优化底层连续的体积场景函数,实现了综合复杂场景视图的最好结果,无空洞、细节还原,且由于研究的人多,发展也尤为迅速,延伸出非常多的NeRF。


图片来源:NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis


对于一个待建的物体,首先我们会选定一个Bounding Box把待渲染的物体给包围起来,对于一张图片从视角到某个像素发射的一条射线而言,我们会在这条射线上采样很多点,每个黑点都有一个xyz表示它的位置。用一个MLP(Multilayer Perceptron,多层感知是一种前馈模型,其将输入的多个数据集映射到单一的输出的数据集上)神经网络去隐式地学习一个静态3D场景。

什么是隐式神经网络?以图像为例,其最常见的表示方式为二维空间上的离散像素点。但在真实世界中,我们看到的世界可以认为是连续的,或者近似连续。于是,可以考虑使用一个连续函数来表示图像的真实状态,然而我们无从得知这个连续函数的准确形式,因此有人提出用神经网络来逼近这个连续函数,这种表示方法被称为“隐式神经表示”(Implicit Neural Representation,INR)。对于图像,INR函数将二维坐标映射到RGB值。对于视频,INR函数将时刻t以及图像二维坐标xy映射到RGB值。对于一个三维形状,INR函数将三维坐标xyz映射到0或1,表示空间中的某一位置处于物体内部还是外部。当然还有其他形式,如NeRF将xyz映射到RGB和sigma。总而言之,这个函数就是将坐标映射到目标值。一旦该函数确定,那么一个图像/视频/体素就确定了。


MLP网络的输入就是Bounding Box中所有黑点的五个自由度。对于每个采样点,MLP网络会计算出这一点的颜色和密度,密度可以理解为这个点在这条射线方向上的一个不可见度。每个点的密度只和xyz有关,而每个点的颜色除了和点的位置有关还与观察的视角有关。之后通过volume rendering渲染出像素的颜色,和真实的颜色算误差,就可以训练网络。早期NeRF只能针对静态场景,且速度很慢,后来得到改进,出现了Mip-NeRF、NeRF++、Mip-NeRF-360、NeRF-W、Block-NeRF、Urban-NeRF、CityNeRF等一堆NeRF。


通常NeRF输出是SDF体素网格(mesh)模型,Occupancy Networks提出了超VOXEL模型,NeRF特别适合AR,BlockNeRF等工作可以重建城市级别的逼真场景,也可以对场景进行不同条件下的光照渲染。可以用NeRF技术来构建整个城市的三维模型,作为元宇宙的数字地图,也可以作为游戏地图。


NeRF的核心不是深度学习,而是渲染方程,这个体积渲染方程其实就是将射线上每个点的颜色,不透明度,光,还有距离进行了一个整合处理。于是有人提出了Plenoxels,抛弃神经网络,用梯度下降法,在GPU上速度提高100倍。


图片来源:A Look at Tesla's Occupancy Networks


特斯拉用基础一里的Occupancy Network输出第一个occupancy volume,用基础二的NeRF输出一个时间序列的Occupancy Flow,然后下取样,最终获得一个4D Occupancy,第四个纬度就是时间。


图片来源:Tesla AI Day 2022


整体总结,特斯拉的特征提取依然沿用 RegNet + BiFPNs 的网络结构。然后采用3D空间位置编码的query,利用transformer的网络结构将2D特征恢复为3D 空间特征。在恢复空间特征后,特斯拉采用Temporal Alignment将不同时序的特征,对齐后融合。进而采用反卷积上采样,恢复高分辨率。最后加了语义分割。


第一层Volume Outputs相当于NeRF的预测隐式重建预测(颜色,密度)相当于完成了NeRF的第一步(MLP学习该场景的3D模型表达)。然后采用NeRF的第二步,采用3D模型到固定视角2D成像的渲染,特斯拉GPU很弱,AI很强,考虑到真实环境的噪音问题,特斯拉应该不会用Plenoxels。


图片来源:Tesla AI Day 2022


为了保持基础一和基础二网络的一致性,特斯拉必须加上语义约束,而不仅仅是RGB,这种方式也有叫Semantic NeRF,也有叫Neural Semantic Fields NeSF。这种方式最大的好处是训练数据集不需要太多标注,弱监督学习即可,因为有2D posed image 推理几何信息和 radiance 信息,并且这种隐式表达光滑、紧致、连续,理论上可以达到任意精度,让语义分割边界锐利度很高,准确度很高。


中国浙江大学的几位同学和Andreas Geiger联合发表了一篇论文,与特斯拉的Occupancy Network不相上下,《Panoptic NeRF: 3D-to-2D Label Transfer for Panoptic Urban Scene Segmentation》https://arxiv.org/pdf/2203.15224.pdf


图片来源:Panoptic NeRF: 3D-to-2D Label Transfer for Panoptic Urban Scene Segmentation


下图是Panoptic NeRF方法。


图片来源:Panoptic NeRF: 3D-to-2D Label Transfer for Panoptic Urban Scene Segmentation


下图是语义引导几何优化。


图片来源:Panoptic NeRF: 3D-to-2D Label Transfer for Panoptic Urban Scene Segmentation


特斯拉这种做法对数据集要求更高了,不仅要求道路的数据集,还要求有路边静态目标如建筑的数据集,虽然标注可以简单点,不用精细标注,但数据量扩大了,总体工作量估计还是一样。再有就是多个多层神经网络太复杂,本来就缺乏可解释性,这下子万一出现问题,很难找出问题所在。后续特斯拉会用魔法打败魔法,继续增加复杂程度,特别是时序、光流等方面的信息,至于效果如何,没法评估,如同炼丹,持续增加炼丹的原料种类或配比或改造丹炉。对CPU算力或浮点算力而非AI算力要求也会越来越高,因为越来越多的纯几何算法会加入。


特斯拉的Occupancy Network不是特斯拉独创,而是近期智能驾驶算法的总结,不必妄自菲薄,特斯拉能做的,国内企业甚至大学也能做到。


免责说明:本文观点和数据仅供参考,和实际情况可能存在偏差。本文不构成投资建议,文中所有观点、数据仅代表笔者立场,不具有任何指导、投资和决策意见。

更多佐思报告


报告订购及合作咨询联系人:
符先生:15810027571(同微信)

佐研君:18600021096(同微信)

佐思2023年研究报告撰写计划

智能网联汽车产业链全景图(2023年4月版)


智能驾驶Tier1前10强对比汽车电子代工汽车数字钥匙
车用超声波雷达舱泊一体汽车MCU研究
舱驾融合智能座舱平台汽车CIS研究
自动驾驶融合算法自动驾驶SoC汽车VCU研究
座舱SoC传感器芯片高精度定位
AI大模型及自动驾驶智算中心电源管理芯片高精度地图
自主品牌主机厂自动驾驶自动驾驶与座舱域控制器冗余系统
合资品牌主机厂自动驾驶汽车视觉(国内)车载存储芯片
ADAS与自动驾驶Tier1-国内汽车视觉(国外)汽车网关
ADAS与自动驾驶Tier1-国外汽车视觉算法数据闭环研究
ADAS域控制器关键组件车载摄像头Tier2汽车功能安全
多域计算和区域控制器环视市场研究(本土篇)汽车信息安全硬件
乘用车底盘域控环视市场研究(合资篇)汽车信息安全软件
域控制器排名分析红外夜视无线通讯模组
E/E架构自动驾驶仿真(国外)汽车5G融合
L4自动驾驶自动驾驶仿真(国内)800V高压平台
L2/L2+自动驾驶激光雷达-国内篇燃料电池
合资品牌主机厂车联网激光雷达-国外篇一体化电池
自主品牌主机厂车联网激光雷达核心部件一体化压铸
自动驾驶重卡毫米波雷达汽车操作系统
商用车ADASRadar拆解数字仪表OS
商用车智能座舱激光和毫米波雷达排名线控底盘
商用车车联网矿山自动驾驶滑板底盘
商用车智能底盘无人接驳车电控悬架
智能座舱Tier1无人配送车转向系统
座舱多屏与联屏无人零售车研究智能转向关键组件
智能座舱设计农机自动驾驶线控制动研究
仪表和中控显示模块化报告充换电基础设施
智能后视镜V2X和车路协同汽车电机控制器
行车记录仪路侧智能感知混合动力报告
汽车UWB研究路侧边缘计算汽车PCB研究
HUD行业研究汽车eCall系统IGBT及SiC研究
手势交互汽车EDR研究EV热管理系统
舱内监控智能汽车个性化汽车功率电子
OTA研究汽车多模态交互电驱动与动力域
汽车云服务研究车载语音汽车线束
AUTOSAR研究车载天线汽车音响
软件定义汽车TSP厂商及产品汽车座椅
软件供应商自动驾驶法规汽车照明
乘用车T-Box自动驾驶标准和认证汽车镁合金压铸
商用车T-Box智能网联测试基地智能表面
T-Box排名分析车企数字化转型飞行汽车
车型供应商调研理想L8/L9功能拆解PBV及汽车机器人
蔚来丰田长城车机和座舱域控拆解蔚来ET5/ET7智能化功能拆解行泊一体研究
大疆前视双目与图达通激光雷达拆解小鹏G9功能拆解智能玻璃
智慧停车研究


佐思研究月报 ADAS/智能汽车月报 | 汽车座舱电子月报 | 汽车视觉和汽车雷达月报 | 电池、电机、电控月报 | 车载信息系统月报

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存