APP下载

基于Blockly和深度学习的交通检测飞行器的设计

2023-11-07任秋宇张朝阳石函冰王超郭晓爽赖晓晨

电脑知识与技术 2023年26期
关键词:卡尔曼滤波飞行器计数

任秋宇,张朝阳,石函冰,王超,郭晓爽,赖晓晨

(大连理工大学软件学院,辽宁大连 116000)

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 系统整体架构

1.2 飞行器结构

1.2.1 物理结构

按照预先的系统框架设计,采用双MCU 控制,其中NRF51822 负责无线通信与电源管理,STM32F411 CEU6 负责传感器数据读取、数据融合、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语言编写块定义,包括定义内嵌输入属性(setNext-Statement)、定义显示文字(AppendField)等。

编写各个Blocks块的算法逻辑,并将每个子块的代码以字符串的方式作为块的输出。以“向右转”块为例,当存在“向右转”块时,读取并修改当前飞行方向direction,并通过SendSocket创建网络连接,通过IO流将当前direction 数据传输到飞行器中,从而将blockly转化无线信号改变飞行方向。

将上述块的定义代码和逻辑代码嵌入工作台的HTML文件中。

2)使用Android中的Webview类引入HTML文件,实现在App进行的控制信号发送与接收。

基于此实现逻辑,完成了以下Blocks图形模块控制工作台的实现:

飞行器运行模块:作为所有子块的母块,负责启动飞行器,承载具体的操控子块。

移动模块:提供向前/向后两种移动方向,并可以设置两档飞行速度(快/慢)。

旋转模块:提供向左/向右两种旋转方向,可以在原有基础上进行45°/90°的旋转。

行动次数模块:通过循环(Loop)逻辑,可以内嵌的移动/旋转模块,并控制其运行的重复次数。效果演示如图2所示。

图2 Blockly工作台控制效果实例

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模型与卡尔曼滤波的深度学习技术实现交通信息数据的采集分析,实现飞行器飞行控制与车辆拥堵状况检测、车辆碰撞与车速违规检测等移动交通检测功能。经过实际测试与使用,手机控制飞行器操作流畅,飞行器实时传输数据情况良好,深度学习算法计算后的结果较为准确,具有较好的可应用性与市场前景。

图3 算法流程

图4 深度学习检测效果实例

猜你喜欢

卡尔曼滤波飞行器计数
高超声速飞行器
古人计数
递归计数的六种方式
古代的计数方法
复杂飞行器的容错控制
基于递推更新卡尔曼滤波的磁偶极子目标跟踪
这样“计数”不恼人
基于模糊卡尔曼滤波算法的动力电池SOC估计
基于扩展卡尔曼滤波的PMSM无位置传感器控制
神秘的飞行器