当前位置: 首页 > news >正文

基于OpenMV的疲劳驾驶检测系统的设计

一、前言

        借助平台将毕业设计记录下来,方便以后查看以及与各位大佬朋友们交流学习。如有问题可以私信哦。

        本文主要从两个方面介绍毕业设计:硬件,软件(算法)。以及对最后的实验结果进行分析。感兴趣的朋友们可以评论区留言~看到就会回复。有需要代码和模型等资料的可以加扣扣1287073476私聊哦。

        本文所设计的疲劳驾驶检测系统的实现流程如下:

 

二、硬件要求

        首先,最基本的硬件当然是主控系统OpenMV开发板,OpenMV我们选择OPENMV4 H7 PLUS版本,如下图所示,其他版本跑不了模型训练,会报错!!!

         其他硬件:OV5640摄像头,稳压模块,蜂鸣器模块,LED模块等。

三、相关算法

1.人脸识别

        Sirovich首先提出使用特征脸法进行人脸识别,它是一种将人脸特征低维化 的方法,本文采取基于Haar特征的Cascade级联分类器进行人脸识别,再对检测到的人脸进行疲劳驾驶判断。

        基于Haar特征的Cascade级联分类器,是Paul Viola和Michael Jone2001年在论文“Rapid Object Detection using a Boosted Cascade of Simple Features”中提出的一有效的物品检测(object detect)方法,它是一种机器学习的方法,通过许多正负样例中训练得到cascade方程,然后将其应用于其他图片。

        一个弱分类器就是一个决策树,最基本的弱分类器只包含一个Haar-like特征,也就是它的决策树只有一层,被称为树桩(stump。在经过排序筛选后,选出最优弱分类器,并将最优弱分类器的特征量交给AdaBoost,让其进行训练。

        级联分类器:将多个弱分类器进行加权组合就形成了强分类器,同样将多个强分类器进行简单组合就形成了级联分类器。

        从该级联器的训练过程可以发现,当一个弱分类器能够正确识别出分类样本时,将会减少样本的权重;当一个弱分类器错误识别分类样本的时候,将会使得样本的权重增加。因此,后面的分类器在训练的时候会针对错分样本加强训练。最后,将的弱分类器合成强分类器,再将各弱分类器权重值与平均值进行比较,从而实现对图像的检测。如图通过加载人脸haar算子,基于Cascade级联器识别到人脸后,将人脸框起来,方便后续的疲劳检测。

2.疲劳检测 

        通过人脸识别后,确认为人脸,再进行疲劳检测,本文疲劳驾驶检测主要采用卷积神经网络算法,通过深度学习后,生成模型,将人脸特征与模型进行比对从而达到对驾驶人员的疲劳驾驶状态检测。本文模型训练主要通过EDGE IMPULSE网站进行云端在线训练,具体模型训练看这里。

四、结果分析

1、实验结果

        本文所设计的疲劳驾驶检测系统实物如图所示。对检测人员进行实时监测,当检测到驾驶人员张嘴表现出“打哈欠”特征时,预警模块发出报警,蜂鸣器发声,LED模块亮红灯,来提示驾驶人员目前处于疲劳状态,达到提醒驾驶人员不要疲劳驾驶的目的。

         本文首先进行人脸识别,,识别为人脸后,白框将人脸框起来。若检测不到人脸,则不进行疲劳检测。识别为人脸后,再进一步判断是否为疲劳驾驶。当驾驶员出现打哈欠或者闭眼等特征时,经过识别,检测为疲劳驾驶后,LED模块中指示灯亮红色,蜂鸣器发声,作为警告提醒驾驶人员疲劳驾驶。如图所示:

        当驾驶员没有出现疲劳特征时,摄像头进行实时监测,LED模块不亮红灯,蜂鸣器不发声。判定为非疲劳驾驶。如图所示: 

 2、结果分析

        在设计结果分析方面,可以从以下几个方面考虑:

        准确性:系统的准确率是评价其性能好坏的重要指标之一。在测试中,应该对不同场景下的数据进行收集和分析,并根据实际情况进行调整和优化。如果系统的准确率较高,则说明其具有较强的稳定性和可靠性。经过多次实验发现,人脸识别的准确率高达98%,正确检测为疲劳驾驶的准确率高达99%以上。因此可以满足系统设计的基本需求。

        实时性:由于疲劳驾驶是一个非常危险的行为,因此及时发现并提醒驾驶员非常关键。因此,在设计系统时需要考虑实时性,即对图像进行处理和判断的速度是否足够快。如果延迟过大,则可能会导致误判或漏判等问题。经过多次实验发现,该系统检测疲劳驾驶延时较短,也满足该系统的设计需求。

五、总结与展望

        本文设计的基于OpenMV的疲劳驾驶检测系统在城市交通安全背景下应运而生,它可以实时监测驾驶员的状态,及时提醒他们注意休息,有效降低了交通事故的发生率。本文针对驾驶员疲劳驾驶出现的打哈欠特征,结合现状成熟的机器视觉,深度学习等人工智能技术设计出一种基于OpenMV的疲劳驾驶检测系统。利用OpenMV采集图像、预处理、识别分析等步骤,可以实现对驾驶员状态进行准确快速地判断,并发出提示或警告信号。主要通过haar特征算子进行人脸识别,当今人脸识别技术十分成熟,具有以下的特点:

        (1)准确性高:通过本文的原理阐述以及实验验证,可以发现人脸识别的准确率很高,基本不会出现误判的现象。

        (2)方便快捷:人脸识别的方法算法很多,很方便可靠,简单易学,程序运行没有延迟,一般的板载摄像头都可以对人脸进行识别,而且当今的图像处理,机器视觉相关开发板的出现,更是方便了人们进行项目测试,或者实验的开展,甚至是将其应用在生活当中。

        (3)可靠性高:人脸识别技术也是一种十分安全并且可靠的技术,这是因为人的面部特征是不可篡改的,每一个独立的个体都拥有独一无二的面部特征。而且,识别系统通常采用了生物特征识别和密码学两个环节的复合方法来确保系统的安全性。

将该系统进行多次测试实验,表明该系统具有较高的准确性和可靠性。此外,该系统还具有快速响应,操作简单,易安装的特点。整个课题完成了基于OpenMV的疲劳驾驶检测系统的设计以及论文的撰写,已完成的工作总结如下:

        (1)本文设计了一款基于深度学习的轨道交通驾驶员疲劳检测系统,系统由STM32H743单片机、摄像头模块、电源模块、蜂鸣器预警模块组成;

        (2)疲劳检测系统采用双电源模式,可支持电池供电或USB供电;

        (3)疲劳检测系统采用Haar算子进行人脸检测;

        (4)收集了包含不同角度、不同光照条件下的人脸数据集;

        (5)采用深度学习的方法判断驾驶员是否处于疲劳状态;

        (6)对训练生成的模型进行测试优化,对其参数进行调整,生成最能满足设计需求的模型。

        在本次课题遇到尚未解决的问题是OpenMV摄像头在进行人脸的实时监测当中对眨眼闭眼特征的识别不明显,当单独进行眼睛闭眼的特征识别时,需要对人脸区域中的人眼区域进行截取,这样就耗费了部分内存,增加了程序运行的延迟。随着未来人工智能的迅速发展,基于OpenMV的疲劳驾驶检测系统可以进一步发展和完善,具有以下展望:

        (1)未来的疲劳驾驶检测系统可以进一步提高准确性和智能化水平,更加精确的检测驾驶员的疲劳驾驶状态,以及可以对驾驶员的疲劳状态进行预判。

        (2)通过与车辆的其他传感器进行联动,可以实现更加全面和精准的疲劳驾驶检测功能。

        (3)在实际应用当中,可以考虑将疲劳驾驶检测系统与车辆的自动驾驶功能结合,实现更加安全和智能化的驾驶体验。

相关文章:

基于OpenMV的疲劳驾驶检测系统的设计

一、前言 借助平台将毕业设计记录下来,方便以后查看以及与各位大佬朋友们交流学习。如有问题可以私信哦。 本文主要从两个方面介绍毕业设计:硬件,软件(算法)。以及对最后的实验结果进行分析。感兴趣的朋友们可以评论区…...

chatgpt赋能python:使用Python来寻找两个列表不同元素的方法

使用Python来寻找两个列表不同元素的方法 在编写Python程序时,我们经常需要比较两个列表的元素,找出它们之间的不同之处。在搜索引擎优化(SEO)方面,这种比较对于找出两个网站内容的差异也非常有用。在这篇文章中&…...

简单学生管理系统

简单学生管理系统(Java)_封奚泽优的博客-CSDN博客https://blog.csdn.net/weixin_64066303/article/details/130667107?spm1001.2014.3001.5501 转载请注明出处,尊重作者劳动成果。 目录 前期准备: 数据库的连接: 用户账号类:…...

图像金字塔

​ 图像金字塔是由一幅图像的多个不同分辨率的子图构成的图像集合。是通过一个图像不断的降低采样率产生的,最小的图像可能仅仅有一个像素点。下图是一个图像金子塔的示例。从图中可以看到,图像金字塔是一系列以金字塔形状排列的、自底向上分辨率逐渐降低…...

Springboot整合Camunda工作流引擎实现审批流程实例

环境&#xff1a;Spingboot2.6.14 camunda-spring-boot-starter7.18.0 环境配置 依赖配置 <camunda.version>7.18.0</camunda.version> <dependency><groupId>org.camunda.bpm.springboot</groupId><artifactId>camunda-bpm-spring-boo…...

PHP设计模式21-工厂模式的讲解及应用

文章目录 前言基础知识简单工厂模式工厂方法模式抽象工厂模式 详解工厂模式普通的实现更加优雅的实现 总结 前言 本文已收录于PHP全栈系列专栏&#xff1a;PHP快速入门与实战 学会好设计模式&#xff0c;能够对我们的技术水平得到非常大的提升。同时也会让我们的代码写的非常…...

【玩转Docker小鲸鱼叭】理解Docker的核心概念

Docker核心概念 Docker有三大核心概念&#xff1a;镜像&#xff08;Image&#xff09;、容器&#xff08;Container&#xff09;、仓库&#xff08;Repository&#xff09; 1、镜像&#xff08;Image&#xff09; Docker镜像 是我们创建和运行Docker容器的基础&#xff0c;它…...

Eureka 心跳和服务续约源码探秘——图解、源码级解析

🍊 Java学习:社区快速通道 🍊 深入浅出RocketMQ设计思想:深入浅出RocketMQ设计思想 🍊 绝对不一样的职场干货:大厂最佳实践经验指南 📆 最近更新:2023年5月25日 🍊 点赞 👍 收藏 ⭐留言 📝 都是我最大的动力! 文章目录 分布式系统的心跳机制心跳机制的实…...

代码随想录二刷 530 二叉搜索树的最小绝对差 98. 验证二叉搜索树 700. 二叉搜索树中的搜索

530 二叉搜索树的最小绝对差 代码如下 func getMinimumDifference(root *TreeNode) int { var pre *TreeNode res : math.MaxInt var traverse func(root * TreeNode) traverse func(root * TreeNode) { if root nil { return } traverse(root.Left) …...

Docker安装——CentOS7.6(详细版)

ps:docker官网 在 CentOS 上安装 Docker 引擎 |官方文档 &#xff08;&#xff09; 一、确定版本&#xff08;必须是7以上版本&#xff09; cat /etc/redhat-release 二、卸载旧版本&#xff08;或者之前装过&#xff0c;没有安装过就不用管了&#xff09; &#xff08;root用…...

论信息系统项目的整体管理(范文)

论信息系统项目的整体管理&#xff08;范文&#xff09; 【摘要】 2016年10月&#xff0c;XX省卫生健康委启动了XX省分级转诊服务平台建设项目&#xff0c;我在项目中担任项目经理&#xff0c;负责项目的全面管理工作。该平台作为全省上下级医院转诊的信息化通道&#xff0c;…...

【音视频处理】音频编码AAC详解,低码率提高音质?

大家好&#xff0c;欢迎来到停止重构的频道。 本期我们介绍音频编码格式AAC。 AAC是音频最常用的编码格式之一&#xff0c;几乎所有的播放器都支持这个编码格式。 其他音频编码格式都是类似的&#xff0c;只是某些细节存在差别&#xff0c;如压缩算法、某些音频参数存在限制…...

逆函数学习

逆函数 给定关系 R ⊆ X Y R\subseteq X\times Y R⊆XY&#xff0c;颠倒 R R R的所有有序偶可以得到 R R R的逆关系 R ~ ⊆ Y X \tilde{R}\subseteq Y\times X R~⊆YX 但是对于函数 f : X → Y f:X\to Y f:X→Y而言&#xff0c;其逆关系 f ~ \tilde{f} f~​可能不是 Y Y Y到…...

代码审计——SSRF详解

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 漏洞描述02 审计要点03 漏洞特征04 漏洞案例05 修复方案 01 漏洞描述 服务端请求伪造攻击&#xff08;SSRF&#xff09;也成为跨站点端口攻击&#xff0c;是由于一些应用在向第三方主机请求资源时提…...

搭建Scala开发环境

一、Windows上安装Scala 1、到Scala官网下载Scala Scala2.13.10下载网址&#xff1a;https://www.scala-lang.org/download/2.13.10.html 单击【scala-2.13.10.msi】超链接&#xff0c;将scala安装程序下载到本地 2、安装Scala 双击安装程序图标&#xff0c;进入安装向导&…...

BLIP和BLIP2

文章主要是对BLIP2 &#xff08;使用冻结图像编码器和大型语言模型的Bootstrapping语言图像预训练&#xff09;论文的阅读笔记&#xff0c;也对BLIP&#xff08;用于统一视觉语言理解和生成的Bootstrapping语言图像预训练&#xff09;算法进行了简单的介绍。 文章&#xff1a;…...

微信小程序开发实战 ⑨(TabBar)

作者 : SYFStrive 博客首页 : HomePage &#x1f4dc;&#xff1a; 微信小程序 &#x1f4cc;&#xff1a;个人社区&#xff08;欢迎大佬们加入&#xff09; &#x1f449;&#xff1a;社区链接&#x1f517; &#x1f4cc;&#xff1a;觉得文章不错可以点点关注 &#x1f4…...

微前端探秘:初始微前端、现有方案和未来趋势

初识微前端 微前端是什么 概念&#xff1a; 微前端是指存在于浏览器中的微服务。 微前端是一种类似于微服务的架构&#xff0c;它将微服务的理念应用于浏览器端&#xff0c;即将单页面前端应用由单一的单体应用转变为把多个小型前端应用聚合为一体的应用。这就意味着前端应用…...

运维(SRE)成长之路-第2天 文本编辑工具之神VIM

vi和vim简介 在Linux中我们经常编辑修改文本文件&#xff0c;即由ASCII, Unicode 或其它编码的纯文字的文件。之前介绍过nano&#xff0c;实际工作中我们会使用更为专业&#xff0c;功能强大的工具 文本编辑种类&#xff1a; 全屏编辑器&#xff1a;nano&#xff08;字符工具…...

45从零开始学Java之详解static修饰符、静态变量和静态方法

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 在前一篇文章中&#xff0c;壹哥给大家讲解了abstract关键字&#xff0c;从而我们掌握了抽象类与抽象…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...

DAY 26 函数专题1

函数定义与参数知识点回顾&#xff1a;1. 函数的定义2. 变量作用域&#xff1a;局部变量和全局变量3. 函数的参数类型&#xff1a;位置参数、默认参数、不定参数4. 传递参数的手段&#xff1a;关键词参数5 题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一…...

ArcGIS Pro+ArcGIS给你的地图加上北回归线!

今天来看ArcGIS Pro和ArcGIS中如何给制作的中国地图或者其他大范围地图加上北回归线。 我们将在ArcGIS Pro和ArcGIS中一同介绍。 1 ArcGIS Pro中设置北回归线 1、在ArcGIS Pro中初步设置好经纬格网等&#xff0c;设置经线、纬线都以10间隔显示。 2、需要插入背会归线&#xf…...