基于深度学习的人体识别智能交通灯设计*

李卓寰 刘煜 彭程

湖南人文科技学院能源与机电工程学院 湖南 娄底 417000

在城市道路中,交叉路口是道路交通系统的咽喉,作为相交道路车辆和行人汇集、转向的所在地,交叉路口处的交通组成、交通特征非常复杂,因此常成为交通事故的多发点[1]。据统计数据表明,我国城市交通事故抽样统计表明,发生在交叉路口的交通事故数约为50%,而其中车辆和行人之间的交通事故又占到一半以上。交叉路口区域高密度的车流以及行人相互之间严重的相互干扰,极易引发交通事故[2],引起交通阻塞,车辆延误增加等连锁性反应,进而影响整个路网运营效率。特别的对行人的伤害事故尤其多,这不仅对行人的生命健康造成伤害,也会带来极大的经济损失[3]。目前这些路段常采用的安全措施是采用凸面反光镜等方式,扩大司机视野及早发现弯道对面车辆,以减少交通事故的发生[4]。但是凸面反光镜由于凸面反光镜变形严重、安装位置过高和扩大视野有限等原因,实际应用时效果不是太明显。目前国内开始引入行人过街按钮,目前国内开始引入行人过街按钮,目前已经在成都、武汉、哈尔滨、长沙等许多城市的不同路口进行安装并投入使用。

目前的交叉路口的交通灯智能化制度不高,对路口的交通通行提高有限。本论文通过在人流量较大的学校、小区等交叉路段,特别是在一些交叉路口和丁字路口等交叉路口设置高清摄像头,系统利用摄像头的图像信息对路面行人进行识别,通过识别出驾驶员不易观察到的交叉路段区域行人的数量、位置等信息,并利用识别的人体信息来点亮相关的交通信号灯等装置。

亚博K210开发板是一款以K210芯片为控制中心,K210是嘉楠公司推出的一款MCU,其特色在于芯片架构中包含了一个自研的神经网络硬件加速器KPU,可以高性能地进行卷积神经网络运算[5]。该开发板可以在低功耗情况下进行卷积神经网络计算,是低门槛机器视觉嵌入式解决方案。

开发板使用的硬件连接示意图如图1所示。其中K210芯片为开发板主芯片,整个板子的核心处理器,128M-bit串行闪存作为内存扩展,触摸屏分辨率320*240,提供显示和触摸输入;
摄像头采用图像传感器OV2640,该摄像头支持自动曝光控制、自动增益控制、自动白平衡、自动消除灯光条纹等自动控制功能。板载CH340虚拟串口,提供供电、下载、固件和串口调试等。

图1 硬件连接示意图

K210的开发环境主要包括最基本的cmake命令行开发环境、IDE开发环境和Python脚本式开发环境。本文为了方便选择了Kendryte IDE集成开发环境,Kendryte IDE集成开发环境是基于VS Code完成的,所以开发界面与VS Code类似,程序编译成功后可以通过串口刷写程序。

为了方便训练样本采用了Mx-yolov3进行模型训练。Mxyolov3模型训练主要包括如下几个步骤[6-8]:

2.1 软件环境配置

软件环境配置包括python环境、相关依赖包、GPU训练配置。

如果有满足要求的显卡,则需要安装CUDA_10.0和Cudnn_7.6.4,如果满足要求安装成功后将自动启用GPU进行训练。

2.2 训练样本标定

准备大量样本并通过软件转换为分辨率为224×224大小的图片。利用labelImg等软件对图片依次进行标注。为了标定方便主要标定为4类,行人、单车(包括电动车、摩托车)、汽车和伞(避免打伞遮挡人头)。

2.3 样本本地训练

img文件夹包含着所有的训练图片,而xml文件夹包含所有已标注好的标签文件。计算训练模型的锚点,然后进行样本本地训练,如果能进行显卡加速能加快训练速度,迭代运算完毕生成yolov2.h5和yolov2.tflite两个文件。

2.4 转换模型

将yolov2.tflite模型文件转换成.kmodel模型文件。

如图2所示为程序流程,内部初始化包括系统时钟、串口、I/O、系统中断 和Flash等,外部硬件初始化包括触摸屏和Ov2640摄像头初始化等。物体分类初始化包括模型加载和物体分类层配置初始化;
而这一部分设计到物体分类模型的建立[9-10]。

图2 程序流程图

Main.c和region_layer.c等文件需要修改的代码如下:

3.1 添加和修改以下内容

anchor分类的数目、模型的文件名称、分类显示数组(根据自己实际训练的修改)

3.2 画框的位置定义修改

画框不大于224*224。

3.3 检测阈值和NMS阈值的修改和层的定义

使用卷积层降采样(factor为32),使得输入卷积网络的224 * 224图片最终得到7 * 7的卷积特征图(224/32=7)。初始化检测模型时,添加以下代码:

obj_detect_rl.threshold=0.3;

obj_detect_rl.nms_value=0.3;

int flag=region_layer_init(&obj_detect_rl,7,7,4,224,224);

printf( “flag: %d”,flag);

3.4 修改初始化参数

int region_layer_init(region_layer_t *rl,int width,int height,int channels,int origin_width,int origin height)

{......

rl->coords=4;//坐标个数

rl->image_width=224;

rl->image_height=224;

rl->classes=channels;

......}

3.5 添加串口通信

程序编译通过后生成.BIN文件,通过kflash下载到K210开发板。

如图3所示:将设备安装在交叉路口,开机上电后显示屏显示摄像头采集的画面,并且实时检测车、行人、单车和伞等4种物体并标记位置和显示识别的结果,并通过串口输出检测结果给交通灯进行显示。

图3 检测图片

由于每一类的训练样本大约是300张左右,实际测试时的识别率基本上能满足基本的使用需求。通过增加训练样本还能有效提高物体识别率,这样能满足实际使用需求。采用K210作为图像识别终端基本能满足物体实时检测识别的需求,而且整体价格低廉能实现大范围的推广。

猜你喜欢 交叉路口开发板串口 基于NPORT的地面综合气象观测系统通信测试方法及故障处理气象水文海洋仪器(2021年3期)2021-10-15浅谈AB PLC串口跟RFID传感器的通讯应用装备制造技术(2020年11期)2021-01-26无信号灯交叉路口安全警示装置科学技术创新(2020年24期)2020-08-12基于STM32H7的FDCAN通信系统设计与实现∗舰船电子工程(2020年5期)2020-07-09船舶电子设备串口数据的软件共享方法数码世界(2017年5期)2017-06-06浅析单片机开发板的设计与制作电子制作(2017年22期)2017-02-02无人驾驶汽车在交叉路口的避障规划汽车文摘(2015年1期)2016-01-13串口技术的实物调试和虚拟仿真联合教学模式职业技术(2015年8期)2016-01-05基于车-车通信的协同交叉路口碰撞预警系统汽车文摘(2015年11期)2015-12-14基于农村主路交叉路口优先右转汽车的碰撞预警系统初步设计汽车文摘(2015年11期)2015-12-02

推荐访问:交通灯 深度 识别