李登览,宋晓炜,范存辉,朱鲁晓
(1.中原工学院 电子信息学院,河南 郑州 450007;2.开封大学,河南 开封 475004)
随着社会经济的快速发展和人们物质生活水平的不断提高,人们也越来越注重个人兴趣爱好的培养。高性能的遥控车(Remote Control Car)备受年轻人的喜爱,而遥控车比赛也是一项很受追捧的比赛项目。速度竞赛在这类比赛中是一个较为重要的竞技项目。遥控车的速度测量主要有两种方式:一种是由遥控车本身搭载的测速设备实现的速度测量,另一种是通过外部测速装置实现的速度测量。第一种方式常常是在遥控车上搭载GPS定位设备,这种方式具有精度高、测速准确的特点,但是往往会受测速环境的限制。GPS设备无法实现室内等场景下的定位,速度的测量只能够在室外进行。除了搭载GPS之外,还有一部分遥控车的速度测量是通过电机测速实现的。电机测速是通过霍尔传感器输出的电动势大小计算电机转速来实现的。其缺点是电机转速与车速存在一定的关系,而遥控车轮胎的更换会改变这种关系。第二种方式通常是通过感应式环路检测器(ILD)实现的。通过记录车辆经过ILDS时一定长度的时间间隔来计算车辆的平均速度。但是ILDS常常用于固定赛道,安装、维护比较复杂,也无法实现多目标的同时测速。为了摆脱遥控车受测速场地和搭载GPS定位设备等的限制,本文提出了基于双目立体视觉的实时测速系统。设计致力于复杂背景下实现对各类遥控车的实时监测,在对遥控车进行测距、测速的同时,还能够实现对视频图像的实时传送,以便记录遥控车比赛的精彩过程。
总体设计框架如图1所示,测速系统的硬件包括NVIDIA Jetson Xavier NX处理器、双目摄像头、电源、通信设备、Wi-Fi模块等。其中,Jetson Xavier NX处理器是系统的核心部件,负责控制系统中的所有运算任务,包括目标检测、车速计算、图像显示等。
NVIDIA Jetson Xavier NX处理器连接电源后,启动实时测速程序,首先,通过已经标定好的CSI双目摄像头来捕获画面信息,然后将双目摄像头获取的每帧图像送入YOLOv5s神经网络进行目标检测;然后,SURF算法对左右目图像的检测框范围进行特征点提取和匹配,选择一组最佳匹配点,利用双目模块的标定参数恢复特征点在空间中的位置信息。最后,利用极短时间内帧间空间点位置变化求出平均速度代替目标的瞬时速度。并将得到的距离与速度信息实时显示在图像的左上角,再利用Wi-Fi模块与VNC将图像实时回传。
图1 测速系统整体设计框架
目标检测的主流算法可分为两种,一种是两阶段(Two Stage)网络,另一种是一阶段(One Stage)网络。一阶段网络在检测速度上更有优势。为了便于目标检测算法在边缘设备上的部署,选择对一阶段网络中比较优秀的几种算法进行对比,其中包括SSD、YOLOv3、YOLOv4、YOLOv5。表1来源于参考文献[3]。
表1 多种目标检测算法在MS COCO数据集上的对比
YOLOv4目标检测算法是以上几种算法中检测精度最高的一个。但是由于它使用CSPDarkNet-53作为Backbone引入了巨大的参数量,并不适用于在边缘设备上进行部署。在目标检测领域与YOLOv4算法在精度上难分伯仲的算法是YOLOv5。相较于YOLOv4,YOLOv5在模型量和推断速度上有很大的优势。表2统计了不同结构YOLOv5算法的数据对比。其中Speed为不同结构的YOLOv5在Tesla V100上的推断速度。
表2 不同结构的YOLOv5在MS COCO数据集上的对比
不难发现,相较于参数量较高的YOLOv4算法,YOLOv5更适用于在边缘设备上进行部署。为了提高系统的整体效率,我们选择了推断速度最快的YOLOv5s网络。
SURF算法首先通过构建Hessian生成兴趣点并构建尺度空间,然后对特征点进行定位、分配主方向后生成描述子。在匹配过程中选择快速近邻法对SURF算法提取的特征点进行匹配。该方法通过使用欧式距离来筛选两个匹配点之间最邻近的点,距离值越小被视为特征点越接近。
双目系统的测距与测速原理参考文献[4],首先利用双目相机获取不同视点遥控车的图像,接着采用1.3部分提到的方法进行特征点的匹配。将特征点在不同视点图像中的像素坐标带入到标定好的双目系统中获得特征点在空间中的位置。以特征点前后时刻的空间位置表示遥控车前后时刻的位置,求出遥控车通过一段距离的平均速度。速度计算公式为:
其中,(x,y,z)和(x,y,z)表示相邻两帧测速点的世界坐标,Δ表示相邻帧之间的时间间隔。
系统硬件由双目立体视觉模块、开发板、图传通信系统组成,系统全貌图如图2所示。
图2 双目立体视觉实时测速系统全貌图
双目立体视觉模块由两个索尼摄像头(IMX219)组成,IMX219具有800万像素,帧率可以达到180 FPS。由于模块设计得比较小巧,常常是便携式设备的首选模块。
双目实时测速系统选用的开发板为NVIDIA Jetson Xavier NX。它采用Volta架构的384个CUDA核心,并加入48个Tensor Cores。此外,它还提供2个NVDLA引擎作为深度学习加速器。经测试,YOLOv5s目标检测算法在该边缘计算机上处理一帧640×480分辨率图像的平均耗时仅18ms,帧率可达55 FPS,满足课题要求。
由于NVIDIA Jetson Xavier NX主板原厂无天线,信号弱,为此我们为其配备信号放大双天线,以增强其信号接收能力与信号稳定性,增加其传输距离。中继部分采用SKW77模块,该模块是一款大功率Wi-Fi模块。NVIDIA Jetson Xavier NX将标注好目标距离和速度的视频图像传输给内置SKW77模块的中继器,然后由中继器将视频图像实时传输给带有VNC的电脑设备。VNC(Virtual Network Console)是一款卓越的远程控制软件,能够在Linux系统下为客户端提供实时稳定的画面。
2.2.1 软件设计方案
对双目立体视觉车辆测速系统进行任务流程分解。首先由双目采集运动车辆的视频,通过已经标定好的CSI双目摄像头捕获画面信息,然后将双目摄像头获取的当前帧图像送入YOLOv5神经网络进行目标检测,对于检测到的目标会用检测框标记;然后在左右目当前帧图像检测框的范围内,采用SURF算法进行特征点的提取及特征点的匹配,匹配后系统将选择一组最佳匹配点,利用其坐标值及标定双目得到的相机内外参数,获取目标在该时刻的空间信息。最后使用极短时间内帧间深度差得到的平均速度代替目标的瞬时速度,并将得到的距离与速度信息实时显示在图像的左上角,最后利用Wi-Fi模块及VNC将图像实时回传到计算机设备。
2.2.2 YOLOv5s算法的优化
为了提高设备的检测性能,我们对原有的YOLOv5s网络进行了优化,通过网络剪枝以及利用TensorRT加快模型推理速度。
网络剪枝(Network Pruning)是常用的模型压缩方法。在剪枝过程中,对冗余权重进行修剪并保留重要权重以保持精确性。剪枝通常能减少参数量和运算量。通过对YOLOv5s网络的剪枝,降低了网络的宽度,以此降低模型的参数量,增强目标检测的实时性。从对比剪枝前后结果来看,参数量由原来的7.3 M变为1.9 M,运算量由17.1 G变为4.7 G。
NVIDIA TensorRT是高性能深度学习推理的SDK。在推理过程中,基于TensorRT的应用程序执行速度比纯CPU平台快40倍。使用TensorRT可以优化训练的神经网络模型,为深度学习推理的生产部署提供INT8和FP16优化。表3为TensorRT加速前后8组数据推断速度的统计和对比。
表3 TensorRT加速前后推断速度对比
由表3可知,经过TensorRT加速后模型的推断速度提升了大约4倍,可大幅提高设备目标检测的实时性能。
在使用实时测速系统之前首先需要对双目视觉模块进行标定,包括相机的内参和外参。双目实时测速系统标定时使用的是张正友标定法。相机标定的目的是建立摄像机图像像素位置与物体空间位置之间的关系。由已知特征点的坐标求解摄像机的模型参数,从而从图像出发恢复空间点的三维坐标。需要求解的参数包括4个内参数和5个畸变参数,以及外参旋转矩阵和平移矩阵。
双目标定后,我们利用标定好的相机参数并通过SURF算法进行了几组测距实验,结果如表4所示。本系统在3米以内的测距误差可以控制在2%以内,具有很高的测距精度,为后面的测速奠定基础。
表4 系统测距实验结果
将设备放置到稳定的位置,打开Wi-Fi中继模块以保持网络通信畅通,从而保证视频图像可以实时回传,开启设备,连接Wi-Fi,运行测试程序,获取双目视野,将模型小车摆在双目视野内,准备开始测速。
一切准备就绪后,运行实时测速程序开始测速,以一定速度从各个路线行驶小车,测速效果如图3所示。从结果显示来分析,测速效果基本稳定,实时帧率可达11 FPS,具有良好的测速性能。
图3 VNC实时传输的遥控车测速画面
该文设计的主要创新点在于将Jetson Xavier NX与双目立体视觉相结合,实现了对遥控车的实时检测和测速。在车辆检测方面采用了YOLOv5s网络,同时对该网络进行一定的改进,一方面采用网络剪枝压缩网络模型,另一方面利用TensorRT针对GPU的特性进行加速,提高目标的检测效率。实验测试表明,基于双目立体视觉的实时测速系统具有良好的稳定性,同时具有较高的测距精度和较好的测速效果。