一种基于EdgeBoard的无人驾驶交通信息识别系统设计
2020-03-15刘靖宇刘延飞丛铭智顾祎陆何展博
刘靖宇 刘延飞 丛铭智 顾祎陆 何展博
(火箭军工程大学 陕西省西安市 710025)
1 引言
近年来,随着人工智能领域特别是深度学习的飞速发展,基于深度学习的图像识别与检测技术也取得相应突破。特别是卷积神经网络(Convolutional Neural Networks,CNN)[1]的应用,更是使目标检测方法取得了长足的发展,目前在无人驾驶领域中图像的目标检测方法主要分为两类:一类是将目标检测分成两部分进行的二阶段检测,典型代表是R-CNN[2]系列,其检测准确度较高,但费时较长;另一类是基于回归的一阶端到端检测,典型代表是SSD、YOLO[3]。此类方法处理速度较快,但其检测精度较二阶段检测相比有所下降。本文结合两类方法优点为一体,在嵌入式Arduino 处理器平台上采用多线程组织+FCN+YOLOv3-Tiny 软件算法,设计了一款集数据采集、数据模型构建、端到端循迹、目标检测、无人驾驶策略为一体的系统,能够同时对道路车道线和多种交通标志做出实时判断和决策,从而实现智能驾驶[4-6]。
2 系统的总体设计思路
系统的总体功能设计架构如图1 所示。硬件系统还有主机处理子系统和底盘控制子系统。主机处理模块由嵌入式计算机、EdgeBoard 深度学习计算卡和道路信息采集摄像头组成,功能如图1 中左侧端对端循迹模块和交通标志物检测模块实现。底盘控制子系统由Arduino Mega2560 微控制板加电机驱动板组成,外部接有直流电机、编码器、超声波和红外等传感器,完成图1 右侧对底盘电机的控制。
百度大脑EdgeBoard 深度学习计算卡作为系统的决策与控制中心,是整车架构的核心,负责对采集到的图片数据进行处理,分别提取车道线图片数据和交通标志物图片数据的图像特征,计算得到车道线识别模型和标志物检测模型。以两个深度学习模型为基础构建小车系统子模块,即端到端循迹模块和交通标志物检测模块,用来分析实时图片特征,得到道路曲率类型和交通标志物的类别与位置信息,这些信息传递到决策与控制中心后促使控制单元形成诸如小车转角变化、停车、减速慢行等控制指令,进而通过USB 转串口模块将指令发送给Arduino 下位机。底盘控制子系统接收指令后,结算为四个驱动信号,驱动4 个电机差速转动,实现加减速、转弯、掉头等功能,后轮的两个电机配有AB 相编码器,可测出电机目前转速,形成反馈信息以便于对系统施加PID 控制。
3 系统的软件实现与分析
3.1 多线程系统架构
图1:小车总体架构图
图2:多线程系统运行过程
如果同时运行图像的采集、处理以及两个模型的预测,会使得系统程序单次运行过慢,从而导致自动驾驶小车控制周期延长,使得小车的控制指令出现滞后,影响小车的正常行驶。针对此问题设计小车程序运行的多线程系统架构,使用Python3 中的threading 标准库[7],充分利用多核计算资源,将实时图片的采样保存、端到端循迹模块的预测和交通标志物检测模块的预测设置为3 个并行的线程,线程1 负责图片的采集、预处理,并对采集到的图片取样保存;线程2 利用线程之间资源共享的特性,根据道路曲率信息进行端到端循迹;线程3 遵循同样原则得到图像数据,检测图中的交通标志物并框选出标志物具体位置。多线程运行过程如图2 所示。
3.2 基于FCN的端到端循迹模块设计与分析
为了不使小车偏离车道,需要实时获取道路曲率信息提供给决策与控制中心,以形成控制指令,结合车道线图像数据信息进行图像预处理和FCN 算法预测赛道信息。在图像预处理算法方面,使用逆透视变换算法将车道线的图像从小车的摄像头视角变换到俯视视角,在一定程度上可以校正图像的梯形畸变[8],增强了对环境的适应性。经逆透视变换的图像仍为彩色图像,以Mat 类存储,为BGR 颜色空间,寻找合适的颜色通道阀值将其转换为HSV 颜色空间,调整显示效果更方便实现图像分割,最终通过图像二值化分割出了车道线的曲率特征[9-10],如图3 所示。
图3:原始图像与预处理操作后的图像对比
图4:设计的道路端对端循迹模块的道路预测FCN 网络结构
图5:改进后的YOLOv3-Tiny 网络结构
图6:交通标志物检测模型的检测结果
每一张经过最终二值化处理的图片都唯一对应一种道路曲率类型值,将车道线图片与相应的道路曲率类型值输入FCN 中进行训练,得到模型参数,形成端到端循迹模块,并基于此对摄像头采集到的图片进行车道线提取并预测当前道路曲率类型,为后续的决策与控制提供依据,本文设计的FCN 网络结构如图4 所示,6 个卷积层的卷积核个数分别为16,32,64,128,32,1。前4 个卷积层后分别添加了步长为2 的池化层,实现四次降采样,使得卷积层能够提取到更高级的特征,也意味着图像的尺寸被降低至原图的0.125倍,在保证车道线特征不丢失的情况下减少了后续车道线检测的计算量,使得程序运行的实时性进一步提升。
3.3 交通标志物检测设计
对交通标志物数据集图像进行预处理缩放到256×256 尺寸后,送入改进的YOLOv3-Tiny 网络进行推理,经过2 个不同尺度(8×8,16×16)的输出通道直接得到包含目标框、目标置信度和框内物体类别在内的特征图,根据网络模型输出的置信度对检测结果进行非极大值抑制(Non-Maximum Suppression,NMS)[11]和分类识别,得到输出结果。本文在YOLOv3-Tiny 网络的不同部分增加了特定的卷积层(如图5 中虚线框所示)进行改进。
为了使网络模型预测的物体位置更加准确,改进后的YOLOv3-Tiny 网络采用维度聚类分析方法优化检测框的位置与大小,再使用非极大值抑制算法对高度重叠的候选框按照分类器类别得分由高到低的顺序进行排序,选择得分最高的候选框并逐个计算其与其他候选框的IOU 值,设定阀值以去除IOU 值大于阀值且得分较低的检测框,循环筛选过程直到确定最终的检测框[12]。算法检测结果如图6 所示。
4 结论
在自动驾驶小车的整体框架下,两个系统子模块同时处理图像信息传递给决策与控制单元,形成控制指令,通过底层Arduino 实现PID 闭环控制,使得车体稳定运行,相比于单线程自动驾驶系统具有更快的响应速度和更准确的控制精度。小车体现的在不同道路曲率类型和多种交通标志物条件下进行准确控制的功能,表现了其作为人工智能领域产品的可靠性,能够完成较为复杂的多任务驾驶需求,具有广阔的应用前景。