熊文军,赵山虎,李世博,杨建华,范孝波,孙洪良,陈 军
(1.西北工业大学 自动化学院,西安 710000; 2.江苏悦达专用车有限公司 特种车辆研究院,江苏 盐城 224000)
清洁车广泛应用于城乡各类硬质路面的深度清洁和垃圾回收运转作业,具有广泛的市场前景。目前清洁车清扫效率不高,清扫盘和吸盘损耗严重以及洒水作业时常波及行人已成为清洁车行业的痛点问题,其主要原因在于以驾驶员为主导的清扫作业难免由于人为疏忽造成损失。依托互联网和深度学习技术的飞速发展,各行各业都在向智能化方向转变。清洁车智能化有利于降低驾驶员的操作量,解决行业痛点问题。
清洁车要实现智能化,首要的任务就是对道路上的各种目标进行检测,检测的主流方式包括激光雷达、毫米波雷达、红外传感器、超声波传感器和摄像头。激光雷达兼顾高精度和高检测速度,但安装精度要求很高,且成本昂贵。毫米波雷达分辨率高,抗环境干扰能力强,但是检测距离近体积小的目标效果不佳。红外传感器在夜间有不错的检测精度,但白天易受阳光影响导致精度不高。超声波传感器成本低,简单可靠,但不能识别物体类别,适合距离检测。
摄像头依托高速发展的深度学习技术,成为目前较常用的目标检测传感器,具有检测信息量大、实时性好、鲁棒性高等优点。Lecun等人提出的LeNet是最早的卷积神经网络之一,在小规模数据集MNIST上效果不错,但网络太浅,特征提取能力不强。AlexNet由5个卷积层和3个全连接层组成,引入了GPU加速、Rule函数、最大池化和Dropout等技术,获得了2012年ImageNet比赛分类任务冠军。但是AlexNet采用大卷积核进行卷积,参数量较大,不易训练。NIN(network in network)网络使用多层感知器卷积,使用全局平均池化层代替全连接层,在降低参数量的同时可以提取到复杂特征,获得了比AlexNet更高的准确率,但是网络深度依然很浅。VGG16采用3×3卷积核代替大的卷积核,通过增加网络深度获取深层次的样本信息,从而达到较高的分类精度和检测速度,可以用来量化垃圾。
基于摄像头的目标检测算法主要分为两类,一类是基于目标候选框的两阶段方法,需先提取目标候选框,再识别目标类别,如Fast R-CNN,Faster R-CNN等。Fast R-CNN在VOC2007数据集上平均检测精度达到了66.9%,但是检测速度较低,检测单张图需要2 s。Faster R-CNN算法使用区域建议网络(RPN,region proposal network)实现了端到端训练,在VOC2007数据集上平均检测精度达到了73.2%,检测速度达到了5fps。另一类是基于回归思想的一阶段方法,直接产生位置和类别信息,检测速度较高,如SSD,YOLOv4等。SSD借鉴了Faster R-CNN的锚框机制和YOLO的回归思想,可以识别不同大小的目标,准确率较高。YOLOv4是在YOLO、YOLOv2、YOLOv3的基础上一步步改进而来,精度和速度上都达到了很高的水准,适合用来做行人和减速带这类具体目标的准确识别。
对于一个多任务系统而言,各任务之间协调运作至关重要。不同的任务之间会因抢占同一资源,互相等待导致任务执行效率较低。多线程技术可以很好的解决这个问题,将不同的任务放在不同的线程里互不干涉,同时通过全局变量实现不同线程之间的相互通信,从而提高执行效率。
本文提出的清洁车智能监测与控制系统通过超声传感器检测清洁车与路沿之间距离实现防撞,采用YOLOv4网络检测行人和减速带避免波及行人,造成吸盘损伤,利用VGG16网络对垃圾进行量化来提高清扫效率,通过控制器局域网络(CAN,controller area network)总线实现对清洁车设备的有效控制。为解决多任务算法互相冲突拖慢运行速度的问题,系统采用多线程技术有效提高了运行效率。
如图1所示,本文提出的清洁车智能监测与控制系统主要由超声测距模块、垃圾量化模块、行人和减速带识别模块和CAN通信模块组成。该系统采用Jetson AGX Xavier作为车载计算平台,其技术规格如表1所示,使用超声测距电路采集的信号作为超声测距模块的输入,其中超声测距电路中使用的DYP-A02-V2.0传感器参数如表2所示,左右摄像头采集的图像作为垃圾量化模块的输入,前摄像头采集的图像作为行人和减速带识别的输入,摄像头的参数如表3所示,以上信息在相应模块处理完毕后输入CAN通信模块生成CAN报文,通过CAN通信电路控制清洁车设备,同时各模块的实时处理结果通过可视化界面在显示器上显示。系统需要实现的技术指标如表4所示。
图1 系统组成图
表1 Jetson AGX Xavier技术规格
表2 DYP-A02-V2.0超声传感器参数
表3 USB车载摄像头参数
表4 系统技术指标
1.2.1 超声测距电路
考虑到系统高尘应用环境,超声测距电路选用了DYP-A02-V2.0超声传感器用于检测扫盘到马路肩的距离。该传感器利用脉冲回波测距法,通过测量超声波从发射到反射回来被接收这段时间间隔,进而根据超声波声速来测量距离。超声测距电路如图2所示,DYP-A02-V2.0超声传感器采用UART自动输出模式,每0.1 s自动检测一次距离,输出TTL串口信号。由于传感器和Jetson AGX Xavier之间较长的传输距离,TTL信号会发生衰减,故采用RS232总线进行转接传输。超声传感器输出的TTL信号经过TTL转RS232模块转换成RS232信号,经过3米传输线,再经过RS232转USB转接到Jetson AGX Xavier的USB接口,实现传感器到Jetson AGX Xavier控制器的传输。
图2 超声测距电路示意图
1.2.2 超声测距模块
超声测距模块为超声测距的算法部分,如图3所示,开始以后,超声传感器检测距离,判断是否收到结束命令,若收到则结束,若没收到则对收到的数据进行甄别,去除异常数据和残缺数据,从包含帧头和校验位的数据中读取距离并转换成10进制。当距离小于阈值时,投票算法票数加1,距离小于阈值则票数清零,票数累计达到阈值则通过CAN通信模块发送CAN报文控制清洁车清扫盘和喷水杆收回,间隔5 s再控制放出。其中投票算法的作用在于避免超声传感器异常输出导致的系统误判,可以过滤异常距离值。
图3 超声测距模块工作原理图
1.3.1 VGG16原理
VGG网络是一种深层卷积神经网络,采用反复堆叠的3×3小型卷积核代替原本较大的卷积核,使用2×2的最大池化层(max pooling layer),VGG网络诞生了两个经典模型VGG16和VGG19。其中VGG16在众多图像分类任务中表现优异,故本文使用VGG16量化垃圾。VGG16卷积神经网络结构如图4所示,VGG16中的共有16层,其中包括13层卷积层(convolution layer)和3层全连接层(fully connected layer),池化层没有权重不包含在内。网络输入224×224×3的图像,经过反复堆叠的卷积池化层提取深层特征,这样使得网络具有更大感受野的同时能降低网络参数,同时使用Relu激活函数去线性化,增强网络的学习能力。最后将提取的深层特征送入3个全连接层进行分类处理,采用SoftMax激活函数可以得到当前图片属于不同种类的概率分布。
图4 VGG16网络结构图
VGG16采用的Relu函数是一个取最大值函数,只需判断输入是否大于0,摒弃了复杂的计算,计算速度很快。Relu函数解决了正区间梯度消失的问题,收敛速度较快。
VGG16网络在最后一层获得每个类别的得分,经过SoftMax函数获得概率,最后将模型预测的概率与真实类别的概率进行交叉熵损失计算,通过Adam优化器优化权重来降低损失函数值,从而使网络收敛。其中SoftMax函数可以将各个节点的输出的值映射到[0,1],并且使这些值的和为1。这些值相当于目标属于某个类别的概率,概率最大的就是类别就是网络的分类结果。
1.3.2 VGG16实现垃圾量化
垃圾量化采用VGG16作为分类网络,将垃圾量分为微量垃圾、少量垃圾和大量垃圾三类。量化实现过程为:(1)拍摄大量路面图片,根据图片中的垃圾量将图片分为微量垃圾、少量垃圾和大量垃圾三类并放入3个文件夹处理成数据集,对数据集进行数据增广和扩充;(2)使用数据集训练VGG16网络,待网络收敛后保存权重;(3)从摄像头拍摄的视频流中提取一帧图像,并将图像的尺寸变换为224×224×3,将图像输入训练好的VGG16网络,经过四轮卷积、Rule函数激活和最大池化操作得到512张7×7的特征图,特征图通过Flatten函数拉成一维向量,经过三层全连接层和Rule激活函数之后,通过SoftMax函数输出3种垃圾量情况的概率,概率最大的即为量化结果。
垃圾量化及智能控制过程如图5所示,开始以后,安装于清洁车左右两侧的摄像头获取图像,判断是否收到结束命令,若收到则结束,若没收到则将图像输入到VGG16网络,网络输出垃圾量化结果。设置投票算法,多张图像满足同一量化结果才通过CAN通信模块控制副发动机转速改变。量化结果中的微量垃圾、少量垃圾和大量垃圾分别对应的发动机转速分别为、和,转速改变后适当延时后进入下一轮量化。
图5 垃圾量化模块工作原理
1.4.1 YOLOv4原理
YOLO系列算法相较于两阶段算法在检测速度上占优势,原因是YOLO算法将目标检测问题转化为单一的回归问题,检测时把输入图像划分成大小不同的网格,每个网格负责预测中心落入该网格的物体,这样就大大减少了运算量,提高了模型的检测速度。YOLO4在原来3个版本的基础上进行了很多改进,如图6所示,主干采用特征提取网络CSPDarknet53,并在其上增加了空间金字塔池化结构SPP,SPP可以有效增加感受野,分离上下文特征。采用PAN结构对不同主干层进行参数聚合,提高特征提取能力。YOLOv4还采用了包括马赛克数据增强、自对抗训练、Mish激活函数和优化损失函数等方法提高检测能力。YOLOv4网络输入一张图像,经过网络的识别和回归,可以得到图像中特定物体的所在区域和类别。
图6 YOLOv4网络结构图
CSPDarknet53网络在YOLOv3的特征提取网络Darknet53的基础上引入了CSPNet,在减小计算量的同时保证准确率,增强了网络的特征提取能力。SPP的使用使得YOLOv4网络可以获得多维的特征数据,提高特征的传递能力。Mish激活函数相对于Relu激活函数更加平滑,全局可导,不容易出现梯度消失现象,以计算量为代价提高了网络的泛化能力和准确率。PAN结构将低层粗粒度特征和高层细粒度特征进行了融合,以较低的计算增长提升了算法性能。YOLOv4使用了很多近年来比较出色的目标检测算法优化策略,在检测精度和检测速度上达到了较高水平。
1.4.2 YOLOv4实现行人和减速带识别
行人和减速带识别采用YOLOv4网络作为目标检测算法。实现过程为:(1)拍摄大量包含行人和减速带的图片,对图中的行人和减速带进行标注生成数据集,对数据进行增广和扩充,加上VOC行人数据集作为训练集;(2)使用训练集训练YOLOv4网络,待网络收敛后保存权重;(3)从摄像头拍摄的视频流中提取一帧图像,并将图像的尺寸变换为608×608×3,将图像输入训练好的YOLOv4网络,经过CSPDarknet53网络提取多尺度特征,经过SPP扩大感受野,然后通过PAN结构融合上下层特征,进一步经过卷积、批量归一化和Leaky_relu激活函数,生成3个尺度不一且包含行人和减速带目标类别信息、置信度以及边框坐标信息的检测头,其中76×76×255的检测头用来识别大型目标,38×38×255的检测头用来识别中型目标,19×19×255的检测头用来识别小型目标,从中可以提取行人和减速带的位置。
行人和减速带识别及智能控制过程如图7所示,开始以后,清洁车前方的摄像头获取图像,判断是否收到结束命令,若收到则结束,若没收到则经由YOLOv4算法检测行人和减速带,如果没有检测到行人或者减速带则返回检测下一张图像,如果检测到行人或者减速带则判断其是否位于目标区域,若不在则返回重新检测,若在则信号经由CAN通信模块控制抬起吸盘并延时(检测到减速带)或关闭喷水阀门并延时(检测到行人)。
图7 行人和减速带识别模块工作原理
系统通过CAN总线实现Jetson AGX Xavier计算平台与清洁车设备的通信,从而实现系统对清洁车设备的实时控制。其中Jetson AGX Xavier没有现成的CAN通信接口,需要外接CAN收发器才能实现CAN通信。CAN通信模块每0.1 s将超声测距模块、垃圾量化模块以及行人和减速带识别模块输出的控制命令编入同一CAN报文的不同位置,然后发送到清洁车的CAN设备控制器,控制器解读报文里的控制命令,控制相应清洁设备动作。
垃圾量化、行人和减速带识别是两个耗时相对较长的任务,因此对于输入图像的获取和预处理可以放单独的线程里,而超声测距模块执行较快,获取信息和处理可以放到同一个线程里。如图8所示,前方图像预处理线程对前摄像头拍摄的图像进行预处理,然后更新前方图像这个全局变量,行人和减速带识别线程只需到不断获取这个全局变量进行处理即可,这样可以避免摄像头暂时工作异常导致识别算法奔溃。两侧图像预处理和垃圾量化线程同理,区别在于左右摄像头拍摄的两张图像放入同一批次输入垃圾量化算法。超声测距线程、垃圾量化线程以及行人减速带识别线程共同维护一个各线程结果的全局变量,各线程的输出只维护各自对应的那部分数据,其他部分数据保持原样直到被更新。可视化线程实时显示各线程结果,而CAN通信线程每0.1 s向清洁车设备控制器发送一次包含各线程结果的控制命令实现对清洁车设备的控制。
图8 多线程实现过程
Jetson AGX Xavier通过电源逆变器从清洁车24 V电源供电,摄像头和传感器通过USB接口连接到Jetson AGX Xavier,显示器则通过HDMI接头与Jetson AGX Xavier相连,同时外接键盘鼠标方便调试。
摄像头和安装情况如图9所示,两侧的摄像头安装于后视镜下方往正下方拍摄,离地高度180 cm,前方的摄像头安装于车内后视镜的位置往前方拍摄;传感器离地高度25 cm,与清扫盘和喷水杆高度一致,传感器与清扫盘和喷水杆水平距离为4 m,超声信号垂直打向路沿并反射检测距离。
图9 摄像头和传感器安装示意图
Jetson AGX Xavier外接显示器,在算法中单独使用一个线程用于实时显示采集的图像和处理结果。如图10所示,图中左中右3个图像分别是清洁车左前右3个摄像头拍摄的图像,其中左右两个图像显示的是垃圾量化的结果,实时显示FPS(每秒传输帧数)以及设备的状态是打开还是关闭。中间图像中的横线是减速带识别的阈值划分线,横线以上识别减速带并预警,横线以下识别减速带并控制吸盘收回,图像上实时显示识别结果;左右两侧斜线是行人识别的阈值划分线,左边两条斜线和右边两条斜线之间的区域为行人识别区域,此区域识别到行人则控制喷水杆停水并收回,其他区域识别到行人则是发出预警,同时图像上实时显示识别结果。
图10 可视化效果
经过反复实车试验,结果表明本文给出的清洁车智能监测与控制系统可以很好的实现以下功能:当清洁车距离路沿过近时,可以自动控制清扫盘和喷水杆收回实现避障,适当延时后摆出;当清洁车前方出现行人时,系统可以发出行人警报,行人进入目标区域则控制喷水杆关水以免波及行人;当清洁车前方出现减速带时,减速带位于阈值线以上系统自动发出预警,位于阈值线以下系统控制吸盘上抬避免损失,适当延时后下放;系统自动对清洁车两侧清扫区域的垃圾进行量化,垃圾量改变时控制清扫功率改变,进而提高清扫效率。
试验数据如表5所示,试验分别针对路沿距离检测及避障、垃圾量化、行人和减速带识别3个功能进行,试验次数分别为100次、90次、80次,准确率分别为96%、90%和96.25%。其中准确率指的是正确控制次数占测试次数的比例,对路沿距离检测及避障来说,正确控制是指当清洁车与路沿距离低于阈值时系统控制清洁车清扫盘和喷水杆收回,反之则摆出;对垃圾量化来说,正确控制是指当垃圾量变化时,系统根据垃圾量及时控制副发动机转速改变到当前垃圾量对应的转速;对行人和减速带识别来说,正确控制是指当前方出现行人或减速带时,若行人位于目标区域则控制喷水杆关水,若减速带位于目标区域则控制吸盘上抬。综合来看,系统3个功能都能达到较高的准确率。其中垃圾量化准确率相对较低,原因在于垃圾量化的标准是人为界定的,不同的垃圾量之间的界限不算清晰,容易造成量化失误的情况。
表5 试验数据
采用多线程技术使得垃圾量化以及行人和减速带识别的FPS从每秒2~3帧提升到6~7帧,考虑到清洁车工作过程中时速低于15 km/h,6~7帧的FPS完全可以到达实时性要求。路沿距离检测的误差小于2 cm,速度可以达到每秒检测10次。该系统具有较高的准确率和识别速度,很好的解决了清洁车的行业痛点问题。
本文提出了一种清洁车智能检测与控制系统,旨在解决目前清洁车普遍存在的清扫盘、喷水杆和吸盘易损毁,作业易干扰行人和清扫效率较低等行业痛点问题。该系统采用超声传感器进行避障,采用VGG16网络量化垃圾,采用YOLOv4识别行人和减速带,采用CAN总线实现通信,利用多线程技术协调各模块通信和资源占用。经过多次实车试验,结果表明系统运行稳定,实时性和准确率较高,很好的解决了清洁车的行业痛点问题。
系统通过进一步优化,可以应用到各类硬质路面清洁车上,提高清洁车智能化水平,提高清扫效率,降低设备损耗。目前系统仅在一种清洁车上应用,后期考虑应用到不同尺寸、不同工作环境的清洁车,需要对传感器和摄像头的安装进行调整,同时针对不同的工作环境采集不同的图片训练网络,使得网络能够在不同的环境中发挥较好的效果。