深度学习目标检测课程设计pytorch人工智能疲劳驾驶检测系统YOLOv8/YOLOv7/YOLOv5疲劳检测分心检测玩手机抽烟喝水检测(毕业设计)

前言一、项目环境配置1、pytorch安装(gpu版本和cpu版本的安装)2、pycocotools的安装3、其他包的安装

二、玩手机、抽烟、喝水三种行为的检测算法及代码解读1、YOLOv5介绍(YOLOv8/YOLOv7/YOLOv5版本均可提供)2、算法实现3、效果展示3.1玩手机行为检测效果展示3.2抽烟行为检测效果展示3.3喝水行为检测效果展示

三、基于Dlib库进行闭眼、打哈欠疲劳检测算法及代码解读1、Dlib库人脸关键点检测库2、算法流程3、核心代码4、效果展示

四、使用Perclos模型计算疲劳程度算法及代码解读1、算法流程2、核心代码3、效果展示

五、总结及源码获取1、总结2、项目资源获取(YOLOv8/YOLOv7/YOLOv5版本均可提供)

前言

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

2、本项目提供玩手机、抽烟、喝水这三种行为的xml格式目标检测数据集,共3547张图片,如图所示。可用于自己训练,可将YOLOv8/YOLOv7/YOLOv5版本的项目均可提供。

一、项目环境配置

condaconfig--remove-keychannels

condaconfig--setshow_channel_urlsyes

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

condacreate-nyolov8python==3.8.5

condaactivateyolov8

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

condainstallpytorch==1.8.0torchvisiontorchaudiocudatoolkit=10.2#注意这条命令指定Pytorch的版本和cuda的版本

condainstallpytorch==1.8.0torchvision==0.9.0torchaudio==0.8.0cpuonly#CPU的小伙伴直接执行这条命令即可

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

2、pycocotools的安装

pipinstallpycocotools-windows

3、其他包的安装

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

pipinstall-rrequirements.txt

pipinstallpyqt5

pipinstalllabelme

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

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四个目标类别。从而判断驾驶员是否存在玩手机、抽烟、喝水这三种行为,并将检测出来的驾驶员人脸进行框出。

2、算法实现

#如果检测到分心行为

#将信息返回到前端ui,使用红色字体来体现

foriinlab:

if(i=="phone"):

window.label_6.setText("正在用手机")

window.label_9.setText("请不要分心")

ifActionCOUNTER>0:

ActionCOUNTER-=1

elif(i=="smoke"):

window.label_7.setText("正在抽烟")

elif(i=="drink"):

window.label_8.setText("正在喝水")

3、效果展示

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

若检测到玩手机行为,则在界面的右边以红色字体提示“正在用手机”、“请不要分心”,对驾驶员起到警示提醒的作用。并在左侧的实时显示画面中对手机进行框出,同时显示手机目标的置信度。

3.2抽烟行为检测效果展示

同理,若在摄像头采集的实时画面中检测到抽烟的行为,则使用“smoke”对烟进行框出,并显示烟的目标置信度。同时在显示窗口的右侧以红色字体提示驾驶人员“正在抽烟”、“请不要分心”。

3.3喝水行为检测效果展示

喝水行为的检测与抽烟、玩手机行为检测类似,可以看到,本文算法也能够对喝水行为进行有效检测。

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

1、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中进行疲劳判断的核心代码如下:

#疲劳判断

#眨眼判断

ifeye

#如果眼睛开合程度小于设定好的阈值

COUNTER+=1

Rolleye+=1

else:

#如果连续2次都小于阈值,则表示进行了一次眨眼活动

ifCOUNTER>=EYE_AR_CONSEC_FRAMES:

TOTAL+=1

window.label_3.setText("眨眼次数:"+str(TOTAL))

#重置眼帧计数器

COUNTER=0

#哈欠判断,同上

ifmouth>MAR_THRESH:

mCOUNTER+=1

Rollmouth+=1

#如果连续3次都小于阈值,则表示打了一次哈欠

ifmCOUNTER>=MOUTH_AR_CONSEC_FRAMES:

mTOTAL+=1

window.label_4.setText("哈欠次数:"+str(mTOTAL))

#重置嘴帧计数器

mCOUNTER=0

4、效果展示

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

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

1、算法流程

2、核心代码

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

#疲劳模型

#以150帧为一个循环

#每一帧Roll加1

Roll+=1

#当检测满150帧时,计算模型得分

ifRoll==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时,判断为疲劳状态

ifperclos>0.38:

Ui_MainWindow.printf(window,"当前处于疲劳状态")

window.label_10.setText("疲劳!!!")

Ui_MainWindow.printf(window,"")

Ui_MainWindow.printf(window,"当前处于清醒状态")

window.label_10.setText("清醒")

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

五、总结及源码获取

1、总结

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

项目内容:包含完整word版本说明文档,可用于写论文、课设报告的参考。资源获取:

获取整套代码、测试视频、训练好的权重、说明文档和相应的目标检测数据集(有偿)

上交硕士,技术够硬,也可以指导深度学习毕设、大作业等。

THE END
1.基于深度学习的非机动车头盔佩戴检测识别系统:YOLOv5与UI界面YOLOv5(You Only Look Once version 5)是目前广泛应用于目标检测的深度学习模型,因其高效的检测性能和快速的推理速度,成为解决这一问题的理想选择。结合YOLOv5和图形用户界面(UI)设计,本文将构建一个基于深度学习的非机动车头盔佩戴检测识别系统,为智能交通提供有效的解决方案。 https://blog.csdn.net/m0_52343631/article/details/144078194
2.基于改进YOLOv5的交通标志识别方法摘要:交通标志检测是自动驾驶领域重要的环节,针对当前交通标志的识别存在漏检、误检、模型参数多,以及常见且复杂的代表性真实环境情况,如雾天鲁棒性差的问题,提出一种改进YOLOv5的小目标交通标志识别算法.首先对数据集进行雾化操作以适应在雾天情况下的准确识别,使用更加轻量的部分卷积(partial convolution,PConv)构建PC3https://d.wanfangdata.com.cn/periodical/gdgc202406003
3.基于改进YOLOv5的昏暗小目标交通标志识别摘要:为了实时检测并识别路上的交通标志, 针对在不良光照情况影响下小型交通标志的识别精确度较低、误检、漏检严重的问题, 提出了一种基于改进YOLOv5的交通标志识别模型.首先在YOLOv5模型的浅层特征图层增加一次concat操作, 将浅层的特征信息结合中间特征图层作为一个检测头, 有利于小目标交通标志的识别效率. 其次将https://c-s-a.org.cn/html/2023/5/9056.html
4.YOLOv5实战中国交通标志识别共31课时计算机视觉课程在无人驾驶中,交通标志识别是一项重要的任务。YOLOv5是目前流行的强悍的目标检测技术。本项目以中国交通标志数据集TT100K为训练对象,采用YOLOv5目标检测方法实现实时交通标志识别。 本课程的YOLOv5使用PyTorch版的ultralytics/yolov5,分别在Windows和Ubuntu系统上做中国交通标志识别的项目演示。具体项目过程包括:安装软件环https://edu.51cto.com/course/28196.html
5.项目4(单目测距与测速+摔倒检测+目标检测+目标跟踪+姿态识别+简介:计算机视觉实战项目4(单目测距与测速+摔倒检测+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A_路径规划+行人车辆计数+动物识别等)-1 基于YOLOv5的无人机视频检测与计数系统 摘要: 无人机技术的快速发展和广泛应用给社会带来了巨大的便利,但也带来了一系列的安全隐患。为了实现对无人机的有https://developer.aliyun.com/article/1446535
6.复杂环境下基于深度学习的交通标志牌识别算法研究复杂环境下基于深度学习的交通标志牌识别算法研究,交通标志识别,深度学习,图像预处理,YOLOv5模型,坐标注意力,随着深度学习算法被应用在越来越多的领域中,智能交通系统领域的研究工作也在不断发展与创新。交通标志牌是智能交通系统不可或缺的https://wap.cnki.net/lunwen-1023800446.html
7.交通标志识别:YOLOv5+streamlit+GTSRB交通标志识别 介绍 YOLOv5+streamlit+GTSRB 注意事项 此库中包含yolov5和streamlit,streamlit video使用时请将mp4文件放至data文件夹下,此外本库不包含YOLOv5训练模型权重,需自行下载 所需环境 YOLOv5 base --- matplotlib>=3.2.2 numpy>=1.18.5 opencv-python>=4.1.2https://gitee.com/chenjie0705/traffic-sign-recognition
8.基于改进的YOLOv5的学生行为识别方法.pdfG06V 10/764 (2022.01) G06V 10/774 (2022.01) G06V 10/80 (2022.01) G06V 10/82 (2022.01) 权利要求书3页 说明书6页 附图2页 (54)发明名称 基于改进的YOLOv5的学生行为识别方法 (57)摘要 本发明公开了一种基于改进的YOLOv5的学 生行为识别方法,该算法针对轻量化的小规模学 生课堂行为识别问题,https://m.book118.com/html/2023/0529/6024234022005135.shtm
9.基于CBAM和BiFPN改进YoloV5的渔船目标检测2022 基于 CBAM 和 BiFPN 改进 YoloV5 的渔船目标检测 张德春1,李海涛1,李 勋2,张 雷3 (1 青岛科技大学信息科学技术学院,山东青岛 266000; 2 青岛西海岸新区海洋发展局,山东青岛 266200; 3 青岛励图高科信息技术有限公司,山东青岛 266200) 摘要:在渔港高点监控渔船目 标的场景下, 对渔船检测经常丢失和检测https://fm.fmiri.ac.cn/CN/PDF/543
10.中文交通标志CCTSDB数据集训练集2中国交通 标志 C CTSDB数据集训练集9,里面 有800个 选项 一半 是txt,文件 中存一半数据图片 上传者:weixin_32759777时间:2020-06-18 YOLOV5交通标志识别检测数据集+代码+模型+教学视频 通过拍照标注的形式标注数据 交通标志的目标检测算法在计算机视觉领域一直属于热点研究问题,改进的优化算法不断地被提出。 目前的https://www.iteye.com/resource/weixin_32759777-12530423
11.一种基于改进的YOLOv5和DeepSORT的行人追踪方法1.本发明涉及计算机视觉技术领域,具体涉及一种基于改进的yolov5和deepsort(simple online and realtime tracking with a deep association metric,使用深度关联度量的简单在线实时跟踪)的行人追踪方法。 背景技术: 2.中国交通事业发展迅速,已进入基础设施发展、服务水平提高和转型发展的黄金时期。随着道路交通的发展,交通https://www.xjishu.com/zhuanli/55/202210369883.html