基于深度学习的驾驶员状态监测预警系统(正文)
摘 要
近年来驾驶员因疲劳驾驶而造成的交通事故逐年增多,驾驶员的驾驶状态对道路和人身安全产生重大影响,因此做好驾驶员驾驶状态的管理及预警是非常有必要的。
随着深度学习在目标检测算法应用的不断深入,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…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...

什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...