智轨电车单目3D 感知系统的研究
2023-11-06王泽远袁希文徐阳翰熊群芳
王泽远,林 军,袁希文,徐阳翰,岳 伟,熊群芳
(1. 株洲中车时代电气股份有限公司,湖南 株洲 412001;2. 中车株洲电力机车研究所有限公司,湖南 株洲 412001)
0 引言
由中车株洲电力机车研究所有限公司自主设计、研发的全球首款智能轨道快运系统,主要应用于交通场景复杂的大中型城市,目前已在四川宜宾、湖南株洲等各大城市开始运营。智能轨道快运电车(简称“智轨电车”)对其环境感知系统的性能要求较高,其列车自动驾驶系统基于对周边三维环境的准确感知技术,结合虚拟轨道跟随控制系统,实现智轨电车的智能化行驶调度、规划决策以及运动控制。目前智轨电车自动驾驶场景下的三维感知数据来源主要是激光雷达。基于激光雷达的3D感知算法主要是基于点的3D目标检测方法[1-3]和基于网格的3D目标检测方法[4-6]。虽然基于激光雷达的3D 感知算法可以有效应对城市交通复杂工况,但其缺乏对环境语义的理解,对颜色的感知能力较弱且容易受到雨水的影响,很容易失效。因此,需要一套纯视觉感知方案来对智轨电车的3D 环境感知性能进行补充。
为解决上述激光雷达感知算法存在的问题,国内外相关研究人员针对视觉3D目标检测算法展开研究。在工业界,特斯拉公司提出使用纯视觉方案进行自动驾驶[7],百度汽车自动驾驶方案中同样使用单目3D检测技术进行远距离目标检测[8]。此外,理想汽车、小鹏汽车、毫末智行等汽车厂商也使用视觉算法进行三维感知[9-11]。在学术界,Deep MANTA[12]和ROI-10D[13]通过模板库中的3D CAD模板抽取3D特征,计算得到了最匹配的模板;但该类方法计算量较大,难以应用于多车辆的场景。为了解决单目3D算法对深度估计感知较差的问题,MonoDepth[14]和DORN[15]采用训练深度估计网络的方法来提升精度。但这类深度估计辅助的单目3D检测方法不是端到端的网络,需要先训练深度预测器,步骤较为复杂,不适用于智轨电车部署。同时,智轨电车雷达数据集标注的数据为目标在雷达坐标系下的坐标和长宽高,需要解决激光雷达感知数据集转换为图像感知数据集的格式问题。此外,由于视觉算法实际被部署在智轨电车上,需要将模型移植到现有的智轨电车硬件设备以及通信框架上,存在实现实时性的问题。
综合考虑激光雷达算法的限制以及智轨电车实际应用复杂多变的交通环境,本文设计出一套基于智轨道路环境的单目3D算法,以实现智轨在自动驾驶复杂交通场景下的三维感知。该算法在数据预处理方面,设计了一套由雷达采集数据转换为图像训练数据的方法;在模型训练方面,基于SMOKE模型[8]引入注意力机制并添加深度预测分支,构成Depth aware SMOKE模型,以提升单目3D 神经网络在深度估计上的精度;在模型部署方面,使用了低比特量化方法并引入了CUDA算子以减少模型推理的时间。
1 智轨电车单目3D感知系统概况
智轨电车单目3D感知系统如图1所示,其由数据预处理、模型训练和模型部署3个部分组成。智轨雷达数据集由数据采集试验车8路摄像头所采集的图像和雷达标注的数据组成。数据预处理部分包括图像坐标系变换、图像边界筛选、图像去畸变和遮挡图像筛选,最终形成智轨KITTI 数据集。模型训练部分负责以深度学习的方式使用替换基础网络的SMOKE模型来训练水平视场角60°摄像头的KITTI数据集。在得到训练模型之后,模型部署部分负责将其转换为英伟达推理框架TensorRT下的模型,并将转换后的模型部署在通信框架ROS2 框架下,同时使用低比特量化方法添加CUDA 算子来完成推理优化,最终得到在智轨电车部署框架下的3D 感知结果。在模型推理的过程中,收集3D感知系统中推理错误的样本进行困难样本挖掘,并将3D感知模型重新优化迭代训练,形成数据闭环。
图1 智轨电车单目3D 感知系统Fig.1 Monocular 3D perception system for autonomous-rail rapid tram
2 单目3D感知算法
单目3D 算法由图像特征提取器、3D 检测分支和损失函数组成,其是一种使用单个摄像头和纯视觉技术进行3D感知的深度学习算法。相对雷达和多目摄像头方案,其具有价格低、可靠性好、语义感知能力强的特点。
2.1 数据预处理
数据预处理的处理流程如图2 所示,其包括图像坐标系转化、图片边界筛选、图像去畸变和遮挡图像筛选。使用实验采集车采集雷达环视数据。图像数据包括用实验采集车8 个位置摄像头拍摄的画面、相机的内外参、图像的畸变系数以及雷达坐标系下的3D目标标注信息。其中,雷达目标标注信息包括物体的类别、雷达坐标系下的坐标(xr,yr,zr)以及目标的长宽高和偏航角。由于训练时使用的坐标系为相机坐标系下的坐标(xc,yc,zc),需要将在雷达坐标系下的坐标转换为相机坐标系下的坐标[16],且在标定中,将雷达坐标系作为世界坐标系。由于数据训练采用KITTI格式,因此需要将所采集的数据进行格式转换。
图2 数据预处理流程Fig.2 Process flow of data preprocessing
数据预处理具体步骤如下:
1) 图像坐标系转换,即其将实验采集车雷达环视坐标系下的标注(xr,yr,zr)通过外参转换为相机坐标系环视标注(xc,yc,zc)。
式中:R——3×3大小的旋转矩阵;T——3×1大小的平移矩阵。
2) 图片边界筛选,即其将环视摄像头下的标注转换为单目摄像头下的标注,具体方法为:将目标3D 框中心点的雷达坐标(xrc,yrc,zrc)投影到图像像素坐标系uv中,若坐标(ui,vi)超过图像的宽或高边界,则将其剔除;否则进行保留。计算方法如式(2)所示。
式中:ZC——相机内参;f——相机的焦距;dx和dy——成像元件的每个像素所对应的物理宽和高;u0和v0——物理图像坐标系的原点在图像坐标系的位置。
假设图像的宽和高分别为HI和WI,若u<0 或u>WI或v<0或v>HI,则将这些目标剔除。
3) 图片去畸变处理和遮挡图像筛选。由于数据采集没有标注2D 框目标,因此需将目标的雷达3D 坐标投影到图像坐标系中。根据目标在图像坐标系下8 个顶点的坐标计算出8 个顶点的x、y坐标的最大值和最小值,并将其作为当前目标在图像坐标系下的2D 坐标;之后,通过图片的畸变系数对图片进行去畸变处理。由于采集过程中存在不同的硬件时间延迟,智轨电车数据集存在雷达时间戳和相机时间戳无法对齐的现象,因此需要筛选出存在遮挡和标注错误的图片。最终在数据集中筛选出237张图片,图3为遮挡及标注错误图像样例示意。
图3 遮挡图像与标注错误图像样例Fig. 3 Examples of occluded image and image in error annotation
最终,智轨电车数据集的2D 与3D 标注3D 框如图4所示。
图4 数据集标注Fig. 4 Dataset annotation
2.2 模型训练
本文训练使用的模型为Depth aware SMOKE,它由基础骨干网络(Backbone)、检测分支以及损失函数3个部分组成。
2.2.1 基础骨干网络
基础骨干网络用于提取2D图像数据的特征。其输入为2D图片的尺寸,大小为N×W×H×3;输出为网络提取的图像特征FI的尺寸,大小为其中,N为输入图片的数量,H为原图的高,W为原图的宽。相对原图,图像特征的下采样倍数为4。 Depth aware SMOKE模型网络结构如图5所示。
图5 Depth aware SMOKE 模型网络结构Fig.5 Architecture of Depth aware SMOKE network
原始SMOKE 模型使用DLA-34[17]为基础骨干网络进行图像特征的提取。由于原始的基础骨干网络使用了可变形卷积(DCN[18]),而可变形卷积在硬件设备上不方便部署,且推理时间较长,因此本文选用不含可变形卷积的基础网络HRNet[19]。HRNet 并行而非串行地连接高分辨率到低分辨率各子网络的输出,而SimpleBaseline[20]、Hourglass[21]、CPN[22]等网络根据由高分辨率到低分辨率的网络(high-to-low resolution network)产生的低分辨率特征图来重构高分辨率的特征图,此操作会造成图像空间信息的损失,特别是对小目标而言。因此,相对原始SMOKE 的DLA-34 网络,HRNet能够更好地检测到图像中的小目标。同时,本文将SMOKE 模型中的归一化方式从BatchNorm替换成了GroupNorm[23]。其原因在于GroupNorm对网络训练中的批大小(batchsize)不敏感,且能够更好地应对网络中的噪声。
2.2.2 检测分支
检测分支包含了分类分支和3D检测分支。分类分支用于预测检测目标的类别。3D检测分支用于预测目标在相机坐标系下的3D 预测相关的3D 参数,包括x,y,z,l,w,h,θ。其中,(x,y,z)为3D 框的中心点,(l,w,h)为 3D 框的长宽高,θ为 3D 框的航向角。网络预测用 8维的变量[δz,δxc,δyc,δw,δh,δl,sinα,cosα]来表示,其中δxc和δyc分别为热力图在下采样过程的x轴误差和y轴误差,δz表示相机坐标系下目标在z轴的偏移量,δh,δw和δl为网络预测高、宽、长。预测分支通过预测偏移量来降低学习的难度。根据从数据集中统计出的平移平均值μz和尺度方差σz,利用公式z=μz+δzσz,可得到最终的位置z。从而可得3D框中心点的预测结果,如式(3)所示。
式中:K3×3——相机的内参矩阵。
通过式(4)可得 3D 框最终的长、宽、高。
将预测的角度编码为sinα和cosα,从而预测的角度映射为连续值。这是角度估计中常见的做法。这样,通过式(5)可得航向角θ。
通过航向角的旋转矩阵Rθ、物体的长宽高(l,w,h)和中心点位置(x,y,z),可构建 3D 边界框B的 8 个角点(corners)预测值为
2.2.3 损失函数
损失函数由关键点分类损失、3D框回归损失以及深度估计损失组成。关键点分类损失与CenterNet[24]类似,是在Focal Loss[25]的基础上加权,对中心点附近的位置降低loss权重,如式(7)所示。
式中:si,j—— 网络在热力图位置(i,j)的预测分数;yi,j—— 热力图真实值,由高斯核函数分配得到;β和γ—— 可微调的超参数;Nk—— 每张图片中关键点的数量。
使用Focal Loss 的好处在于对类别不平衡的数据集有提升精度的效果,相当于困难样本挖掘。
3D 框回归损失是对 3D 目标的(l,w,h)、(x,y,z)和α分别构建L1损失函数(共3个L1函数)。L1损失公式如式(8)所示。
式中:λ——缩放因子。
对3D 感知算法中心点进行预测中,将3D 框标注中心点[x,y,z]T投影到图像上[xc,yc]T,用来预测中心点 [x̂,ŷ,ẑ]T;其他值使用数据集标注的值,代入计算得到 3D 框的8个角点坐标。在观测角预测中,使用3D框的标注中心点(x,y,z)和预测的观察角来计算θ,从而计算得到 3D 框的8 个角点坐标;在长、宽、高预测中,长、宽、高使用预测值,其他值使用标注值,代入计算得到3D 框的8 个角点坐标。对于需预测的类型,其参数使用预测值,其他则使用真实值,从而计算得出8个预测角点的坐标。
深度分支损失如式(9)所示。
式中:D——深度的真实值̂——深度的预测值。
故最终损失如式(10)所示。
2.3 模型部署
由于3D 检测模型需要在智轨电车的运行环境上验证,因此需要将模型移植到智轨电车的设备NVIDIA-Orin 上。模型的移植包含3 步:模型转换、模型部署和推理优化。
1) 模型转换。训练过程中使用的模型框架为Paddle3D,需要将Paddle3D模型转换为ONNX模型再转换为TensorRT 下的模型。其中,Paddle3D 为百度3D感知算法库,ONNX 为通用的深度学习模型格式,TensorRT 为英伟达推出的神经网络推理框架。在转模型的过程中会出现各模型之间算子不支持的问题,如Paddle3D 中的求逆操作,在ONNX 中不存在。由于网络模型中只使用到逆矩阵,因此直接将逆矩阵提前计算好进行代入即可。在ONNX 中,同样也不包含求余的操作,因此使用整除和乘法运算进行替代,如式(11)所示。
式中:a——被求余数;b——除数。
2) 模型部署。模型部署使用了Autoware 框架。Autoware 是当前智轨感知控制中正在使用的一个自动驾驶感知框架,Autoware 将TensorRT、ROS2 以及摄像头驱动进行集成,成为一个新的自动驾驶算法库。本文将转换后的模型推理和ROS2 信息传输相融合,建立与智轨感知融合系统的联系。
3) 推理优化。为了能够在NVIDIA-Orin上达到实时的效果,首先将模型进行低比特量化处理,即在模型训练阶段,网络模型的精度为FP32,转模型时将量化精度设置为FP16。由于FP16 的数据类型占用空间比FP32数据类型的更小,因此对应的存储空间和传输时间都可以大幅下降。此外,图像预处理中的缩放以及RGB通道变换是一个在CPU上比较耗时的操作,涉及大量的矩阵运算;而图形处理单元GPU更加适合并行计算,因此将数据预处理的部分工作转移到GPU 上,在保证同样的处理效果的前提下,节约了算法运行的时间。
3 实验结果
本文算法基于Paddle3D 框架实现,训练的平台为GPU 服务器,CPU 为20 张i9-10900X 芯片,内存为64 GiB;GPU 为4 张NVIDIA 2080ti 芯片,CUDA 版本为11.2;操作系统为Ubuntu18.04。在模型训练期间,使用4 张NVIDIA 2080ti 芯片;在模型推理期间,使用1张NVIDIA 2080ti芯片。
3.1 实验指标
本文使用3D AP(AP 为由准确率P和召回率R构成的曲线所围成的面积)进行3D 检测器的性能评估,并假定预测3D框和标注3D框交并比大于等于0.25的为正样本TP、交并比小于0.25 的为负样本。遍历完预测3D框后,没有被匹配上的预测框为FP,没有匹配上的标注框为FN。由此,可以计算得到P和R,如式(12)所示。
式中:ΘTP——正样本数;ΘFP——没有被匹配上的预测框数;ΘFN——没有被匹配上的标注框数。
3.2 实验结果分析
本文使用数据采集车采集的智轨数据集和公开数据集Waymo[26]进行训练(图6)。智轨数据集被分为训练集、验证集和测试集,图片的分辨率为1920×1080。训练集有13 444张图片,验证集有3 021张,测试集有343张,一共涉及9 个类别,分别为汽车、巴士、卡车、摩托车、单车、行人(成人)、行人(小孩)、栅栏和路锥。Waymo数据集同样被划分为训练集、验证集和测试集,图片的分辨率为1920×1280。训练集有29 543张图片,验证集有14 569张,测试集有999张,一共有3个类别,分别为汽车、单车和行人。
图6 智轨数据集和Waymo 数据集类别分布Fig. 6 Category distribution of autonomous-rail rapid transit dataset and Waymo dataset
由于汽车在两大数据集中均占据绝对的数量优势,因此本文主要以汽车的检测结果作为评价的标准。训练过程中,初始学习率为4.5e-5,迭代次数为200 000,batchsize 为3,学习策略为MultiStepDecay,在100 000次迭代以及170 000次迭代时学习率会进行衰减。考虑到模型的推理速度不能太慢,因此将输入图像的尺寸设为960×540。
将3D AP作为衡量算法性能的指标对将使用的方法进行消融实验,得到的消融实验的结果如表1所示。表1 中数据预处理包括对2D 标注信息的增加以及对一些雷达标注不准图片的筛选和删除。该方法对智轨数据集可以起到提升性能的作用;而Waymo数据集本身就是官方标定好的单目数据集,因此仅需转换格式即可。使用HRNet_W18 为基础网络相比使用DLA-34为基础网络,其算法性能更强,无论是在智轨数据集上还是Waymo 数据集上均是如此,这说明了HRNet_W18的有效性。
表1 模型训练方法在两大数据集上的消融实验结果Tab. 1 Ablation experimental results of model training method on two datasets
为了保证算法能够实时地在NVIDIA-Orin平台上运行,对模型所部署的优化方法进行了消融实验,以验证所部署方法的有效性。表2 中,“平均耗时”是指在Autoware框架下数据读取、模型推理和结果后处理的总体平均耗时;“缩小输入尺寸”是指将原图的长和宽均缩小到原来的一半,这样能够将时间减少约30 ms;“低比特量化”是指将训练时使用精度为FP32 的模型转换为FP16 的模型,这样可以节省约15 ms 的时间;“添加CUDA算子”是指将图像数据预处理通过CUDA算子进行处理,其中包括了图像缩放、RGB 通道变换和减均值除方差,此操作能够节约9 ms 的时间。通过上述操作,平均耗时约缩小到原来的一半,能够达到将近20帧/s的传输速度。
表2 推理优化方法在NVIDIA-Orin 上的消融实验结果Tab.2 Ablation experiment results of inference optimization method on NVIDIA-Orin
3.3 实验结果可视化
实验结果可视化是指将模型输出的3D 结果投影到图像上,以此观测模型预测的精准度。图7为智轨电车图片数据采用本文算法的可视化结果。图7 展示了本文单目3D 算法在白天和黑夜城市场景下的检测效果。可以看出,本文算法在白天、黑夜以及面向智轨的复杂交通环境均能够准确地感知障碍物。经过实验指标计算得到,其3D AP值达到0.534 3。
图7 单目3D 算法在智轨数据集上的可视化效果Fig. 7 Visualization effect of the monocular 3D algorithm with autonomous-rail rapid transit dataset
图8 为本文算法在Waymo 数据集上的检测效果。可以看出,本文算法在公开数据集上也能准确地感知出黑夜及白天的障碍物3D 信息(3D AP 值达到0.535 5),可以应对各种复杂的自动驾驶场景。
图8 Waymo 数据集下单目3D 算法的可视化效果Fig. 8 Visualization effect of the monocular 3D algorithm with Waymo dataset
4 结束语
针对复杂城市环境下智轨电车激光雷达系统难以感知远距离目标、对颜色不敏感以及可能失效等问题,本文设计了一套基于智轨电车道路环境的单目3D 算法系统,其首先预处理实验采集车的雷达环视数据并将其转换为单目3D KITTI 格式数据,并基于Depth aware SMOKE模型进行训练,最终将模型部署至基于NVIDIA-Orin 平台的Autoware 框架上。基于智轨电车真实数据的实验结果证实,本文提出的算法系统可以达到很好的三维感知效果,能实现智轨电车远距离三维感知、上车部署流程优化及三维感知成本的控制。但目前本系统缺少了时间域上的约束,导致前后帧的预测结果不是很稳定,存在目标预测的跳变。后续可以加入时序信息,以加强网络预测的稳定性。