--关注、星标、回复“自主泊车”--
对比Mobileye和特斯拉,两者做事风格截然不同。Mobileye有着十几年的积累,可靠性经过了市场和时间的验证,传统大厂无一例外都会选择Mobileye,但同时意味着有资产包袱,不舍得放弃以前的研究成果,难接受新的研究方向与潮流变化,对学术界的东西似乎完全不在意。特斯拉则是博采各家所长,时刻关注着学术界的最新动向,发现有好的技术点就努力将其落地,始终走在技术最前沿。
Mobileye在L2领域占据绝对霸主地位,市场占有率超过70%,特斯拉则是智能驾驶技术的引领者。对于感知任务,核心就是建立一个3D的周边环境模型,即3D场景重建,这也是L2与L2+系统的本质区别。L2的目的是避免碰撞,遇到可能发生的碰撞就刹车或减速,而L2+系统是自主驾驶,遇到可能发生的碰撞时,通过对周边3D场景重建,找到可行驶空间Freespace绕开障碍物,而不是减速或刹车。3D场景重建的最佳表征形式是BEV即鸟瞰,很多时候BEV几乎等于3D场景重建。
3D场景重建最佳解决办法是立体双目,即基于Depth Map的3D重建。立体双目可以准确测量出深度信息,但除了博世、奔驰、丰田这些大厂外,双目的标定和立体匹配是无法跨越的难关,包括特斯拉和Mobileye。还有一个原因是新兴造车在单目上累积了丰富的知识产权,跳到立体双目领域意味着这些累积都作废了,这是最核心资产的严重流失。
特斯拉和Mobileye的思路都是用单目做3D重建,常见方法有SfM和Transformer。此外3D场景重建还可以基于点云、VOXEL和MESH。
SfM(Structure From Motion)是最经典技术路线,通过使用诸如多视图几何优化之类的数学理论从2D图像序列中确定目标的空间几何关系,以通过相机移动恢复3D结构。SFM方便灵活,但在图像序列采集中遇到场景和运动退化问题。根据图像添加顺序的拓扑结构,可以将其分为增量/顺序SFM、全局SFM、混合SFM和分层SFM。此外,还有语义SFM和基于深度学习的SFM。步骤包括1.特征提取(SIFT、SURF、FAST等方法);2.配准(主流是RANSAC和它的改进版;3.全局优化bundle adjustment用来估计相机参数;4.数据融合。
Mobileye的SuperVision
Mobileye的multi-view stereo实际就是SFM的另一种说法,Mobileye还给它取了另一个名字Vidar或者叫伪激光雷达,这就是SuperVision的核心。
Mobileye的SuperVision,7个800万像素摄像头
7个摄像头联合得到的3D场景重建
伪激光雷达
VIDAR就是multi-view stereo
Mobileye的SFM还混合了REM和视觉道路模型
SuperVision也可以得到BEV视角,不过不像特斯拉那样高精细度,特斯拉的所谓Occupancy Grid,Mobileye也有使用。当然,大部分情况下还是非BEV视角。
SFM的优点是设计简单,有些类型的SFM可以用非深度学习算法,对算力需求很低,即使深度学习算法,因为还是参数量不到千万的CNN,对算力需求还是很低。不过SFM精度不高,特别是大范围场景或者说远距离使用困难,因为一个大场景环境是很复杂的,如各种物体、多样的光照、反光表面,还有不同焦距、畸变和传感器噪声的多样摄像机。许多先前的方法采用多视角深度估计(MVS)来重建场景,预测每一帧图像的稠密深度图,这种depth-based方法可以估计准确的局部几何形状,但需要额外的步骤来融合这些深度图,例如解决不同视角之间的不一致性,这相当困难。Mobileye的解决办法是使用高像素摄像头,7个摄像头都是8百万像素,像素越高,有效距离越远。
再有就是SFM准确度有限,为了从多个输入视图中学习有效的3D表示,大多数基于CNN的方法遵循分而治之的设计原则,其中通常的做法是引入CNN进行特征提取和融合模块来集成多个视图的特征或重建得到。尽管这两个模块之间有很强的关联,但它们的方法设计是分开研究的。另外,在CNN特征提取阶段,很少研究不同视图中的目标关系。虽然最近的一些方法引入了递归神经网络(RNN)来学习不同视图之间的目标关系,但这种设计缺乏计算效率,而且RNN模型的输入视图是对顺序变化敏感的,难以与一组无序的输入视图兼容。
轮到特斯拉的BEVFormer闪亮登场了,BEV一直存在,BEV视角下的物体,不会出现图像视角下的尺度(scale)和遮挡(occlusion)问题。由于视觉的透视效应,物理世界物体在2D图像中很容易受到其他物体遮挡,2D感知只能感知可见的目标,而在BEV空间内,算法可以基于先验知识,对被遮挡的区域进行预测。再有就是BEV视角下,感知和决策规划有机地融为一体,依靠Freespace或者说Occupancy Grid提供直接路径规划,无需中间计算环节,速度和准确度都大幅提升。
BEV可以分为基于深度/几何信息的和基于深度学习的两大类。
基于深度/几何信息的 BEV 是正向思维,采用自底向上、从2D 到3D 的方式,先在2D视角预测每个像素的深度再通过内外参投影到 BEV空间通过多视角的融合生成BEV特征,但对深度的估计一直都是难点。不过激光雷达和双目都可以提供准确的深度信息完全不是难点。纯单目的方式典型代表就是SFM,用SFM 推测深度信息。Mobileye 可以用SFM 做出BEV,但目前来看还似乎是没有使用,还是2D 平视。
基于深度学习的 BEV是逆向思维,采用自顶向下、从3D到2D 的方式,先在 BEV 空间初始化特征,再通过多层transformer 与每个图像特征进行交互融合,最终再得到 BEV特征。这就是特斯拉的BEVFormer。
早期自动驾驶研究阶段都是头顶64线或128线360度Velodyne机械激光雷达,就是为了制造BEV视角,但是要到落地阶段,Velodyne的64线或128线激光雷达显然无法商业化。
激光雷达制造的BEV
于是才有了纯摄像头的BEV。BEV是连接时空的理想桥梁。对于人类视觉感知系统来说,时间信息在推断目标的运动状态和识别遮挡目标方面起着至关重要的作用,视觉领域的许多工作已经证明了视频数据的有效性。然而,现有最先进的多摄像头3D检测方法很少利用时间信息。应用Transformer(空域)结构和Temporal结构(时域)从多摄像头输入生成鸟瞰图(BEV)特征。BEVFormer利用查询查找空域和时域,并相应地聚合时-空信息,有利于实现感知任务的更强表征。
Transformer是一种基于注意力机制(Attention)的神经网络模型,由Google在2017年提出。与传统神经网络RNN和CNN不同,Transformer不会按照串行顺序来处理数据,而是通过注意力机制,去挖掘序列中不同元素的联系及相关性,这种机制背后,使得Transformer可以适应不同长度和不同结构的输入。利用多个无序输入之间的自注意力来探索视图到视图的关系。将多视图3D重建问题重新表述为一个序列到序列的预测问题,并将特征提取和视图融合统一在单个transformer网络中。
另一方面,在Transformer模型中,自注意力机制在任意数量的输入标记内显示出其学习复杂语义抽象的强大能力,并且自然地适合于探索3D目标不同语义部分的视图到视图关系。鉴于此,transformer的结构成为多视图3D重建最吸引人的解决方案,transformer配合语义分割有更好的效果,传统的CNN也有不错的3D重建。
BEVFormer整体架构
需要指出BEVFormer有两个概念,一个是南京大学、上海AI实验室和香港大学提出的,见论文《BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers》,另一个是人们根据特斯拉AI日中的介绍,认为特斯拉的感知结合了BEV和Transformer,因此称其为BEVFormer。特斯拉不会公布自己的源代码,而《BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers》内附源代码。
特斯拉自己对BEV + Transformer的叫法应该是Multi-Cam Vector Space Predictions。
其内部构造可以参考FACEBOOK的论文《End-to-End Object Detection with Transformers》
特斯拉图像到BEV的Transformer
特斯拉视觉系统整体架构,BEV+Transformer也就是第二层的Multi-cam Fusion+矢量空间。
特斯拉的第一层的BiFPN也值得一提。BiFPN当然也不是特斯拉创造的,它的详细理论参见论文《EfficientDet: Scalable and Efficient Object Detection》,作者是谷歌大脑研究小组。
BiFPN准确率很高,消耗算力比传统的ResNet要低很多。
Mobileye的算力不高,不是AI算力不高,CPU算力也不高,GPU几乎为零,因此Mobileye将环境模型分成4部分,降低计算密度。
针对4个子目录有不同的处理技术
这其中的语义分割和特斯拉的Occupancy Grid基本一致,只是特斯拉是基于BEV视角的。
Mobileye的语义分割,Mobileye早在2018年就提出此项技术并于2019年商业化落地,技术实力还是很不错的。
表面上看,特斯拉和Mobileye的SuperVision的思路一致,但Transformer的使用让特斯拉明显远比Mobileye要强大,不过一代FSD或者说HW3.0能跑BEVFormer吗?典型的NLP用Transformer参数是10亿个,针对视频的可能会有20亿个,按照汽车行业惯用的INT8格式,意味着Transformer模型大小是2GB。特斯拉初代 FSD 使用的 LPDDR4,型号是MT53D512M32D2DS-046 AAT,容量为16Gb,总共 8 片,I/O 频率 2133MHz,其带宽为 2.133*64/8,即 17.064GB/s,由于DDR是双通道,所以带宽是34.12GB/s,这里非常抱歉,以前的算法有错误(错误照搬了英伟达的张量并行模式),严重高估了内存带宽。
顺便指出像ChatGPT这种大模型,英伟达是采用张量并行的方式计算,因此如果是8张H100显卡,英伟达是将权重模型一分为8,等同于内存带宽增加了8倍,但是张量并行是针对多张显卡服务器设计的,对于车载领域,Transformer还未听说用张量并行的,张量并行也是英伟达独创的。内存带宽仅有34.12GB/s是无法流畅运行Transformer的,因为每分钟单单读入权重模型的次数最高也不过17次,还未包括处理数据的时间和路径规划所需要的时间,而智能驾驶需要帧率至少是每秒30帧,也就是每秒30次以上计算,那么内存带宽至少要能支持每秒60次读入,也就是带宽要增加3倍以上。
不仅是内存带宽,Transformer不仅对AI算力需求大,对CPU的标量算力需求也大,初代FSD仅有12个ARM Cortex-A72,这是不够的。二代FSD或者说HW4.0用了昂贵的GDDR6,带宽大幅增加,CPU核心也从12个增加到20个,勉强可以跑Transformer。不过GDDR6虽然带宽高,但速度低,用在CPU领域并不合适。
服务器领域内存是分开的,CPU用强调速度的DDR5,GPU用强调带宽的HBM3。但汽车领域是CPU+GPU(AI),一般厂家都选择LPDDR5(LP是低功耗的意思),照顾CPU更多,特斯拉为了强调AI算力,用了GDDR6。
初代FSD可能还上不了BEVFormer,与Mobileye的SuperVision效果相比,Mobileye的像素远高于初代FSD,有效距离更远,安全系数更高。但二代FSD就目前来看,是可以全面胜过SuperVision的,不过即使是美国市场,二代FSD估计也要等到2024年才会上市,中国市场估计要到2025年甚至2026年,届时Mobileye或许也有技术升级。
转载自佐思汽车研究,文中观点仅供分享交流,不代表本公众号立场,如涉及版权等问题,请您告知,我们将及时处理。
-- END --