与城市环境的复杂性和高速公路驾驶的风险相比,停车场景的特点是低速、空间有限和高可控性。这些特点为在车辆中逐步部署端到端自动驾驶能力提供了可行的途径。最重要的是自动泊车对时间不敏感,而自动驾驶帧率至少要做到15Hz以上。这样就对存储和算力需求降低很多。
上海交通大学的五位学生发表了一篇端到端自动泊车的论文:《ParkingE2E: Camera-based End-to-end Parking Network from Images to Planning》,比较接近落地,由于是学术研究,这些学生没有得到汽车产业界的支持,因此他们仍然使用了传统PC,论文里只是含糊地说用了英特尔的UNC小型台式机或者叫Mini PC。实际UNC性能千差万别,一般是英特尔9代或9代以上的CPU,也有用12代笔记本电脑低功耗CPU的,16GB或16GB以上的内存。这样的电脑CPU算力仍然是英伟达Orin的2-4倍,AI能力自然很低,但有强大的CPU支撑,整体上处理AI任务时,差不多近似或略超英伟达Orin的性能。换句话说,这个可以用英伟达Orin来实现,具备落地的可能性。
有一点需要指出,找寻停车位目前最佳或主要传感器仍然是超声波,视觉还是不如超声波雷达,因此论文中省略了车位寻找这一过程,论文应该是使用了AUTOWARE开源无人驾驶系统,这是日本名古屋大学开发的基于ROS2的开源无人驾驶系统,主要用于科研。其中导航和可视化模块是RVIZ。论文直接用RVIZ模块选定车位。
使用端到端神经网络Nθ来模仿专家轨迹进行训练,定义数据集为:
轨迹索引 i∈[1,M],轨迹点索引 j∈[1,Ni],相机索引 k∈[1,R],RGB图像 I,轨迹点 P 和目标停车位 S。重新组织数据集为:
和
其中 Q 表示预测轨迹点的长度,R 表示 RGB 相机的数量。端到端网络的优化目标如下:
其中 L 表示损失函数。
以 RGB 图像和目标停车位作为输入。所提出的神经网络包括两个主要部分:输入编码器和自回归轨迹解码器。通过输入 RGB 图像和目标停车位,将 RGB 图像转换为 BEV 特征。然后,神经网络将 BEV 特征与目标停车位融合,并使用 Transformer 解码器以自回归方式生成下一个轨迹点。
多视角 RGB 图像被处理,图像特征被转换为 BEV(鸟瞰图)表示形式。使用目标停车位生成 BEV 目标特征,通过目标查询将目标特征和图像 BEV 特征融合,然后使用自回归的 Transformer 解码器逐个获得预测的轨迹点。
在 BEV 视图下对输入进行编码。BEV 表示提供了车辆周围环境的俯视图,允许自车检测停车位、障碍物和标记。同时,BEV 视图提供了不同驾驶视角下一致的视点表示,从而简化了轨迹预测的复杂性。
相机编码器:在 BEV 生成流程的开始,骨干网使用 EfficientNet 从 RGB 输入中提取图像特征
各个尺寸EfficientNet性能对比
上图是各个尺寸EfficientNet性能对比,最高性能是6600万参数,准确率84.3%,不过1200万参数也达到了81.6%,这也说明CNN并不适合Scaling Law,此外CNN模型参数少,并不意味着计算量就一定低。
LSS算法
受英伟达LSS启发,学习图像特征的深度分布,LSS是英伟达2020年提出的一种经典的自下而上的构建BEV特征的3D目标检测算法,通过将图像特征反投影到3D空间生成伪视锥点云,通过EfficientNet算法提取云点的深度特征和图像特征并对深度信息进行估计,最终将点云特征转换到BEV空间下进行特征融合和后续的语义分割任务。也是国内最常见的BEV算法,典型代表就是地平线。
并将每个像素提升到 3D 空间。
然后,将预测的深度分布ddep与图像特征Fimg相乘,以获得具有深度信息的图像特征。通过相机的外部和内部参数,将图像特征投影到 BEV 体素网格中,生成相机特征。
为了将目标停车位与相机特征 Fcam 对齐,根据指定的停车位位置在 BEV 空间生成目标热图作为目标编码器的输入。随后,使用深度 CNN 神经网络提取目标停车位特征 Ftarget 以获得与 Fcam相同的维度。在训练期间,目标停车位由人类驾驶轨迹的终点确定。通过在 BEV 空间对齐相机特征 Fcam和目标编码特征 Ftarget ,并使用目标特征通过交叉注意力机制查询相机特征,可以有效地融合两种模态。位置编码确保了在将特定 BEV 位置的特征关联时,相机特征和目标特征之间的空间对应关系得以保持。使用 Ftarget 作为查询,相机特征 Fcam 作为Key和Value,并采用注意力机制,获得融合特征 Ffuse。
编码器方面,轨迹序列化将轨迹点表示为离散标记。通过序列化轨迹点,位置回归可以转换为标记预测。随后利用 Transformer 解码器以自回归方式预测轨迹。BEV 特征作为Key和Value,而序列化序列作为查询,使用 Transformer 解码器以自回归方式生成轨迹点。在训练期间,在序列点中添加位置嵌入,并通过掩码未知信息来实现并行化。在推理过程中,给定 BOS 做开始标记,然后 Transformer 解码器按顺序预测后续点。然后将预测的点追加到序列中,重复此过程直到遇到 EOS终止标记或达到指定的预测点数。
控制过程中,以 t0 表示停车开始时刻,使用端到端神经规划器基于当前时刻 t0 到当前时刻 t 的相对姿态 egot0→t 来预测路径 Tt0=Nθ′(It0,S)。目标转向角 Atar可以通过后轮反馈(RWF)方法获得,表达式如下:
根据来自底盘的速度反馈 Vfeed 和转向反馈 Afeed,以及设置的目标速度 Vtar 和计算出的目标转向 Atar,使用级联 PID 控制器实现横向和纵向控制。生成新的预测轨迹后,Tt0 和 egot0→t被重置,消除了在整个车辆控制过程中依赖全局定位的必要性。
作者设置了四种不同类型的停车场作为测试和训练,有室内,有全开放,有两侧和单侧。
通过在RViz界面软件中使用“2D-Nav-Goal”来选择目标停车位,如上图,每次只能选一个。靠IMU获取起始位姿,将以起始点为原点的世界坐标转化为车辆坐标。模型接收来自环视摄像头的当前图像和目标停车位,以自回归方式预测后续n个轨迹点的位置。将预测的轨迹序列发布到 RViz 进行可视化显示,让用户更直观看到泊车过程,为用户增加信心。控制器根据路径规划结果、自车姿态和反馈信号来操控车辆,将车辆停放到指定的停车位中。值得注意的是,目标点和预测轨迹点的坐标在车辆坐标系中表示,确保轨迹序列和BEV特征在一致的坐标基础上表达。这种设计还使整个系统独立于全局坐标系。
关于神经网络的细节,BEV特征的大小为200×200,对应实际空间范围x∈[−10m, 10m], y∈[−10m, 10m],分辨率为0.1米。在Transformer解码器中,轨迹序列化的最大值Nt为1200。轨迹解码器生成长度为30的预测序列,实现了推理精度和速度的最佳平衡。使用PyTorch框架,神经网络在NVIDIA GeForce RTX 4090 GPU上训练,batch size为16,总共训练时间约为8小时,使用了40,000帧数据。测试数据包括大约5,000帧。
测试结果如上,L2距离(L2 Dis.)指的是预测轨迹和真实轨迹航点之间的平均欧几里得距离。这个指标评估模型推理的精确度和准确性。Hausdorff距离(Haus. Dis.)指的是两个点集之间的最小距离的最大值。这个指标从点集的角度评估预测轨迹与真实轨迹的匹配程度。傅里叶描述符差异(Four. Diff.)可以用来测量轨迹之间的差异,值越低表示轨迹之间的差异越小。这个指标使用一定数量的傅里叶描述符将实际和预测轨迹表示为向量。
停车成功率(PSR)描述的是自车成功停放在目标停车位的概率。
无车位率(NSR)未能在指定停车位停放的失败率。
停车违规率(PVR)指的是车辆轻微超出指定停车位但没有阻碍或妨碍相邻停车位的情况。
平均位置误差(APE)是自车成功停放时目标停车位置与自车停止位置之间的平均距离。
平均方向误差(AOE)是自车成功停放时目标停车方向与自车停止方向之间的平均差异。
平均停车得分(APS)是通过综合评估停车过程中的位置误差、方向误差和成功率来计算的。得分在0到100之间分布。
这个试验有个缺点,那就是停车位的寻找可能会影响自动泊车。在RViz上,停车位只是一个坐标点。但在真实场景中,停车位可能不是一个清晰的坐标点,超声波雷达或视觉找到停车位,需要确定几何中心为关键坐标点,这个需要全局定位。而这种端到端自动泊车似乎很难做全局定位,特别是地下停车场。
端到端和传统算法比,地下停车场和双侧停车场仍然是难点,违规率超过了50%,这完全无法接受,这也表明纯粹端到端很难应用,必须添加人工规则,单侧停车场表现还不错。纯粹从算力和存储带宽看,自动泊车领域用端到端没有难度。
免责说明:本文观点和数据仅供参考,和实际情况可能存在偏差。本文不构成投资建议,文中所有观点、数据仅代表笔者立场,不具有任何指导、投资和决策意见。