基于深度学习的驾驶员状态监测预警系统(正文)
摘 要
近年来驾驶员因疲劳驾驶而造成的交通事故逐年增多,驾驶员的驾驶状态对道路和人身安全产生重大影响,因此做好驾驶员驾驶状态的管理及预警是非常有必要的。
随着深度学习在目标检测算法应用的不断深入,YOLOv5等目标检测算法也相继具有了广泛的应用前景。PyQt则以它丰富的组件库,多样式的设计风格、灵活便捷的使用方式在Python前端搭建过程被得到广泛使用。本系统基于YOLOv5进行实现,通过PyQt搭建的前端采集图像数据传入后端,利用Dlib人脸库以及YOLOv5预训练图集模型对图像进行处理及判断,最终将处理结果返回前端进行预警提示。为更好的适配系统的各类摄像头类型,本系统还加入了Python cv2库的VideoCapture做外接摄像头硬件的检测和适配。
本文研究了基于深度学习的驾驶员状态检测预警系统,旨在提高驾驶员道路行驶的安全性。该系统能够使用多种传感器,包括摄像头等硬件设施来获取驾驶员的生理和行为数据,利用深度学习和人脸模型来进行状态识别和预警提示。研究结果表明,该系统能够高效地检测出驾驶员的疲劳、分心和不适应等状态,及时进行预警,从而有效减少由驾驶员分心驾驶酿成交通事故等不良事件发生。
ABSTRACT
In recent years, the number of traffic accidents caused by drivers' fatigue driving is increasing year by year. Drivers' driving status will have a significant impact on road and personal safety, so it is very necessary to do a good job in the management and early warning of drivers' driving status.
With the continuous deepening of deep learning in the application of object detection algorithms, YOLOv5 and other object detection algorithms have also shown broad application prospects. PyQt is widely used in the Python front-end construction process with its rich component library, multi style design style, and flexible and convenient usage. This system is implemented based on YOLOv5, where image data is collected from the front-end built by PyQt and transmitted to the back-end. The Dlib face library and YOLOv5 pre trained atlas model are used to process and judge the images, and the processing results are ultimately returned to the front-end for warning prompts. In order to better adapt to various cameras in the system, the system has added VideoCapture from the CV2 library for external camera hardware detection and adaptation.
This paper studies the driver status detection and early warning system based on deep learning, aiming at improving the safety of drivers on the road. The system can use a variety of sensors, including cameras and other hardware facilities to obtain drivers' physiological and behavioral data, use deep learning and face models for state recognition and early warning. The results show that the system can effectively detect drivers' fatigue, distraction and inadaptability and give timely warning, so as to effectively reduce the occurrence of adverse events caused by drivers' distracted driving.
Keywords:deep learning;driver status detection;object detection; PyQt
目录
1 引言
1.1 国内外研究现状
1.2 研究背景和意义
1.3 研究内容
2 需求分析
2.1 系统非功能需求分析
2.2 系统功能需求分析
3 系统设计
3.1 系统总体设计
3.2 系统详细设计
4 系统实现
4.1 YOLOv5预训练
4.2 后端实现
4.3 前端实现
5 软件测试
5.1 黑盒测试
5.2 白盒测试
6 结束语
参考文献
致谢
驾驶员的状态对于道路安全产生重要影响。如果驾驶员因疲劳、睡眠不足等原因出现问题,将会危及到道路和人身安全。交通事故是社会面临的一大安全隐患,尤其是道路交通事故更是频繁发生。据统计,全球每年有数百万人死于道路交通事故,而其中许多事故都是由驾驶员疲劳、分心或不适应等因素引起的。因此,为了提高道路行驶的安全性,开发一种能够实时监测驾驶员状态并进行预警的系统是非常必要的[1]。
通过研究国内外驾驶行为识别技术的发展,可以发现该领域已经取得了丰富的研究成果。但是由于异常驾驶行为的持续性和复杂性,以及车辆数据收集还不够广泛,异常驾驶行为研究仍存在一定问题:
- 深度学习算法日益成熟,但是在道路安全方面的应用和实践相对较少。
- 很多研究采用了聚类研究的方法,这种研究方法只能从宏观上分析驾驶员的驾驶行为,无法根据现实情况具体的反馈驾驶员的驾驶途中某段时间具体的驾驶行为,存在一定的局限性。
- 当前的主要数据源集中在图像、视频和仿真数据。其中图像和视频等数据易受环境因素影响且无法覆盖现实中的所有场景,这将大大的影响检测结果。而且图像视频等数据源本身数据量又非常大,深度学习预训练模型训练起来比较费时间且计算量巨大,时效性差。仿真数据则来自虚拟场景,不能完全反应现实驾驶场景中的相关数据。
- 现存的神经网络模型在提取异常的驾驶行为的数据特征方面还不够强,仅通过不断加深网络来解决问题容易导致模型梯度消失或者爆炸等问题。
本系统主要通过检测驾驶员在驾驶过程中的眼部、嘴部以及各种运动性的驾驶行为数据来检测驾驶员的状态情况,并对影响驾驶员安全驾驶的行为进行预警提示。系统开始于驾驶员开始行驶的瞬间,并在行驶途中时刻检测驾驶员的疲劳及分心情况,若中途中检测到驾驶员出现疲劳驾驶、抽烟、喝水、玩手机等行为并在某段时间范围内超过了一定值时。系统便会进行驾驶员状态预警提示。预警系统将驾驶员驾驶途中的各种影响安全驾驶的分心和疲劳因素做综合衡量,以提高道路和人身的安全性。
在国外,十年前Mercedes-Benz就推出了全球首款驾驶员注意力辅助系统(AttentionAssist),当驾驶员注意力出现问题时会第一时间弹出一个咖啡标志警告,系统的传感器通过直观的数据来确定驾驶员是否疲惫。如果系统检测到相应的标志,它将发出声音警告信号,并在组合仪表的显示屏上闪烁一条清晰的咖啡杯信息“ATTENTIONASSIST.Pause!”。为了提高道路安全,梅赛德斯-奔驰在车辆上安装了AttentionAssist注意力辅助系统以监测驾驶员疲劳状态,这些系统主要通过监测驾驶员的面部运动、眼部运动以及生理信号来判断驾驶员是否疲劳,与监测生理信号相比,监测面部运动和眼部运动更简单且精度更高,所以目前大多数系统采用这种方法。与仅基于驾驶行为监测驾驶员疲劳状态的德系车不同,福特采用了直接监测与间接监测结合的方法,综合考虑了车辆状态、驾驶行为以及驾驶环境、生理信息等四大方面因素的影响,使用大量的全面数据来提高监测算法的准确性。丰田在Lexus以及商用车上使用的Driver Monitor系统属于直接监测方法,通过监测驾驶员面部状态及眼部运动,结合红外传感器跟踪头部位置和运动判断驾驶员的情况[2]。
在国内,对于驾驶员注意力辅助系统方面的研究起步较晚。虽然部分国产车已经投入使用此系统,但大多都是依赖国外的供应商进行购买,自主研发且投入使用的产品较少,且国内在这方面的研发主要集中在各高校,如清华大学、同济大学、上海交通大学等,也有一定的成果和进展,但是距离实现产品化还有一定的距离,目前仅清华大学成波教授团队通过清华大学苏州学院下属的清研微视公司实现了相关成果的产品化。
本系统主要是利用驾驶员的面部特征、头部运动性等推断驾驶员的驾驶状态,并进行报警提示和采取相应措施的装置。采取了国内汽车普遍能够适配的基础硬件设施进行的系统软件设计,旨在将未来的驾驶预警系统更好的推进产品化。
利用机器视觉技术,检测驾驶员面部的生理反应特征也存在一些不可避免的不足之处:如眼睛特征、视线方向、嘴部状态、头部位置去判断驾驶员的疲劳状态这种检测方法,优点是表征疲劳的特征直观明显,并可实现非接触测量,不足之处在于检测识别的算法复杂,疲劳特征提取困难,且检测结果受光线变化和个体生理状况的变化影响较大,对技术的要求很高[3]。
与此同时,该行业也面临着诸多痛点:
- 影响驾驶员安全驾驶行为的生理特征有很多,提取相应特征数值较困难,很难保证数据精度。
- 市场相关行业技术人员较少,人才资源较为单薄。
- 现有的驾驶员状态预警系统在产品化和成本之间纠舍难分。
本系统致力于解决以上痛点,优势如下:
- 采用YOLOv5目标检测算法训练人物图像集,极大的解决了系统运行的速度和精度问题。
- 使用PyQt、GUI等界面类库做前端,让用户能够可视化的去操作和得到相关数据信息,布局简介清晰[4]。
本文研究的是基于深度学习的驾驶员状态监测预警系统的研究与实现,包括前端的界面显示部分和后端的数据处理部分。
用户通过调用摄像头可视化的采集自己当前驾驶状态信息、显示状态信息,经服务器处理完数据后,用户能够通过前端实时观察实时状态和提示信息。如果当前属于疲劳驾驶或者其他危险驾驶行为,系统将启动警报装置。
后端状态检测图像识别采用预先训练好的数据图集,将提取的人脸特征传送到服务器进行对比检测。检测内容有打哈欠、点头、抽烟、喝水等危险驾驶行为。
相关文章:
基于深度学习的驾驶员状态监测预警系统(正文)
摘 要 近年来驾驶员因疲劳驾驶而造成的交通事故逐年增多,驾驶员的驾驶状态对道路和人身安全产生重大影响,因此做好驾驶员驾驶状态的管理及预警是非常有必要的。 随着深度学习在目标检测算法应用的不断深入,YOLOv5等目标检测算法也相继具有了广…...
读书笔记之《价值》张磊
读书笔记之《价值》张磊 自序 这是一条长期主义之路 长期主义——把时间和信念投入能够长期产生价值的事情中,尽力学习最有效率的思维方式和行为标准,遵循第一性原理,永远探求真理。 真正的投资,有且只有一条标准,那…...

【shell】文本三剑客之sed详解
目录 一、sed简介(行编辑器) 二、基本用法 三、sed脚本格式(匹配地址 脚本命令) 1、不给地址,那么就是针对全文处理 2、单地址,表示#,指定的行,$表示最后一行,/pattt…...

Centos7 制作Openssh9.5 RPM包
Centos7 制作Openssh9.5 RPM包 最近都在升级Openssh版本到9.3.在博客里也放了openssh 9.5的rpm包. 详见:https://blog.csdn.net/qq_29974229/article/details/133878576 但还是有小伙伴不停追问这个rpm包是怎么做的,怕下载别人的rpm包里被加了盐. 于是做了个关于怎么用官方的o…...

C语言--每日选择题--Day30
第一题 1. i 5,j 7,i | j 等于多少? A:1 B:3 C:5 D:7 答案及解析 D |这个是按位或运算符,两个数的二进制位,有1为1,同0为0; i的二进…...
LeetCode 274. H指数——排序
274. H 指数 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她&…...
【洛谷 B2038】奇偶 ASCII 值判断 题解(顺序结构+取余)
奇偶 ASCII 值判断 题目描述 任意输入一个字符,判断其 ASCII 是否是奇数,若是,输出 YES,否则,输出 NO 。 例如,字符 A 的 ASCII 值是 65,则输出 YES,若输入字符 B(ASCII 值是 66…...
Ubuntu 20.4 源代码方式安装 cdo(笔记)
目录 动机安装过程python 调用cdo 动机 我找到的处理 era5-land 代码在需要用到 cdo,但是 sudo apt-get install cdo 总是出现 abort (core dump) 等问题,所以放弃这种安装方式,不走捷径,安装源代码,也就是 cdo-x.x.x…...

电子学会C/C++编程等级考试2022年12月(三级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:鸡兔同笼 一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物。 时间限制:1000 内存限制:65536输入 一行,一个正整数a (a < 327…...

二叉树的最近公共祖先(C++实现)
二叉树的最近公共祖先 题目思路代码(详细注释) 题目 二叉树的最近公共祖先 思路 我们可以通过两个栈来实现 实现一个FindPath函数,用来查找从根节点到目标节点的路径(路径可以用栈来保存) 路径保存好后,…...
【conda】容易遗忘的命令使用总结
1. 在空conda虚拟环境中安装python 退出到base环境 conda activate base 执行命令 conda install -n 空环境名 python版本名 例如: conda install -n test python3.10 2. 无需确认直接创建环境 在末尾加上-y,例如: conda create -n tes…...

蓝桥杯第一天-----时间显示
文章目录 前言一、题目描述二、测试用例三、题目分析四、具体代码实现总结 前言 本章中将相信介绍蓝桥杯中关于时间显示的题目。 链接:https://www.lanqiao.cn/problems/1452/learning/ 一、题目描述 二、测试用例 三、题目分析 1.输入的时间为毫秒,毫…...

多文件夹图片预处理:清除空值、重置大小、分割训练集
→ 清理空值 防止出现cannot identify image file 参考Python数据清洗----删除读取失败图片__简单版_python用pil读取图片出错删除掉-CSDN博客 import os import shutil import warnings import cv2 import iofrom PIL import Image warnings.filterwarnings("error&qu…...
【Java】集合 之 使用 Map
为什么使用Map 我们知道,List是一种顺序列表,如果有一个存储学生Student实例的List,要在List中根据name查找某个指定的Student的分数,应该怎么办? 最简单的方法是遍历List并判断name是否相等,然后返回指定…...

第二证券:股票几点到几点开盘?
作为股民或许投资者,我们都知道股票是每天都有开盘和收盘时间的。但是,关于股票的开盘时间,很多人并不是很清楚,特别是初学者。在本文中,我们将从多个视点分析股票开盘时间,并为大家供给一些有用的信息。 …...

goweb入门教程
本文是作者自己学习goweb时写的笔记,分享给大家,希望能有些帮助 前言: 关于web:本质 web中最重要的就是浏览器和服务器的request(请求)和response(响应); 一个请求对应一个响应。 一个请求对应一个响应&…...

量子计算:探索未来的计算技术
量子计算:探索未来的计算技术 引言 在过去的几十年里,我们见证了计算机技术从简单的计算和存储发展到复杂的数据处理和人工智能的飞速进步。然而,随着我们进一步探索科技的前沿,传统的计算方法开始显示出其局限性。在这种情况下,量子计算——一种基于量子力学原理的新型计…...
HarmonyOS应用开发者基础认证考试题目及答案
一、判断题 Ability是系统调度应用的最小单元,是能够完成一个独立功能的组件。一个应用可以包含一个或多个Ability。 正确(True) 所有使用Component修饰的自定义组件都支持onPageShow,onBackPress和onPageHide生命周期函数。 错误(False) 每调用一次ro…...

c# 文件读取和写入
文件写入 using System.Collections.Generic; namespace demo1;/// <summary> /// System.IO下的所有的Stream类是所有数据流的基类 /// 流是用于传输数据的对象,流就是用来传输数据的 /// 数据传输的两种方式:1、数据从外部源传输到程序中&#…...
【MySQL库的操作】
目录: 前言库的操作创建数据库字符集和校验规则校验规则对数据库的影响 选择和查看数据库修改数据库删除数据库备份注意事项查看连接情况 总结 前言 剑指offer:一年又二天 库的操作 创建、选择、查看、修改、删除与备份。 创建数据库 CREATE DATABASE…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
HTML前端开发:JavaScript 获取元素方法详解
作为前端开发者,高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法,分为两大系列: 一、getElementBy... 系列 传统方法,直接通过 DOM 接口访问,返回动态集合(元素变化会实时更新)。…...