基于YOLOv5的疲劳驾驶检测系统,疲劳驾驶数据集
基于YOLOv5的疲劳驾驶检测系统如何配置环境如何构建数据集模型项目介绍软件PycharmAnaconda环境python3.8 tensorflow2.9.1 torch1.8.0 PyQt5文件1.完整程序文件.py等2.UI界面源文件、图标.ui、.qrc、.py等3.测试图片、视频文件.jpeg、.mp4、.avi等4.模型参数、配置文件.weights、.cfg等功能基于YOLOv5的疲劳驾驶检测系统使用深度学习技术检测常见驾驶图片、视频和实时视频中的疲劳行为识别其闭眼、打哈欠等结果并记录和保存。在界面中可以选择各种图片、视频进行检测识别;可对图像中存在的多目标进行识别分类检测速度快、识别精度。1.选择图片识别2.视频识别3. 摄像头实时检测声明以下代码仅供参考基于YOLOv5构建一个疲劳驾驶检测系统。以下是详细的步骤和完整的代码示例。假设你已经有一个训练好的YOLOv5模型并且环境已经配置好。步骤概述安装依赖准备数据集加载预训练模型实现疲劳驾驶检测逻辑构建GUI应用程序运行应用程序1. 安装依赖确保你已经安装了所有必要的库包括PyTorch、YOLOv5和其他相关库。conda create-nfatigue_detectionpython3.8conda activate fatigue_detection pipinstalltorch1.8.0torchvision0.9.0 PyQt5 opencv-python-headless matplotlib pillow2. 准备数据集假设你的数据集已经转换为YOLOv5格式并且目录结构如下dataset/ ├── images/ │ ├── train/ │ │ ├── image1.jpg │ │ └── ... │ ├── val/ │ │ ├── image1.jpg │ │ └── ... │ └── test/ │ ├── image1.jpg │ └── ... └── labels/ ├── train/ │ ├── image1.txt │ └── ... ├── val/ │ ├── image1.txt │ └── ... └── test/ ├── image1.txt └── ...每个图像文件对应一个标签文件标签文件包含对象的类别ID和边界框坐标x_center, y_center, width, height归一化到[0, 1]范围。3. 加载预训练模型假设你已经有了一个训练好的YOLOv5模型权重文件best.pt。4. 实现疲劳驾驶检测逻辑我们将使用YOLOv5进行目标检测并识别闭眼和打哈欠等行为。fatigue_detection_logic.pyimportcv2importtorchfrompathlibimportPathfrommodels.experimentalimportattempt_loadfromutils.generalimportnon_max_suppression,scale_coordsfromutils.plotsimportplot_one_boxfromutils.torch_utilsimportselect_deviceclassFatigueDetection:def__init__(self,weightsbest.pt):self.deviceselect_device()self.modelattempt_load(weights,map_locationself.device)self.strideint(self.model.stride.max())# model strideself.namesself.model.module.namesifhasattr(self.model,module)elseself.model.names# get class namesdefdetect_image(self,img):img0img.copy()imgself.preprocess(img)withtorch.no_grad():predself.model(img)[0]prednon_max_suppression(pred,0.4,0.5,classesNone,agnosticFalse)fori,detinenumerate(pred):# detections per imagegntorch.tensor(img0.shape)[[1,0,1,0]]# normalization gain whwhiflen(det):det[:,:4]scale_coords(img.shape[2:],det[:,:4],img0.shape).round()for*xyxy,conf,clsinreversed(det):labelf{self.names[int(cls)]}{conf:.2f}plot_one_box(xyxy,img0,labellabel,color(0,255,0),line_thickness3)returnimg0defpreprocess(self,img):imgcv2.cvtColor(img,cv2.COLOR_BGR2RGB)imgcv2.resize(img,(640,640))imgimg/255.0imgnp.transpose(img,(2,0,1))[::-1]imgnp.ascontiguousarray(img)imgtorch.from_numpy(img).to(self.device)imgimg.float()img/255.0ifimg.ndimension()3:imgimg.unsqueeze(0)returnimg5. 构建GUI应用程序使用PyQt5构建一个简单的GUI应用程序允许用户上传图像、视频并进行实时摄像头检测。GUI 应用程序[titleFatigue Driving Detection GUI using YOLOv5]importsysimportcv2importnumpyasnpfromPyQt5.QtWidgetsimportQApplication,QMainWindow,QLabel,QPushButton,QVBoxLayout,QWidget,QFileDialog,QMessageBox,QComboBoxfromPyQt5.QtGuiimportQPixmap,QImagefromfatigue_detection_logicimportFatigueDetectionclassFatigueDetectionApp(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(Fatigue Driving Detection Using YOLOv5)self.setGeometry(100,100,800,600)self.original_image_labelQLabel(self)self.detected_image_labelQLabel(self)self.upload_buttonQPushButton(Upload Image,self)self.upload_button.clicked.connect(self.upload_image)self.video_buttonQPushButton(Upload Video,self)self.video_button.clicked.connect(self.upload_video)self.camera_buttonQPushButton(Camera Detection,self)self.camera_button.clicked.connect(self.start_camera)self.stop_buttonQPushButton(Stop Camera,self)self.stop_button.clicked.connect(self.stop_camera)self.stop_button.setEnabled(False)self.method_comboQComboBox(self)self.method_combo.addItems([Image,Video,Camera])self.method_combo.currentIndexChanged.connect(self.update_method)layoutQVBoxLayout()layout.addWidget(self.original_image_label)layout.addWidget(self.detected_image_label)layout.addWidget(self.upload_button)layout.addWidget(self.video_button)layout.addWidget(self.camera_button)layout.addWidget(self.stop_button)layout.addWidget(self.method_combo)containerQWidget()container.setLayout(layout)self.setCentralWidget(container)self.fatigue_detectorFatigueDetection(weightsbest.pt)self.detection_methodImageself.capNonedefupdate_method(self,index):self.detection_method[Image,Video,Camera][index]defupload_image(self):optionsQFileDialog.Options()file_name,_QFileDialog.getOpenFileName(self,QFileDialog.getOpenFileName(),,Images (*.png *.xpm *.jpg);;All Files (*),optionsoptions)iffile_name:imagecv2.imread(file_name)detected_imageself.fatigue_detector.detect_image(image)original_pixmapQPixmap(file_name)detected_pixmapQPixmap.fromImage(self.convert_to_qimage(detected_image))self.original_image_label.setPixmap(original_pixmap.scaled(350,350))self.detected_image_label.setPixmap(detected_pixmap.scaled(350,350))defupload_video(self):optionsQFileDialog.Options()file_name,_QFileDialog.getOpenFileName(self,QFileDialog.getOpenFileName(),,Videos (*.mp4 *.avi);;All Files (*),optionsoptions)iffile_name:capcv2.VideoCapture(file_name)whilecap.isOpened():ret,framecap.read()ifnotret:breakdetected_frameself.fatigue_detector.detect_image(frame)cv2.imshow(Detected Video,detected_frame)ifcv2.waitKey(25)0xFFord(q):breakcap.release()cv2.destroyAllWindows()defstart_camera(self):self.capcv2.VideoCapture(0)ifnotself.cap.isOpened():QMessageBox.warning(self,Warning,Cannot open camera.)returnself.timerQTimer(self)self.timer.timeout.connect(self.update_frame)self.timer.start(25)self.stop_button.setEnabled(True)defstop_camera(self):ifself.capisnotNone:self.cap.release()self.timer.stop()self.stop_button.setEnabled(False)defupdate_frame(self):ret,frameself.cap.read()ifret:detected_frameself.fatigue_detector.detect_image(frame)detected_pixmapQPixmap.fromImage(self.convert_to_qimage(detected_frame))self.detected_image_label.setPixmap(detected_pixmap.scaled(350,350))defconvert_to_qimage(self,cv_image):rgb_imagecv2.cvtColor(cv_image,cv2.COLOR_BGR2RGB)h,w,chrgb_image.shape bytes_per_linech*w qimageQImage(rgb_image.data,w,h,bytes_per_line,QImage.Format_RGB888)returnqimageif__name____main__:appQApplication(sys.argv)windowFatigueDetectionApp()window.show()sys.exit(app.exec_())解释安装依赖确保安装了所有必要的库。准备数据集按照YOLOv5的要求组织数据集。加载预训练模型加载训练好的YOLOv5模型权重文件best.pt。实现疲劳驾驶检测逻辑使用YOLOv5进行目标检测并识别闭眼和打哈欠等行为。构建GUI应用程序创建主窗口和布局。添加按钮用于上传图像、视频和启动/停止摄像头检测。实现图像上传功能。实现视频上传功能。实现摄像头实时检测功能。运行应用程序保存上述脚本到相应的Python文件中然后运行训练和评估脚本conda activate fatigue_detection python fatigue_detection_gui.py

相关新闻

Agent 评测系统架构:从指标分层到 GT/Judge 闭环的工程化落地

Agent 评测系统架构:从指标分层到 GT/Judge 闭环的工程化落地

拆解 Agent 评测如何用指标分层、GT 来源和 Judge 校准,形成可回归的质量闭环。 原文链接:AI 小老六 导语 ​Agent 上线后​,最难回答的问题往往不是“模型有没有变强”,而是“这个 Agent 在业务里到底有没有帮上忙”。传统软件可…

2026/7/9 12:29:17 阅读更多 →
A3910与STM32F030RC电机控制方案解析

A3910与STM32F030RC电机控制方案解析

1. A3910与STM32F030RC的黄金组合解析 在嵌入式电机控制领域,Allegro Microsystems的A3910双半桥电机驱动器和STMicroelectronics的STM32F030RC微控制器的组合堪称经典配置。这套方案特别适合需要精确控制低压直流电机的场景,从智能家居的自动窗帘到工业…

2026/7/9 12:29:17 阅读更多 →
Dynamics 365 Custom API 插件开发:3步关联与调试排错指南

Dynamics 365 Custom API 插件开发:3步关联与调试排错指南

Dynamics 365 Custom API插件开发实战:从关联到调试的完整指南在当今企业数字化转型浪潮中,Dynamics 365作为微软核心业务应用平台,其扩展性直接决定了企业能否快速响应业务变化。Custom API作为Dataverse中的"瑞士军刀"&#xff0…

2026/7/9 12:29:17 阅读更多 →

最新新闻

从命令行到CI/CD:LTF与主流工具集成的终极指南

从命令行到CI/CD:LTF与主流工具集成的终极指南

从命令行到CI/CD:LTF与主流工具集成的终极指南 【免费下载链接】LTF A tool dedicated to automated functional testing and performance testing of operating systems. 项目地址: https://gitcode.com/openeuler/LTF 前往项目官网免费下载:htt…

2026/7/9 13:11:32 阅读更多 →
基于BQ25887的锂电池组智能平衡系统设计

基于BQ25887的锂电池组智能平衡系统设计

1. 项目背景与核心器件选型 在锂电池组应用中,电池单元之间的电压不平衡是影响整体性能和寿命的关键问题。当串联电池组中存在容量或内阻差异时,充电过程中会出现部分电池过充而其他电池未充满的情况。这不仅降低可用容量,还会加速电池老化。…

2026/7/9 13:11:32 阅读更多 →
直流有刷电机驱动方案:TC78H653FTG与GD32VF103VBT6组合应用

直流有刷电机驱动方案:TC78H653FTG与GD32VF103VBT6组合应用

1. 项目背景与核心器件解析在工业自动化和消费电子领域,直流有刷电机因其结构简单、控制方便、成本低廉等优势,始终占据着重要地位。根据市场调研数据显示,2023年全球直流电机市场规模已达到213亿美元,其中直流有刷电机占比超过35…

2026/7/9 13:09:32 阅读更多 →
AI办公自动化实战:WorkBuddy与Codex工具全解析与工作流构建

AI办公自动化实战:WorkBuddy与Codex工具全解析与工作流构建

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 最近在技术社区和开发者圈子中,关于 AI 办公自动化的讨论热度持续攀升。无论是处理重复性的文档任务、编写代码、分析数据…

2026/7/9 13:09:31 阅读更多 →
LV3296与STM32F439ZG的高性能嵌入式数据采集系统设计

LV3296与STM32F439ZG的高性能嵌入式数据采集系统设计

1. 项目概述:LV3296与STM32F439ZG的协同工作在嵌入式系统开发中,LV3296作为一款高性能的信号处理芯片,与STM32F439ZG微控制器的组合为实时数据采集和处理提供了理想的解决方案。这个组合特别适合需要精确时序控制和高吞吐量数据处理的场景&am…

2026/7/9 13:07:30 阅读更多 →
2026年AI写作论文工具哪家强?实测PaperRed vs ChatGPT vs 豆包,学生党必看避坑指南

2026年AI写作论文工具哪家强?实测PaperRed vs ChatGPT vs 豆包,学生党必看避坑指南

一句话答案:2026年实测对比发现,PaperRed在论文写作专业性、格式规范性和学术合规性上全面领先ChatGPT和豆包,是学生写论文的首选AI工具。一、为什么传统AI写论文总是翻车?很多学生在用AI写论文时都踩过这些坑:• 用Ch…

2026/7/9 13:05:30 阅读更多 →

日新闻

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource 还在为Foobar2000找不到高质…

2026/7/9 0:01:04 阅读更多 →
ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍 【免费下载链接】ElegantBook Elegant LaTeX Template for Books 项目地址: https://gitcode.com/gh_mirrors/el/ElegantBook 你是否曾经为学术书籍的封面设计而烦恼?想要一个既专业又美观的封…

2026/7/9 0:03:06 阅读更多 →
如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南 【免费下载链接】pyodbc Python ODBC bridge 项目地址: https://gitcode.com/gh_mirrors/py/pyodbc 在当今数据驱动的商业环境中,企业级数据库连接已成为现代应用开发的核心需求。pyodbc作为一款强大…

2026/7/9 0:07:11 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/8 16:59:55 阅读更多 →

月新闻