基于Blockly和深度学习的交通检测飞行器的设计
作者: 任秋宇 张朝阳 石函冰 王超 郭晓爽 赖晓晨
摘要:目前,国内交通管理系统主要以固定性采集技术为主,弊端在于难以变更,无法在特殊情况出现时,提供更有针对性的采集和检测活动。该系统以Android和飞行器为实施载体,以Blockly为控制工具,利用YOLO模型与卡尔曼滤波的深度学习技术实现交通信息数据的采集分析,实现飞行器飞行控制与车辆拥堵状况检测、车辆碰撞与车速违规检测等移动交通检测功能。经过实际测试与使用,手机控制飞行器操作流畅,飞行器实时传输数据情况良好,深度学习算法计算后的结果较为准确,具有较好的可应用性与市场前景。
关键词:Blockly;飞行器;深度学习;YOLO模型;卡尔曼滤波
中图分类号:TP3 文献标识码:A
文章编号:1009-3044(2023)26-0029-03
开放科学(资源服务)标识码(OSID)
0 引言
据公安部统计,截至2022年3月底,全国机动车保有量达4.02亿辆,其中汽车3.07亿辆[1]。然而,机动车保有量迅速增加,致使城市交通状况不断恶化[2],国内交通管理系统主要又以固定性采集技术为主,弊端在于难以变更,无法在特殊情况出现时,提供更有针对性的采集和检测活动。随着Blockly的成熟、深度学习等技术的快速发展,发展移动性交通检测设备成为本文研究内容。
关于移动性交通检测的研究已取得一定阶段性成果,如:Coifmana Benjamin等提出一种基于特征跟踪的交通参数提取方法,该方法以相机校正为基础,通过特征跟踪提取出车流量、车速及车流密度等参数[3]。Jung Young-Kee等提出利用背景差分的视频分割方法提取出运动车辆,然后通过基于Kalman滤波跟踪运动车辆,获取车流量和车速等参数等[4]。Kusworo Adi等人在灰度图像上采用背景差分和形态学方法进行车辆计数[5]。Sundoro H S提出基于高斯混合模型(GMM) 的背景差分算法和BLOB检测的车辆计数和车速检测系统[6]。
本文基于Google发布的Blockly工具技术以及深度学习中图像识别、分类等技术,并结合飞行器硬件设备,在安卓软件平台搭载深度学习模块,设计开发了一款可视化操控的智能交通检测飞行器。区别于摇杆手柄控制,可将飞行器的不同位移操控封装成独立逻辑单元,结合Blockly技术实现可视化操控,操作者可将不同功能的“积木块”进行组合拼接,完成对飞行器基本位移的控制。同时通过深度学习模块实现对车流量、违章记录等基本交通检测的功能,旨在提供一种操作性强、灵活度高、成本较低的飞行器移动交通检测设备模型,为移动检测技术纳入智能交通检测体系提供方向。
本系统以Google的Android平台应用和飞行器为实施载体,以Blockly代码工具为控制技术,利用YOLO模型与卡尔曼滤波的深度学习技术实现交通信息数据的采集分析,实现飞行器飞行控制与车辆拥堵状况检测、车辆碰撞与车速违规检测等移动交通检测功能。以下是对该技术的设计说明以及实现结果的分析阐述。
1 技术设计
1.1 系统架构
本系统以Android和飞行器为实施载体,以Blockly为控制技术,利用YOLO模型与卡尔曼滤波的深度学习技术实现交通信息数据的采集分析,实现飞行器飞行控制与车辆拥堵状况检测、车辆碰撞与车速违规检测等移动交通检测功能。
本系统分为飞行器设计部分和Android移动应用开发部分,系统的整体架构如图1所示。
1.2 飞行器结构
1.2.1 物理结构
按照预先的系统框架设计,采用双MCU控制,其中NRF51822负责无线通信与电源管理,STM32F411CEU6负责传感器数据读取、数据融合、PID 控制、电机控制、无线通信和USB通信等。
1.2.2 逻辑结构
基于NRF51822,使用2.4GHz无线通信来实时地通过wifiTask在安卓APP与四轴飞行器之间传输信号,stablilzerTask解析出收到的控制指令后执行PID控制以及PWM输出控制,进而控制电机,实现控制四轴飞行器的飞行动作,以此来实现手机Blockyly控制功能;并通过摄像头实时拍摄街道录像,通过串口将数据传输至四轴飞行器,同时通过2.4GHz无线通信实时展现至安卓手机界面,以此来实现实时数据传输功能。
1.3 Android移动应用开发
1.3.1 Android界面设计
搭建了基于SQLite数据库的登录注册系统。在注册时,会新建一个DatabaseHelper,在确保注册账户不重复、两次输入密码一致后,DatabaseHelper会将数据传入SQLite数据库中。在登录时,如果检测到账号密码均与数据库比对一致,则会弹出“欢迎”并进入主界面,否则弹出“账号或密码错误”。
1.3.2 Blockly控制设计
利用Blockly设计环境开发自定义块并编写逻辑代码,并利用Android中类将blockly的HTML嵌入App,在App中将blockly图形信号转换为无线信号,从而操作飞行器的移动飞行。
详细实现步骤如下:
1) 利用Blockly的工具台(Workspace) 和工具仓(Toolbox) 实现Blocks块的逻辑编程语句的封装,完成块的拼接和运行。
利用Blockly Developer Tools的开发环境进行设计开发,其中块指令定义(Blockly Instruction Definition) 的功能可用于定义原始块和自定义块[7]。每个独立块的命令都应包含如何使用以及在何处使用的属性[8],避免无法兼容的块错误组合。如使用Javascript语言编写块定义,包括定义内嵌输入属性(setNextStatement) 、定义显示文字(AppendField) 等。
编写各个Blocks块的算法逻辑,并将每个子块的代码以字符串的方式作为块的输出。以“向右转”块为例,当存在“向右转”块时,读取并修改当前飞行方向direction,并通过SendSocket创建网络连接,通过IO流将当前direction数据传输到飞行器中,从而将blockly转化无线信号改变飞行方向。
将上述块的定义代码和逻辑代码嵌入工作台的HTML文件中。
2) 使用Android中的Webview类引入HTML文件,实现在App进行的控制信号发送与接收。
基于此实现逻辑,完成了以下Blocks图形模块控制工作台的实现:
飞行器运行模块:作为所有子块的母块,负责启动飞行器,承载具体的操控子块。
移动模块:提供向前/向后两种移动方向,并可以设置两档飞行速度(快/慢)。
旋转模块:提供向左/向右两种旋转方向,可以在原有基础上进行45°/90°的旋转。
行动次数模块:通过循环(Loop) 逻辑,可以内嵌的移动/旋转模块,并控制其运行的重复次数。效果演示如图2所示。
1.3.3 Python算法设计
在Android Studio上引入Chaquo组件,使得Python深度学习算法可以在手机移动应用上运行。
具体交通检测步骤如下:
1.3.3.1 车辆拥堵状况检测
车辆的计数部分主要使用YOLO模型和卡尔曼滤波的深度学习技术。车辆计数的核心思想是在视频的中间设置一条基准线,利用YOLO模型进行车辆检测,当检测到的车辆经过基准线时,计数加一。卡尔曼滤波技术则主要用于目标的追踪。
深度学习实现思路如下:
1) YOLO模型的引用和视频处理
文章使用预训练的模型,引入coco数据集、cfg文件和权重文件。这里,因为需要识别的物体较为简单,使用预训练的模型就已经够用。
首先对视频逐帧读取,然后遍历每一帧图像,对图像中的物体进行识别。对于二进制的数据,需要将其转换为前端可识别的图片,即转换为blob格式进行前向传播。接着将blob送入网络,从而进行预测,返回目标框边界和相应的概率。
接下来需要遍历每个输出结果,将检测结果与原图片进行适配,进而更新目标框和置信度。当然,在此过程中需要进行非极大值抑制,从而选择出最优目标框。在这里使用cv2.dnn.NMSBoxes函数,该函数可以在目标检测中筛选置信度低于阈值的,还进行Nms筛选。
在车辆计数模块,根据在上一帧和当前帧的检测结果,利用虚拟线圈完成车辆计数。获取前后两帧中检测框的中心点,若前后两帧检测框中心点的连线穿过设置的基准线,则进行计数。最后将统计的车辆数返回在视频上方即可。
2) 卡尔曼滤波技术的使用
在目标追踪过程中使用卡尔曼滤波,对目标的下一步动作做出有根据的猜测。猜测的依据是预测值和观测值,首先认为预测值和观测值都符合高斯分布且包含误差,然后预设预测值的误差Q和观测值的误差R,接着计算得到卡尔曼增益,最后利用卡尔曼增益来综合预测值和观测值的结果,得到所要的最优估计,进而合理预测和追踪目标。
1.3.3.2 车辆碰撞与车速违规检测
在YOLO模型和卡尔曼滤波技术的基础上,文章通过分析每一帧与上一帧车辆的偏移位置,获取车辆在一段时间内的像素位移,并通过摄像机的标定来建立图像像素坐标与空间中对应点的世界坐标的映射关系,从而根据车辆的像素位移求出车辆的实际位移,进而计算车辆速度。算法流程如图3所示。
2 结果分析
效果演示如图4所示。可以看出,算法正确识别出了共有7辆车,其中有2辆车与其他5辆车行进方向相反。每一辆车没有像素距离的重叠,所以检测出没有碰撞;以左下角的黑色车辆为例,计算得出其实时车速为61.4km/h,并将数据实时悬挂于车辆左上方,并未超速,所以未出现提示。
3 结束语
本系统以Android和飞行器为实施载体,以Blockly为控制技术,利用YOLO模型与卡尔曼滤波的深度学习技术实现交通信息数据的采集分析,实现飞行器飞行控制与车辆拥堵状况检测、车辆碰撞与车速违规检测等移动交通检测功能。经过实际测试与使用,手机控制飞行器操作流畅,飞行器实时传输数据情况良好,深度学习算法计算后的结果较为准确,具有较好的可应用性与市场前景。
参考文献:
[1] 全国机动车保有量突破4亿 一季度新注册登记新能源汽车同比增加138.20%[J].道路交通管理,2022(5):5.
[2] 李瑞敏,何群,李帅.中国机动车保有量发展趋势分析[J].城市交通,2013,11(5):69-75.
[3] Coifman, Benjamin ,Lizhe Li. A New Method for Validating and Generating Vehicle Trajectories From Stationary Video Cameras[J]. IEEE Transactions on Intelligent Transportation Systems, 2022 (23): 16227-16236.
[4] Jung Young-Kee ,Ho Yo-Sung. (1999). Traffic parameter extraction using video-based vehicle tracking. 764-769. 10.1109/ITSC.1999.821157.
[5] Kusworo Adi,Widodo A, Widodo C,et,al. (2018). Automatic vehicle counting using background subtraction method on gray scale images and morphology operation. Journal of Physics: Conference Series. 1025. 012025. 10.1088/1742-6596/1025/1/012025.
[6] Sundoro H S,Harjoko, Agus. Vehicle counting and vehicle speed measurement based on video processing. 2016,84:233-241.
[7] Su J M,Li M J,Li W D,et al.Building an authoring tool to create blockly-based programming learning games for elementary students[C]//2019 8th International Congress on Advanced Applied Informatics (IIAI-AAI).July 7-11,2019,Toyama,Japan.IEEE,2020:246-249.
[8] Weintrop D,Shepherd D C,Francis P, et,al.Blockly go to Work:Block-based programming for Industrial Robots[C]//2017 IEEE Blocks and Beyond Workshop, Raleigh, North Carolina, USA,201:29-36.
【通联编辑:代影】