疲劳驾驶预警系统项目知识点整理

news2024/11/16 17:59:17

 参考:

重磅!头部姿态估计「原理详解 + 实战代码」来啦!-阿里云开发者社区 (aliyun.com)

Dlib模型之驾驶员疲劳检测三(瞌睡点头)_疲劳检测 点头-CSDN博客

python毕业设计 深度学习疲劳检测 驾驶行为检测 - opencv cnn_疲劳驾驶算法-CSDN博客

1.数据集使用什么?

使用开源的人脸数据库训练集模型dlib

该系统采用Dlib库中人脸68个关键点检测shape_predictor_68_face_landmarks.dat的dat模型库及视频中的人脸,之后返回人脸特征点坐标、人脸框及人脸角度等。

2.dlib有什么好处?

  1. 每一个类每一个函数都有详细的文档,并提供了大量的示例代码。
  2. 提供简单的可移植的线程API
  3. 提供很多图像模型算法和图像处理算法Dlib模型人脸特征检测的原理是什么?

Dlib的人脸检测原理?

1.录取数据集(若干64*64大小的图片),改变图片的亮度和对比度。
output_dir = 'D:/myworkspace/JupyterNotebook/People/person/person1'
size = 64 
if not os.path.exists(output_dir):
    os.makedirs(output_dir)
# 改变图片的亮度与对比度 
def relight(img, light=1, bias=0):
    w = img.shape[1]
    h = img.shape[0]
    #image = []
    for i in range(0,w):
        for j in range(0,h):
            for c in range(3):
                tmp = int(img[j,i,c]*light + bias)
                if tmp > 255:
                    tmp = 255
                elif tmp < 0:
                    tmp = 0
                img[j,i,c] = tmp
    return img
#使用dlib自带的frontal_face_detector作为我们的特征提取器
detector = dlib.get_frontal_face_detector()
# 打开摄像头 参数为输入流,可以为摄像头或视频文件
camera = cv2.VideoCapture(0)
2.提取人脸特征点
predictor_path="E:/shape_predictor_68_face_landmarks.dat"#人脸检测模型
predicator = dlib.shape_predictor(predictor_path)#标记关键点,返回关键点预测器
lanmarks=[p.x,p.y] for p in predicator(img1,d).parts()]
#定位人脸关键点,返回68个人脸关键点的位置
3.获取特征数据集写入csv
  • OpenCV也可以进行人脸识别,但是效果不如Dlib好
  • 是一种基于HOG(方向梯度直方图Histogram of Oriented Gradient, HOG)特征描述方法和SVM,将图像中有用信息提取,无用信息删去。
  • 是CPU上最快的检测方法
  • 重量轻的模型

3.系统的核心功能?

  • 随着计算机视觉检测技术在汽车驾驶安全领域的广泛应用,驾驶员疲劳特征识别需要突破传统小部分特征识别上的局限性和单一性。
  • 为此,设计了一种基于OpenCV的驾驶员疲劳特征识别系统。
  • 该识别系统以树莓派为处理核心,利用摄像头获取所需的检测数据,综合分析驾驶员眼动,嘴型及头部姿势特征,进行疲劳判断。
  • 若处于疲劳驾驶状态,则用语音播放方式发出警告。
  • 该系统通过多次调试验证,实时监测驾驶员的驾驶状态,能更加全面,高效识别驾驶员是否属于疲劳驾驶。

 4.疲劳驾驶预警系统的核心功能?

  1. 识别出驾驶员姓名
  2. 分别通过Blinks,Yawning,Nod来表示驾驶员的眨眼,打哈欠,点头数
  3. 正常的睁眼闭眼不会被计入,疲劳状态的半睁半闭Blinks+1
  4. 左右查看车况,抬头不会误计入
  5. 当连续低头超过2s,或者当连续闭眼超过2会自动报警,并存入抓拍图片。

5.68个关键点来识别人脸,关键点主要部位?

眉毛轮廓,双眼轮廓,鼻子轮廓,嘴巴轮廓,脸颊轮廓

6.如何检测眨眼、打哈欠?

  • 闭眼检测,提取人眼部分的点。通过论文提出的眼睛纵横比EAR(EyeAspectRatio)值。EAR越大,睁眼;EAR越小,闭眼。左右眼的平均值作为EAR值。
  • 计算视频中每一帧的眼睛纵横比EAR值,当EAR值小于0.2并且连续3帧时,计一次blink
  • 类似方法计算哈欠数,嘴巴纵横比,Yawn为打哈欠的帧数,N为1 min内总帧数,设双阈值法哈欠检测的阈值为10%,当打哈欠频率Freq>10%时,则认为驾驶员打了1个深度哈欠或者至少连续2个浅哈欠,此时系统进行疲劳提醒。

7.如何检测瞌睡点头?

基于HPE(Head Pose Estimation)算法的点头检测算法步骤:

  1. 2D人脸关键点检测:加载人脸检测和姿势模型估计
  2. 3D人脸模型匹配:目的是得到世界坐标系中人的点,通过算法对不同的人脸拟合出不同的3D人脸模型,3DMM,不同的3D人脸模型有不同的中心位置。
  3. 求解3D点和对应2D点的转换关系:世界坐标系通过旋转平移到相机坐标系,相机坐标系通过透视投影转换到图像坐标系,3D转换到2D,最后图像坐标系转换为像素坐标系。
  4. 判断是否点头:主要是判断旋转角,由于瞌睡时主要考虑pitch俯仰角和roll旋转角,在一个时间段内10s内,当 IPitchI≥20° 或者 |Rolll≥20° 的时间比例超过0.3时,就认为驾驶员处于打瞌睡的状态,发出预警。                                                                        

8.pytorch和OpenCV有什么区别?

  • OpenCV是计算机视觉库,用于处理大量图像数据和视频数据;pytorch是深度学习框架,需要对深度学习原理有一定的了解从而构建和训练神经网络模型。
  • pytorch适合于构建和训练神经网络模型而OpenCV适合于视频处理和图像处理。
  • OpenCV主要用于实时场景:如视频处理,人脸识别等,而pytorch主要用于离线场景:比如数据分析,模型构建等。
  • 都是很好的工具,要根据不同的需求选用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1574991.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试:HashMap

目录 1、底层数据结构&#xff0c;1.7 与1.8有何不同? 2、为何要用红黑树&#xff0c;为何一上来不树化&#xff0c;树化阈值为何是8&#xff0c;何时会树化&#xff0c;何时会退化为链表? 3、索引如何计算? hashCode都有了&#xff0c;为何还要提供hash()方法?数组容量为…

交换机与队列的简介

1.流程 首先先介绍一个简单的一个消息推送到接收的流程&#xff0c;提供一个简单的图 黄色的圈圈就是我们的消息推送服务&#xff0c;将消息推送到 中间方框里面也就是 rabbitMq的服务器&#xff0c;然后经过服务器里面的交换机、队列等各种关系&#xff08;后面会详细讲&…

保研复习数据结构-图(10)

一.图的定义和基本术语 1.什么是图&#xff1f; 图(Graph)是由顶点的有穷非空集合V(G)和顶点之间边的集合E(G)组成&#xff0c;通常表示为:G(V,E)&#xff0c;其中&#xff0c;G表示图&#xff0c;V是图G中顶点的集合&#xff0c;E是图G中边的集合。 2.什么是完全图&#xf…

【第十二篇】使用BurpSuite实现CSRF(实战案例)

CSRF存在前提:简单的身份验证只能保证请求是发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的 业务场景:新增、删除、收藏、编辑、保存使用Burp发现CSRF漏洞的过程如下。 1、如图,存在修改邮箱的功能点如下: 2、修改邮箱的流量包,此时邮箱已被修改: 思路:是…

12、最小覆盖子串

如何想到这个解法 问题的特点&#xff1a; 首先&#xff0c;认识到这是一个关于子串的问题&#xff0c;而且需要考虑子串的最小长度。这提示我们可能需要使用一种方式来逐步探索不同的子串。滑动窗口的适用性&#xff1a;滑动窗口是处理子串问题的常用技巧&#xff0c;特别是当…

X年后,ChatGPT会替代底层程序员吗?

能不能替代&#xff0c;真的很难说&#xff0c;因为机器换掉人&#xff0c;这其实是一个伦理问题。 其实说白了&#xff0c;任何行业在未来都会被AI或多或少的冲击到&#xff0c;因为ChatGPT做为一个可以持续提升智能的AI&#xff0c;在某些方面的智能程度超过人类并不是什么难…

笛卡尔树[天梯赛二叉树专项训练]

文章目录 题目描述思路AC代码 题目描述 输入样例1 6 8 27 5 1 9 40 -1 -1 10 20 0 3 12 21 -1 4 15 22 -1 -1 5 35 -1 -1 输出样例1 YES 输入样例2 6 8 27 5 1 9 40 -1 -1 10 20 0 3 12 11 -1 4 15 22 -1 -1 50 35 -1 -1 输出样例2 NO思路 见注释 AC代码 #include <bits/st…

5. 4 二重循环将二维数组的某列、某矩形转大写

5. 4 二重循环将二维数组的某列、某矩形转大写 1. 把每一行的b都变成大写 assume cs:codesg,ds:data,ss:stack data segmeNTstr db aaaaabbbbbcccccdb aaaaabbbbbcccccdb aaaaabbbbbcccccdb aaaaabbbbbccccc,$ data endsstack segmentdb 10 dup(0) stack endscodesg SEgments…

【Vue】Vue3中的OptionsAPI与CompositionAPI

文章目录 OptionsAPICompositionAPI对比总结 OptionsAPI 中文名:选项式API通过定义methods,computed,watch,data等属性方法&#xff0c;处理页面逻辑。以下是OptionsAPI代码结构 实例代码: <script lang"ts">// js或者tsimport { defineComponent } from vu…

豆瓣9.7,这部Java神作第3版重磅上市!

Java 程序员们开年就有重磅好消息&#xff0c;《Effective Java 中文版&#xff08;原书第 3 版&#xff09;》要上市啦&#xff01; 该书的第1版出版于 2001 年&#xff0c;当时就在业界流传开来&#xff0c;受到广泛赞誉。时至今日&#xff0c;已热销近20年&#xff0c;本书…

React - 连连看小游戏

简介 小时候经常玩连连看小游戏。在游戏中&#xff0c;当找到2个相同的元素就可以消除元素。 本文会借助react实现连连看小游戏。 实现效果 实现难点 1.item 生成 1. 每一个图片都是一个item&#xff0c;items数组的大小为size*size。 item对象包括grid布局的位置&#xff0c;…

UE小:UE5.3无法创建C++工程

当您在使用Unreal Engine (UE) 构建项目时&#xff0c;如果遇到以下问题&#xff1a; Running C:/Program Files/Epic Games/UE\_5.3/Engine/Build/BatchFiles/Build.bat -projectfiles -project"C:/UEProject/Shp\_1/Shp\_1.uproject" -game -rocket -progress Usi…

网络基础三——初识IP协议

网络基础三 ​ 数据通过应用层、传输层将数据传输到了网络层&#xff1b; ​ 传输层协议&#xff0c;如&#xff1a;TCP协议提供可靠性策略或者高效性策略&#xff0c;UDP提供实时性策略&#xff0c;保证向下层交付的数据是符合要求的的&#xff1b;而网络层&#xff0c;如&a…

websokcet服务端实现

一/websokcet服务端实现 步骤一&#xff1a; springboot底层帮我们自动配置了websokcet&#xff0c;引入maven依赖 1 2 3 4 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</arti…

分享10个免费高可用的GPT3.5和4.0网站并做功能测试【第一个】

1.介绍 网址&#xff1a;直接点&#xff1a;aicnn 或者 www.aicnn.cn 基于ChatGPT可以实现智能聊天、绘画生成、高清文本转语音、论文润色等多种功能&#xff0c;基于sd和mj实现的绘画功能&#xff0c;下面是功能测试&#xff1a; 博主从 1.GPT3.5是否完全免费/是否限制频率、…

基于SSM的基于个人需求和地域特色的外卖推荐系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的基于个人需求和地域特色的外卖推荐系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

作为一个前端,在入职新公司如何快速安装好开发环境

由于电脑运行内存才16G有点卡&#xff0c;今天公司给我们换了32G内存&#xff0c;是直接整个主机都换了&#xff0c;环境自然得重新安装&#xff0c;在装的过程中&#xff0c;自己会有些心得体会&#xff0c;就是想着一个新人如何快速安装环境。 个人说一下我的思路&#xff1a…

SPI接口原理以及读写接口用例的详细介绍

一&#xff0c;spi接口原理 SPI接口&#xff0c;即串行外设接口&#xff08;Serial Peripheral Interface&#xff09;&#xff0c;是一种同步串行数据传输协议。它主要用于连接微处理器和各种外设&#xff0c;如存储器、传感器、ADC&#xff08;模数转换器&#xff09;和DAC&…

LLM 构建Data Multi-Agents 赋能数据分析平台的实践之②:数据治理之二(自动处理)

前述 在前文的multi Agents for Data Analysis的设计说起&#xff0c;本文将继续探索和测试借助llm实现基于私有知识库的数据治理全自动化及智能化。整体设计如下&#xff1a; 整个体系设计了3个Agent以及一个Planer&Execute Agent&#xff0c;第一个Agent用于从企业数据…

蓝桥杯真题代码记录(数位排序

目录 1. 题目&#xff1a;2. 我的代码&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 小蓝对一个数的数位之和很感兴趣, 今天他要按照数位之和给数排序。当 两个数各个数位之和不同时, 将数位和较小的排在前面, 当数位之和相等时, 将数值小的排在前面。 例如, 2022 排在 40…