01感知:构建实时4D自动驾驶场景1.特斯拉摄像头布局特斯拉摄像头视野覆盖车身周围360°,120°前向鱼眼,长焦镜头用于加强观察,布局如上图。2、Tesla图像数据预处理Tesla使用36Hz1280*960-12bit图像原始数据,比8位ISP后处理数据多了4位信息,动态方向扩展了16倍。特斯拉这样做有两个原因:1)ISP基于规则的算法对原始信号进行自动对焦(AF)、自动曝光(AE)、自动白平衡(AWB)和死点校正(DNS),HighDynamicRangeImaging(HDR)、ColorCorrection(CCM)等这些满足了人眼的可视化需求,但不一定满足自动驾驶的需求。与基于规则的ISP相比,神经网络的处理能力更加强大,可以更好地利用图像的原始信息,同时避免ISP带来的数据丢失。2)ISP的存在不利于高速数据传输,影响图像帧率。将原始信号的处理放在网络运行中,速度要快得多。该方法绕过传统的ISP-likeexpertise,直接从后端需求驱动的网络中学习更强的ISP能力,可以增强系统在弱光和低能见度条件下超越人眼的感知能力。基于这个原理,利用激光雷达和雷达的原始数据进行网络拟合应该是更好的方式。3.backbonenetwork:DesigningNetworkDesignSpacesRegNetTesla使用了比ResNet抽象层次更高的RegNet,解决了NAS搜索设计空间(卷积、池化等模块:连接组合/训练评估/择优)的缺点固定且无法创建新模块的特性可以创建新颖的设计空间范式,并可以探索更多场景以适应新的“ResNet”,从而避免需要研究和设计神经网络架构。如果有更好的BackBone出来,这部分可以更换。4.neckwork:EfficientDet:ScalableandEfficientObjectDetectionBiFPNPANet比FPN更准确是因为:在FPN自上而下的单路径流的基础上,增加了一个额外的自下而上的路径流,这也带来了更高的参数。和计算;BiFPN去除了只有一个输入(最上层和最下层)的节点,因为网络的目的是融合特征,所以没有融合能力的节点可以直接连接。BiFPN直接将输入连接到输出节点,在不增加计算量的情况下融合了更多的特征。BiFPN将基本结构多层叠加,可以融合更高纬度的特征。FPN->BiFPN5.BEVFusion:FSD感知的空间理解能力。二维感知。在BEV出现之前,自动驾驶感知的主流解决方案是基于摄像头的2DImageSpace,但是感知的下游应用——决策和路径规划都在车辆所在的2DBEVSpace中位于,感知和监管之间的障碍阻碍了FSD的发展。为了消除这个障碍,需要将感知从2D图像空间重新排列到2D自我车辆参考框架空间,即BEV空间。基于传统技术:IPM(InversePerspectiveMapping)会被用来假设地面是一个平面,利用camera-self-vehicleexternalreference将2DImageSpace转换成2Dself-vehiclespace,即即,BEV鸟瞰空间。这里有一个明显的缺陷:面对道路的起伏和起伏,平面假设不再有效。多相机拼接问题由于每个相机的FOV有限,即使借助IPM将2DImageSpace转换为2DBEV空间,仍然需要解决多相机图像的BEV空间拼接。这其实需要高精度的多摄像头标定算法,以及在线实时校正算法。综上所述,需要实现的是将多摄像头二维图像空间特征映射到BEV空间,同时解决由于标定和非平面假设导致的变换重叠问题。Tesla基于Transformer的BEVLayer的实现:BEV_FUSION首先通过CNN骨干网络和每个摄像头中的BiFPN提取多尺度特征层。一方面,多尺度特征层通过MLP层生成Transformer方法中需要的Key和Value。另一方面,对多尺度FeatureMap进行GlobalPooling操作,得到全局描述向量(即图中的ContextSummary)。同时通过光栅化目标输出BEV空间,然后对每个BEV光栅的位置进行编码,将这些位置编码与全局描述向量拼接(Concatenate),再通过一层得到Transformer需要的QueryMLP层。在CrossAttention操作中,Query的尺度决定了最终BEV层之后的输出尺度(即BEV网格的尺度),Key和Value分别在2D图像坐标空间中。根据Transformer的原理,每个BEV网格接收2D图像平面像素的影响权重,从而建立BEV与输入图像的关系,然后用这些权重对得到的Value进行加权图像平面下的特征,最终得到BEV坐标系下的FeatureMap。完成BEV坐标转换层的任务后,可以使用成熟的基于BEV下FeatureMap的感知函数头,直接在BEV空间进行感知。BEV空间中的感知结果与决策规划的坐标系统一,因此通过BEV变换将感知与后续模块紧密联系起来。Calibration通过这种方法,实际上是在训练过程中,相机外部参数和地面几何形状的变化被神经网络模型内化到参数中。这里的一个问题是,使用同一组模型参数的不同汽车的相机外部参数存在细微差异。Karparthy在AIDay上为特斯拉添加了一种处理外参数差异的方法:他们使用标定后的外参数,将每辆汽车采集到的图像通过去畸变、旋转等方式统一转换到同一组虚拟标准摄像头布局位置,和失真恢复方法,从而消除了不同车载摄像头外部参数的细微差异。BEV方法是一种非常有效的多相机融合框架。通过BEV解决方案,跨多个难以正确关联的大型附近目标的尺寸估计和跟踪变得更加准确和稳定。该方案也使得算法对一个或多个摄像机的短期遮挡和丢失具有更强的鲁棒性。简而言之,BEV以更高的鲁棒性解决了多摄像头图像融合拼接问题。解决了多摄像头车道线和边界融合障碍物变得更稳定(从PPT来看,特斯拉最初的解决方案应该主要是使用前向摄像头进行感知和车道线预测。)6.VideoNeuralNetArchitecture:使用time-spacesequenceFeaturetobuildBEV从多摄像头分散的2DImageSpace提升感知到2DBEV空间,但是自动驾驶的实际环境是4D空间的问题,即使不考虑仰角,还是缺一个维度是时间。特斯拉通过使用带有时间信息的视频片段而不是图像来训练神经网络,从而使感知模型具有短期记忆的能力。实现该功能的方法是在神经网络模型中引入时间维度和空间维度的特征队列。.规则:每27毫秒推送队列或每1米距离将与运动信息一起缓存在视频序列中。对于如何融合时序信息,特斯拉尝试了三种主流方案:3D卷积、Transformer和RNN。这三种方法都需要结合车辆运动信息和单帧感知。Karparthy表示,车辆运动信息仅使用包括速度和加速度在内的四维信息。这些运动信息可以从IMU中获取,然后与BEV空间结合。FeatureMap(20x80x256)和PositionalEncoding结合(Concatenate)形成一个20x80x300x12维的特征向量队列,其中第三维由256维视觉特征+4维运动学特征(vx,vy,ax,ay)和40维的位置编码(PositionalEncoding)组成,所以300=256+4+40,最后一个维度是降采样后的12帧时间/空间维度。3DConv、Transformer、RNN都可以处理序列信息。三者在不同的任务中各有优缺点,但大多数时候使用哪种解决方案差别不大。不过Karparthy在AIDay上分享了另外一个简单有效的,效果很有意思。可解释的方案称为空间RNN。与以上三种方式不同,SpatialRNN本来是串行处理序列信息的,帧与帧之间的序列是保留的,所以可以直接馈入RNN网络而不用编码BEV视觉特征的位置,所以可以看到这里输入的信息仅包括20x80x256BEV视觉特征图和1x1x4自我运动信息。CNN中的空间特征通常是指图像平面的宽度和高度维度上的特征。这里,SpatialRNN中的Spatial是指某一时刻基于BEV坐标的局部坐标系中的二维。这里用LSTM的RNN层来说明。LSTM的优点是可解释性强。这里作为例子来理解比较合适。LSTM的特点是HiddenState可以保留变长的前N个时刻状态的编码(即短时记忆),然后当前时刻可以判断需要使用哪部分记忆状态通过输入和隐藏状态需要使用哪一部分。遗忘之类的。在SpatialRNN中,HiddenState是一个比BEV网格空间大的矩形网格区域,大小为(WxHxC)(见上图,WxH大于BEV大小20x80),车辆的运动学信息决定前后BEV功能分别。格子的哪一部分受到影响就是HiddenState,这样连续的BEV数据会不断更新HiddenState的大矩形区域,每次更新的位置与车辆的运动一致。经过不断的更新,形成了一个类似于局部地图的HiddenStateFeatureMap,如下图所示。时序队列的使用赋予了神经网络在帧与帧之间获取连续感知结果的能力。与BEV结合后,FSD具备盲点和遮挡处理能力,选择性读写本地地图。正因为有了实时本地地图构建的能力,FSD才能够在不依赖高精地图的情况下,在城市中进行自动驾驶。不仅具备3D地图能力,还具备局部4D场景构建能力,可用于预测等。Occupancy出来之后,一般认为上面的transformer方案是在SpatialRNN的基础上改的。7.OccupancyNetwork:BEV从2D到3DBEV的2D鸟瞰图,显然离真正自动驾驶所面临的3D场景还有一定距离,所以一定会出现BEV2D在某些场景下感知失败的情况。2021年,特斯拉具备深度打造的能力,从2D走向3D只是时间问题。2022年会带来OccupancyNetwork,这是BEV网络在高度方向上的进一步扩展。将2D网格位置编码生成的Query升级为3D网格位置编码生成的Query,并将BEVFeature替换为OccupancyFeature。在CVPR2022上,Ashork给出了使用OccupancyFeature而不是image-baseddepthestimation的原因:1)近处深度估计还可以,但是远处深度不一致,距离越近地面,深度值点较少(受限于图像的成像原理,20m外一个像素所代表的纵向距离可能超过30cm),数据难以被后续的规划过程所利用。2)深度网络是基于回归构建的,很难通过遮挡进行预测,所以在边界上很难预测,可能从车辆平滑过渡到背景。使用Occupancy的优点如下:Occupancy的优点1)在BEV空间生成一个统一的体素,可以预测任意体素的占用概率2)获取所有摄像头的视频流并统一(没有lidar-camerafusion问题,信息的维度比激光雷达更高)3)可以实时预测被遮挡物体的状态(Occupancy的动态描述能力是从3D到4D的过渡)4)可以为每个体素生成对应的语义类别(图像识别能力比激光雷达强很多)即使不识别类别也可以处理移动物体5)可以预测每个体素的运动状态,并对随机运动建模6)每个位置的分辨率可以调整(即具有BEVSpacezoom能力)7)得益于Tesla的硬件,Occupancy具有高效的存储和计算优势8)可以在10ms内完成计算,处理频率可以非常高(36Hz图像输出能力已经强于10Hz激光雷达频率)与boundingbox感知方案相比,Occupancy方案的优点是可以描述没有固定boundingbox的未知类别的物体,可以改变形状随意,并任意移动,将障碍物的描述粒度从box增加到voxel粒度,可以解决感知的问题,这里面有很多长尾问题。来看看整体的Occupancy解决方案:OccupancyNetwork1)ImageInput:输入原始图像信息,扩展数据维度和动态范围2)ImageFeaturesrs:RegNet+BiFPN提取多尺度图像特征3)SpatialAttention:通过3D空间position空间查询对二维图像特征进行基于注意力的多相机融合。实现方案一:根据每个相机的内外参数,将3D空间查询投影到2D特征图上,提取对应位置的特征。实现方案2:使用positionalembedding进行隐式映射,即在2D特征图的每个位置,比如相机内外参数,像素坐标等,加入合理的positionalembedding,然后让模型学习对应关系between2Dand3Dfeaturesbyitself4)TemporalAlignment:利用轨迹信息将空间Channel维度中每一帧的3DOccupancyFeatures按照时间顺序进行拼接,随着时间的推移会有一个weightdecay,合并后的features会进入Deconvolutions模块,提高分辨率5)VolumeOutputs:输出固定大小网格的占用率和占用流6)QueryableOutputs:隐式可查询MLP解码器,设计用于输入任意坐标值(x,y),z)获得更高分辨率的连续体素语义、占用率和占用流信息打破模型分辨率的限制7)生成可行驶区域道路表面具有3D几何和语义的ces,有利于在斜坡和弯道上进行控制。地面与Occupancy一致8)NeRF状态:nerf构建场景的几何结构,可以生成任意视角的图像,可以还原高分辨率的真实场景。如果能升级或者换成Nerf,就会有还原真实场景的能力,而且这个场景还原能力是过去-现在-未来。应该是对特斯拉技术方案所追求的4D场景自动驾驶的一个很大的补充和完善。8.FSDLanesNeuralNetwork:预测车道的拓扑连接关系是不够的,只能分割识别车道线。还需要推理得到车道之间的拓扑连接关系,以便用于轨迹规划。FSDlanelinetopologicalrelationshipperception1)LaneGuidanceModule:利用导航地图中道路的几何&拓扑关系、车道等级、数量、宽度、属性信息,并将这些信息与Occupancy特征融合,编码生成DenseWorldTensorfor建立拓扑关系的模块,通过序列生成范式解析视频流的稠密特征,得到稀疏的道路拓扑信息(车道线段车道线段和相邻的连接关系)。2)LanguageComponent:对车道相关信息进行编码,包括车道节点位置、属性(起点、中点、终点等)、分叉点、汇合点、车道样条几何参数,使其类似于单词token在语言模型中进行编码,然后使用时序处理的方法进行处理。具体过程如下:languageoflanesprocesslanguagelanguagefinallanguagelanguage表示图中的拓扑连接关系。9.物体感知:其他交通参与者的感知和预测FSD物体感知的障碍物感知和预测是一个两步法。在第一阶段,障碍物在3D空间中的位置是从占用中识别出来的。在第二阶段,这些3D物体的张量concat对一些运动学信息(如车辆运动、目标行驶车道线、红绿灯、交通信号灯等)进行编码,然后接入轨迹预测、物体建模、行人姿态预测、等头。将复杂的感知头集中在有限的ROI区域可减少处理延迟。从上图中我们可以看到有2-stepvideo模块,分别服务于本车和其他车的预测。这里有一个问题:上图中的两个视频模块有什么区别?效率会不会有问题?02决策规划1.复杂场景:与高频、多样化交通参与者的交互规划路口无保护左转决策规划场景与行人和正常直行车辆交互,了解多方关系。与前者的交互决策直接影响与后者的交互策略。这里的最后一个选择是尽量不干扰其他交通参与者的行动。2.传统优化方法:【联合多目标轨迹规划】:多目标MPC8维状态表示轨迹(position,Heading,svelocity,horizo??ntalandverticalacceleration,horizo??ntalandverticaljerk)优化代价:找到各自的ego和othervehicleObjTrajectory,让所有物体尽可能到达目标,同时水平和垂直的jerks尽可能小(comfort)。约束条件:物体各自轨迹的最短距离大于安全距离。两个物体的轨迹到达早和晚。太糟糕了(每个组合10ms是特斯拉能做到的极限),出现了组合爆炸。目标是整体规划耗时50ms(20hz)。3.Interactivetreesearch:Parallelpathplanningandevaluationpruningdecision-makingprocess特斯拉通过使用“交互式搜索”并行搜索一系列可能的运动轨迹来实现这一目标。相应的状态空间包括本车、障碍物、可行驶区域、车道、红绿灯等。解空间采用一组目标运动候选轨迹。参与与其他流量的交互决策后,产生分支,进而推进决策方案,最终选择最优轨迹。过程如上图所示:1)根据道路拓扑或从人类驾驶数据先验得到目标点或其概率分布(大数据轨迹)2)根据目标点生成候选轨迹(优化算法+神经网络)3)沿着候选轨迹rollout并进行交互决策,重新规划路径,并根据风险和得分对每条路径进行评估,先搜索最优路径,已知目标点。整个决策规划的优化表达式:决策规划优化表达式轻量级规划轨迹查询网络Tesla采用增量的方式不断增加新的决策约束,使用相对较少约束下的最优解作为初始值继续求解更复杂的优化问题,最终得到最优解。但是,由于存在很多可能的分支,整个决策和规划过程必须非常高效。基于传统优化算法的规划器每次决策方案耗时1-5ms,当有高密度的交通参与者时,显然不够安全。.Tesla使用的NeuralPlanner是一个轻量级的网络。查询的规划轨迹是利用特斯拉车队中人类司机的驾驶数据和离线条件下无时间限制规划的全局最优路径的最真实值进行训练的,每个决策规划只有100us。规划决策评估每次决策后查询到的多个候选轨迹需要进行评估。评价标准包括碰撞检查、舒适度分析、接管可能性、与人相似度等,有助于搜索分支的剪枝,避免整个决策树过大,也可以将算力集中在最可能的分支。特斯拉强调,这种解决方案也适用于被遮挡的场景。在规划过程中,会考虑被遮挡物体的运动状态,通过添加“幽灵”来进行规划。ghostocclusion场景也分享了避碰的网络过程和CVPR中对应的规划过程,就不赘述了。CollisionAvoidanceNetwork03场景重构&自动标注Tesla强大的感知能力需要强大的标注能力做支撑。从2018年到现在,特斯拉的标注经历了4个阶段:特斯拉的标注迭代阶段1(2018年):只有纯人工2维图像标注,效率很低阶段2(2019年):3D标签一开始是可用的,但是asingle-passmanualPhase3(2020):BEVspaceisusedforlabelingandreprojection精度显着降低Stage4(2021):Multi-passreconstruction用于labeling,精度、效率、拓扑关系都达到了非常好的水平高水平。特斯拉的自动贴标系统可以替代500万小时的人工工作。,手册只需要检查和填写非常小的部分(<0.1hrs)。这种multi-pass轨迹重构方案的流程如下:(类似于一套离线语义slam系统)自动标注系统Step1:VIO生成高精度轨迹。将视频流、IMU、里程计交给神经网络,推断提取点、线、地、分割特征,然后使用多摄像头VIO在BEV空间进行跟踪优化,输出100Hz6dof轨迹和3dof结构和道路,还可以输出相机的标定值。重建轨迹的精度为1.3cm/m,0.45弧度/m,不是很高。所有的FSD都可以运行这个过程来获取某个预处理的轨迹和结构信息。(看视频感觉vio只显式使用点特征,可能隐式使用线面特征。)multi-pass轨迹重建的第2步:multi-pass轨迹重建。将不同车辆的多次重建数据分组进行粗对齐->特征匹配->联合优化->路面细化,最后验证人工参与,确认标注结果。这里联合优化之后,还进行了一次道路优化。估计是视觉重建误差比较大。全局优化后,局部道路存在分层重叠问题。为了消除这部分全局优化错配的误差,加入了道路优化。从算法逻辑上来说,先全局优化再局部优化是必须的,因为自动驾驶的要求就是可以到处开。整个过程在集群上并行化。粗略对齐第3步:自动标记新的轨迹数据。在预建地图上,对新的行驶轨迹数据进行与multi-pass轨迹重建相同的重建过程,使得对齐后的新轨迹数据能够自动从预建地图上获取语义标注。这实际上是一个重定位获取语义标签的过程。这种自动标注只能自动标注静态物体,比如:车道线、道路边界等。通过感知模型,已经可以得到车道线的语义类别,但在恶劣场景下会存在完整性和误识别问题。这些问题都可以通过自动标注来解决。但缺点是可能不适用于动态障碍物,例如:移动的车辆、行人等。下面是使用场景:自动标注使用场景特斯拉展示的很多图像都有一个特点:存在模糊或污点遮挡,但并不严重影响其感知结果。平时使用时,车辆的摄像头镜头很容易脏,但有了这个自动贴标,特斯拉的感知会非常稳健,降低摄像头的维护成本。自动标注不适用于动态车辆回顾2021年的AIDay,我们可以看到上述重建构建了一个静态世界,不仅仅是车道线,还有车辆和建筑物。3D重建重建静态世界并标注4D空间。在BEV空间完成标注后,将标注映射到多个摄像头的图像上,这样4D空间的一个标注就可以应用于2D和多帧。关于场景重建,目前的重建能力和准确度可能还达不到特斯拉工程师的预期。他们的最终目标是真正还原和重建特斯拉车辆行驶过的所有场景,并且能够真正改变这些场景的条件生成。全新的真实场景,这才是最终的目标。还原真实世界,重构真实世界04场景模拟:基于真实道路信息,打造自动驾驶场景。场景模拟可以获得绝对正确的标签。基于重构构建的真实场景受限于数据和算法,目前难以大规模落地。而且需要很长时间。比如上图中模拟一个真实的十字路口需要2周时间。但是自动驾驶的实现依赖于不同场景下的训练和测试,所以特斯拉搭建了模拟自动驾驶场景的仿真系统。该系统无法真实模拟真实场景,但优点是比上述真实常见的重建方案快1000倍,并且可以提供现实中难以获取或标注的数据,对研究还是很有意义的自动驾驶训练。仿真架构本仿真器的架构如上图所示。场景创建过程中需要进行以下步骤:第一步:在模拟世界中铺设道路,使用边界标签生成物理道路网格,重新关联道路拓扑关系。步骤2:将道路上的车道线和几何描述元素投影到路段上,构建车道细节。第三步:在道路的中间边界区域生成中央车道分隔线,随机生成植物和交通标志进行填充;道路边界外使用随机启发式生成一系列建筑物、树木、交通标志等。第4步:从地图中获取红绿灯或停车标志的位置,还可以获取车道数、道路名称、etc.第五步:利用车道图得到车道拓扑关系,生成行车方向(左右转弯标线)和辅助标线。第6步:使用车道地图本身来确定车道邻接和其他有用信息。第七步:根据车道关系生成随机交通流组合。在上述过程中,基于车道导航图的一组真实值,可以修改仿真参数产生变化,生成多个组合场景。甚至可以根据训练的需要,修改一些真实值的属性来创建新的场景,从而达到训练的目的。数据分为Tile存储。基于Tile粒度构建的世界。上述模拟是基于真实的道路信息,因此很多实际问题都可以借助模拟来解决。例如:可以在模拟的洛杉矶道路环境中测试自动驾驶功能。(以上存储方式用于模拟地图的构建、存储、加载)自动驾驶在模拟场景中的感受:什么样的地图信息对于自动驾驶来说是不可替代的,可以从这个模拟构建过程中找到一些答案。05数据引擎:挖掘cornercase数据数据闭环过程数据引擎从shadow模式中挖掘出模型误判的数据,召回并使用自动标注工具进行标注修正,然后加入训练集和测试集,可以不断优化网络。这个过程是数据闭环中的一个关键节点,会不断产生cornercase样本数据。CurveParkingDataMiningforCurveParking上图是一个用于模型改进的CurveParking数据挖掘案例。随着数据不断添加到训练中,准确率指标不断提高。
