疲劳驾驶检测系统-YOLOv8/YOLOv7/YOLOv5-疲劳检测、分心检测、玩手机、抽烟、喝水检测(毕业设计)

这篇具有很好参考价值的文章主要介绍了疲劳驾驶检测系统-YOLOv8/YOLOv7/YOLOv5-疲劳检测、分心检测、玩手机、抽烟、喝水检测(毕业设计)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

本项目效果展示视频:
https://www.bilibili.com/video/BV1bj411S7rA/?share_source=copy_web&vd_source=138d2e7f294c3405b6ea31a67534ae1a

1、本项目通过YOLOv8/YOLOv7/YOLOv5、Dlib和PySide2实现了一个疲劳驾驶检测系统,可为一些同学的课设、大作业等提供参考。该项目分为两个检测部分,疲劳检测和分心行为检测。 疲劳检测部分,使用Dlib进行人脸关键点检测,然后通过计算眼睛和嘴巴的开合程度来判断是存在否闭眼或者打哈欠,并使用Perclos模型计算疲劳程度。 分心行为检测部分,使用YOLOv8/YOLOv7/YOLOv5检测是否存在玩手机、抽烟、喝水这三种行为。最终检测效果如图所示。
yolov5吸烟,大作业,YOLO,深度学习,毕业设计,目标检测,课程设计,pytorch,人工智能

2、本项目提供玩手机、抽烟、喝水这三种行为的xml格式目标检测数据集,共3547张图片,如图所示。可用于自己训练,可将YOLOv8/YOLOv7/YOLOv5版本的项目均可提供。
yolov5吸烟,大作业,YOLO,深度学习,毕业设计,目标检测,课程设计,pytorch,人工智能

一、项目环境配置

不熟悉pycharm的anaconda的大兄弟请先看这篇csdn博客,了解pycharm和anaconda的基本操作。
https://blog.csdn.net/ECHOSON/article/details/117220445
anaconda安装完成之后请切换到国内的源来提高下载速度 ,命令如下:

conda config --remove-key channels
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
pip config set global.index-url https://mirrors.ustc.edu.cn/pypi/web/simple

首先创建python3.8的虚拟环境,请在命令行中执行下列操作:

conda create -n yolov8 python==3.8.5
conda activate yolov8

1、pytorch安装(gpu版本和cpu版本的安装)

实际测试情况是YOLOv8在CPU和GPU的情况下均可使用,不过在CPU的条件下训练那个速度会令人发指,所以有条件的小伙伴一定要安装GPU版本的Pytorch,没有条件的小伙伴最好是租服务器来使用。GPU版本安装的具体步骤可以参考这篇文章:https://blog.csdn.net/ECHOSON/article/details/118420968。
需要注意以下几点:
1、安装之前一定要先更新你的显卡驱动,去官网下载对应型号的驱动安装
2、30系显卡只能使用cuda11的版本
3、一定要创建虚拟环境,这样的话各个深度学习框架之间不发生冲突
我这里创建的是python3.8的环境,安装的Pytorch的版本是1.8.0,命令如下:

conda install pytorch==1.8.0 torchvision torchaudio cudatoolkit=10.2 # 注意这条命令指定Pytorch的版本和cuda的版本
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cpuonly # CPU的小伙伴直接执行这条命令即可

安装完毕之后,我们来测试一下GPU是否可以有效调用:

yolov5吸烟,大作业,YOLO,深度学习,毕业设计,目标检测,课程设计,pytorch,人工智能

2、pycocotools的安装

pip install pycocotools-windows

3、其他包的安装

另外的话大家还需要安装程序其他所需的包,包括opencv,matplotlib这些包,不过这些包的安装比较简单,直接通过pip指令执行即可,我们cd到yolov8代码的目录下,直接执行下列指令即可完成包的安装。

pip install -r requirements.txt
pip install pyqt5
pip install labelme

二、玩手机、抽烟、喝水三种行为的检测算法及代码解读

1、YOLOv5介绍(YOLOv8/YOLOv7/YOLOv5版本均可提供)

YOLOv5是一种单阶段目标检测算法,该算法在YOLOv4的基础上添加了一些新的改进思路,使其速度与精度都得到了极大的性能提升。主要的改进思路如下:
1、输入端:在模型训练阶段,提出了一些改进思路,主要包括Mosaic数据增强、自适应锚框计算、自适应图片缩放;
2、基准网络:融合其它检测算法中的一些新思路,主要包括:Focus结构与CSP结构;
3、Neck网络:目标检测网络在BackBone与最后的Head输出层之间往往会插入一些层,YOLOv5中添加了FPN+PAN结构;
4、Head输出层:输出层的锚框机制与YOLOv4相同,主要改进的是训练时的损失函数GIOU_Loss,以及预测框筛选的DIOU_nms。
YOLOv5的模型整体结构如图所示,在本项目算法中, YOLOv5用于目标检测,即检测face、drink、phone、smoke四个目标类别。从而判断驾驶员是否存在玩手机、抽烟、喝水这三种行为,并将检测出来的驾驶员人脸进行框出。
yolov5吸烟,大作业,YOLO,深度学习,毕业设计,目标检测,课程设计,pytorch,人工智能

2、算法实现

使用YOLOv8/YOLOv7/YOLOv5对当前摄像头采集的实时画面进行推理后,可得到相关目标检测结果,包括画面中的目标框类别、目标的置信度、目标框的左上角和右下角坐标(以实时图像的左上角为坐标原点)。再使用一个for循环读取存放了目标类别的列表lab,并使用if-else语句对取出的目标类别进行判断,若目标为"phone"、“smoke”、"drink"中的一种,则分别在前端ui界面中用红色字体显示“正在用手机”、“正在抽烟”、“正在喝水”、“请不要分心”字符串。对存在分心行为的驾驶员进行警示提醒。判断代码如下所示:

 # 如果检测到分心行为
 # 将信息返回到前端ui,使用红色字体来体现
 # 并加ActionCOUNTER减1,以延长循环时间
 for i in lab:
     if(i == "phone"):
         window.label_6.setText("<font color=red>正在用手机</font>")
         window.label_9.setText("<font color=red>请不要分心</font>")
         if ActionCOUNTER > 0:
             ActionCOUNTER -= 1
     elif(i == "smoke"):
         window.label_7.setText("<font color=red>正在抽烟</font>")
         window.label_9.setText("<font color=red>请不要分心</font>")
         if ActionCOUNTER > 0:
             ActionCOUNTER -= 1
     elif(i == "drink"):
         window.label_8.setText("<font color=red>正在喝水</font>")
         window.label_9.setText("<font color=red>请不要分心</font>")
         if ActionCOUNTER > 0:
             ActionCOUNTER -= 1

3、效果展示

3.1 玩手机行为检测效果展示

若检测到玩手机行为,则在界面的右边以红色字体提示“正在用手机”、“请不要分心”,对驾驶员起到警示提醒的作用。并在左侧的实时显示画面中对手机进行框出,同时显示手机目标的置信度。
yolov5吸烟,大作业,YOLO,深度学习,毕业设计,目标检测,课程设计,pytorch,人工智能

3.2 抽烟行为检测效果展示

同理,若在摄像头采集的实时画面中检测到抽烟的行为,则使用“smoke”对烟进行框出,并显示烟的目标置信度。同时在显示窗口的右侧以红色字体提示驾驶人员“正在抽烟”、“请不要分心”。
yolov5吸烟,大作业,YOLO,深度学习,毕业设计,目标检测,课程设计,pytorch,人工智能

3.3 喝水行为检测效果展示

喝水行为的检测与抽烟、玩手机行为检测类似,可以看到,本文算法也能够对喝水行为进行有效检测。
yolov5吸烟,大作业,YOLO,深度学习,毕业设计,目标检测,课程设计,pytorch,人工智能

三、基于Dlib库进行闭眼、打哈欠疲劳检测算法及代码解读

1、Dlib库人脸关键点检测库

Dlib是一个用C++开发的开源工具包,可以用于创建复杂的机器学习算法来解决实际问题,目前已被广泛的应用在工业和学术领域,包括机器人,嵌入式设备,移动电话和大型高性能计算环境。相对于tensorflow和PyTorch,它在图像处理以及人脸面部特征提取、分类及对比这几个方面具有较强的通用性和优越性。因此,Dlib正在越来越广泛地应用在人脸识别技术领域。这个库使用独立封装,在不借助第三方库的情况下,可以直接移植到自己的项目中进行使用。

2、算法流程

在本算法中首先创建一个人脸检测器对象frontal_face_detector来检测图像中是否存在人脸,若存在人脸,则使用detector对象检测图像中的人脸,并返回人脸位置信息。然后再创建一个关键点检测器对象shape_predictor,并读取本项目中已训练好的模型文件。最后,对于每个人脸使用shape_predictor对象检测出其关键点,输出的shape对象即为检测到的关键点信息。对于闭眼疲劳检测而言,首先基于dlib人脸识别的68个特征点、分别获取左右眼面部标志的索引,通过opencv对视频流进行灰度化处理,检测出人眼的位置信息。然后计算眼睛长宽比 EAR,当人眼睁开时,EAR在某个值上下波动,当人眼闭合时,EAR迅速下降,理论上会接近于零。当前帧两双眼睛宽高比与前一帧的差值的绝对值(EAR)大于0.2,则认为是疲劳。对于打哈欠疲劳检测而言,只要产生打哈欠的动作即归类为“疲劳”。主要取人脸六个参考点来计算嘴巴的张开度,检测到嘴巴张开度超过一定阈值,则判为打哈欠疲劳。

3、核心代码

本项目将眨眼、打哈欠的疲劳检测写到了myfatigue.py脚本里面,有详细注释,调用即可。在main.py中进行疲劳判断的核心代码如下:

 # 疲劳判断
 # 眨眼判断
 if eye < EYE_AR_THRESH:
     # 如果眼睛开合程度小于设定好的阈值
     # 则两个和眼睛相关的计数器加1
     COUNTER += 1
     Rolleye += 1
 else:
     # 如果连续2次都小于阈值,则表示进行了一次眨眼活动
     if COUNTER >= EYE_AR_CONSEC_FRAMES:  
         TOTAL += 1
         window.label_3.setText("眨眼次数:" + str(TOTAL))
         # 重置眼帧计数器
         COUNTER = 0
         
 # 哈欠判断,同上
 if mouth > MAR_THRESH: 
     mCOUNTER += 1
     Rollmouth += 1
 else:
     # 如果连续3次都小于阈值,则表示打了一次哈欠
     if mCOUNTER >= MOUTH_AR_CONSEC_FRAMES:  
         mTOTAL += 1
         window.label_4.setText("哈欠次数:" + str(mTOTAL))
         # 重置嘴帧计数器
         mCOUNTER = 0

4、效果展示

将检测出的左右眼部、嘴部区域关键点使用椭圆形绿色线框进行绘制,并在界面右侧的第一行文本提醒区域“疲劳检测”使用红色字体提示“疲劳!!!”,从而对存在眨眼、打哈欠疲劳行为的驾驶人员进行提示警告。另外,在界面右侧的第二行文本中统计当前摄像头画面中驾驶人员的眨眼次数和打哈欠次数,并进行实时显示。
yolov5吸烟,大作业,YOLO,深度学习,毕业设计,目标检测,课程设计,pytorch,人工智能

四、使用Perclos模型计算疲劳程度算法及代码解读

1、算法流程

Perclos疲劳参数是指在单位时间内眼睛闭合程度超过某一阈值(70%、80%等)的时间占总时间的百分比。目前,Perclos方法有三种判断疲劳的不同准则,分别为EM准则、P70准则、P80准则。其具体含义如下:
EM准则:瞳孔被眼睑覆盖超50%的面积,则认为眼睛是闭合的;
P70准则:瞳孔被眼睑覆盖超70%的面积,则认为眼睛是闭合的;
P80准则:瞳孔被眼睑覆盖超过80%的面积,则认为眼睛是闭合的。
本项目考虑到,当人注意力特别集中或处在沉思状态时可能也会有眼睑覆盖瞳孔超过50%甚至70%的可能,所以采用的是P80准则。

2、核心代码

本项目中疲劳判断以150帧作为一个周期,计算出的Perclos模型得分超过0.38时,判为疲劳状态。核心判断代码如下:

 # 疲劳模型
 # 以150帧为一个循环
 # 每一帧Roll加1
 Roll += 1
 # 当检测满150帧时,计算模型得分
 if Roll == 150:
     # 计算Perclos模型得分
     perclos = (Rolleye/Roll) + (Rollmouth/Roll)*0.2
     # 在前端UI输出perclos值
     Ui_MainWindow.printf(window,"过去150帧中,Perclos得分为"+str(round(perclos,3)))
     # 当过去的150帧中,Perclos模型得分超过0.38时,判断为疲劳状态
     if perclos > 0.38:
         Ui_MainWindow.printf(window,"当前处于疲劳状态")
         window.label_10.setText("<font color=red>疲劳!!!</font>")
         Ui_MainWindow.printf(window,"")
     else:
         Ui_MainWindow.printf(window,"当前处于清醒状态")
         window.label_10.setText("清醒")
         Ui_MainWindow.printf(window,"")

3、效果展示

本项目在显示控件里设置了一个窗口,用于实时显示疲劳分数计算结果和判断结果。如图所示,当循环判断150帧中Perclos模型得分超过0.38时,判为疲劳状态,并显示字符串“当前处于疲劳状态”进行提醒。否则,输出字符串“当前处于清醒状态”。该阈值预设为0.38,可根据不同的需求进行手动调节,以使算法获得不同的疲劳判断灵敏度。
yolov5吸烟,大作业,YOLO,深度学习,毕业设计,目标检测,课程设计,pytorch,人工智能

五、总结及源码获取

1、总结

为有效监测驾驶员状态、避免交通事故的发生,本项目利用YOLOv8/YOLOv7/YOLOv5目标检测技术、人脸关键点检测分析技术结合的新方法,对驾驶员的分心、疲劳驾驶行为进行实时监控。首先对驾驶员的抽烟、玩手机、喝水行为进行目标检测;然后根据眼睛区域的Dlib关键点坐标信息计算眼睛纵横比EAR来衡量眼睛张开程度,根据合适的EAR阈值可判断睁眼或闭眼状态,并判断打哈欠的行为;最后基于EAR实测值和EAR阈值对监控视频计算闭眼时间比例(Perclos),度量驾驶员主观疲劳程度,将其与设定的疲劳度阈值进行比较即可判定是否疲劳驾驶。

2、项目资源获取(YOLOv8/YOLOv7/YOLOv5版本均可提供)

项目内容:
yolov5吸烟,大作业,YOLO,深度学习,毕业设计,目标检测,课程设计,pytorch,人工智能
包含完整word版本说明文档,可用于写论文、课设报告的参考。
yolov5吸烟,大作业,YOLO,深度学习,毕业设计,目标检测,课程设计,pytorch,人工智能
资源获取:

获取整套代码、测试视频、训练好的权重、说明文档和相应的目标检测数据集(有偿)
上交硕士,技术够硬,也可以指导深度学习毕设、大作业等。
-------------   -->qq: 3582584734   ---------------

yolov5吸烟,大作业,YOLO,深度学习,毕业设计,目标检测,课程设计,pytorch,人工智能文章来源地址https://www.toymoban.com/news/detail-752943.html

到了这里,关于疲劳驾驶检测系统-YOLOv8/YOLOv7/YOLOv5-疲劳检测、分心检测、玩手机、抽烟、喝水检测(毕业设计)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Dlib&YOLOv5的疲劳驾驶和分心行为检测系统(哈欠&喝水&抽烟&打电话检测)深度学习,Python,OpenCV,PyQT

    演示视频:https://www.bilibili.com/video/BV1eD421j7zy/?spm_id_from=333.999.0.0vd_source=b68c16e2de94acf010fb2e70eb676424 开发技术环境: Pycharm + Python + PyQt5 + OpenCV + YOLOv5, 系统通过驾驶员前方摄像头采集的驾驶行为实时图像,可以输出并显示该驾驶员的驾驶行为结果,将视频和结果显示在上位机界

    2024年04月14日
    浏览(41)
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的快递包裹检测系统(Python+PySide6界面+训练代码)

    摘要:本文介绍了一种基于深度学习的快递包裹检测系统的代码,采用最先进的YOLOv8算法并对比YOLOv7、YOLOv6、YOLOv5等算法的结果,能够准确识别图像、视频、实时视频流以及批量文件中的快递包裹。文章详细解释了YOLOv8算法的原理,并提供了相应的Python实现代码、训练数据集

    2024年03月28日
    浏览(41)
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的布匹缺陷检测系统(Python+PySide6界面+训练代码)

    摘要:本文介绍了一种基于深度学习的布匹缺陷检测系统的代码,采用最先进的YOLOv8算法并对比YOLOv7、YOLOv6、YOLOv5等算法的结果,能够准确识别图像、视频、实时视频流以及批量文件中的布匹缺陷。文章详细解释了YOLOv8算法的原理,并提供了相应的Python实现代码、训练数据集

    2024年03月15日
    浏览(51)
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的玉米病虫害检测系统(Python+PySide6界面+训练代码)

    摘要:本文介绍了一种基于深度学习的玉米病虫害检测系统系统的代码,采用最先进的YOLOv8算法并对比YOLOv7、YOLOv6、YOLOv5等算法的结果·,能够准确识别图像、视频、实时视频流以及批量文件中的玉米病虫害。文章详细解释了YOLOv8算法的原理,并提供了相应的Python实现代码、

    2024年02月22日
    浏览(40)
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的生活垃圾检测与分类系统(Python+PySide6界面+训练代码)

    摘要:本篇博客详细讲述了如何利用深度学习构建一个生活垃圾检测与分类系统,并且提供了完整的实现代码。该系统基于强大的YOLOv8算法,并进行了与前代算法YOLOv7、YOLOv6、YOLOv5的细致对比,展示了其在图像、视频、实时视频流和批量文件处理中识别生活垃圾的准确性。文

    2024年04月29日
    浏览(25)
  • 计算机设计大赛 疲劳驾驶检测系统 python

    🔥 优质竞赛项目系列,今天要分享的是 🚩 机器视觉 opencv 深度学习 驾驶人脸疲劳检测系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享: https:/

    2024年03月12日
    浏览(36)
  • 机器视觉毕业设计 深度学习驾驶人脸疲劳检测系统 - python opencv

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月07日
    浏览(57)
  • 竞赛保研 机器视觉 opencv 深度学习 驾驶人脸疲劳检测系统 -python

    🔥 优质竞赛项目系列,今天要分享的是 🚩 机器视觉 opencv 深度学习 驾驶人脸疲劳检测系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享: https:/

    2024年01月21日
    浏览(33)
  • 竞赛 深度学习驾驶行为状态检测系统(疲劳 抽烟 喝水 玩手机) - opencv python

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的驾驶行为状态检测系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:5分 🧿 更多资料, 项目分享: https://gitee.com/d

    2024年01月21日
    浏览(36)
  • 机器视觉 opencv 深度学习 驾驶人脸疲劳检测系统 -python 计算机竞赛

    🔥 优质竞赛项目系列,今天要分享的是 🚩 机器视觉 opencv 深度学习 驾驶人脸疲劳检测系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享: https:/

    2024年02月05日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包