基于YOLO+DeepSeek的疲劳驾驶检测系统 YOLO+DeepSeek+疲劳驾驶检测系统 Pytorch+SpringBoot+Flask+Vue
YOLODeepSeek疲劳驾驶检测系统PytorchSpringBootFlaskVue配置好环境可直接使用也可以自己加数据集训练运行效果见图像及视频。共4类标签[“睁眼”,“闭眼”,“打哈欠”,“未打哈欠”]系统亮点多场景检测支持单张图片、图片集、视频、实时摄像头等多种输入方式。实时反馈提供实时检测结果和详细分析报告可导出 PDF。高精度识别基于改进 YOLOV5/8/11/12 结合 PyTorch 实现疲劳驾分类检测准确率高运行速度快。AI智能分析结合Deepseek/ Qwen 大模型智能分析可生成详细检测建议。直观UI界面基于 Vue3 Flask 前端展示操作界面简洁清晰。技术栈1、架构B/S、MVC2、系统环境Windows、Mac3、开发环境IDEA、JDK1.8、Maven、Nodejs、Mysql、Python 3.94、技术栈Java、Mysql、Vue、spring boot、Mybatis、Element plus、Python、Flask、YOLOV5/8/11/12。11“基于YOLODeepSeek的疲劳驾驶检测系统”。SpringBoot后端接收请求-调用Python/YOLO进行推理-调用DeepSeek生成建议-Vue3前端展示结果。1. 核心架构设计前端: Vue 3 Element Plus (负责界面、图片上传、结果展示、图表渲染)业务后端: Java SpringBoot (负责用户管理、记录存储、文件转发、调用AI接口)算法服务: Python Flask/FastAPI (负责加载YOLO模型进行图像推理)大模型: DeepSeek API (负责根据YOLO的检测结果生成文本报告)2. 数据库设计 (MySQL)我们需要存储用户信息和检测记录。CREATEDATABASEfatigue_detection_db;USEfatigue_detection_db;-- 用户表CREATETABLEusers(idINTPRIMARYKEYAUTO_INCREMENT,usernameVARCHAR(50)UNIQUENOTNULL,passwordVARCHAR(255)NOTNULL,roleVARCHAR(20)DEFAULTUSER,created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP);-- 检测记录表CREATETABLEdetection_logs(idINTPRIMARYKEYAUTO_INCREMENT,user_idINT,image_pathVARCHAR(255),result_labelVARCHAR(50),-- 例如闭眼confidenceDECIMAL(5,4),-- 置信度inference_timeDECIMAL(10,4),-- 耗时ai_analysisTEXT,-- DeepSeek生成的分析报告created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP);3. 算法服务层 (Python YOLO)这是系统的“眼睛”。使用ultralytics库加载训练好的疲劳驾驶模型。安装依赖:pip install fastapi uvicorn ultralytics opencv-python python-multipart代码 (ai_service.py):fromfastapiimportFastAPI,Query,UploadFile,FilefromultralyticsimportYOLOimportcv2importtimeimportosimportbase64 appFastAPI()# 加载预训练模型 (假设你已经训练好并保存为 best.pt)# 标签映射: 0:睁眼1:闭眼2:打哈欠3:未打哈欠modelYOLO(models/fatigue_best.pt)app.post(/predict)asyncdefpredict(file:UploadFileFile(...),conf:float0.5):start_timetime.time()# 保存上传的文件file_locationftemp/{file.filename}os.makedirs(temp,exist_okTrue)withopen(file_location,wb)asfile_object:file_object.write(file.file.read())# YOLO 推理resultsmodel.predict(sourcefile_location,confconf,verboseFalse)end_timetime.time()total_timeend_time-start_time response_data[]forrinresults:forboxinr.boxes:cls_idint(box.cls[0])cls_namemodel.names[cls_id]scorefloat(box.conf[0])# 获取边界框坐标 [x1, y1, x2, y2]xyxybox.xyxy[0].tolist()response_data.append({label:cls_name,confidence:round(score,4),box:xyxy})# 清理临时文件os.remove(file_location)return{detections:response_data,time_cost:round(total_time,4),image_url:f/temp/{file.filename}# 实际项目中应返回OSS地址}if__name____main__:importuvicorn uvicorn.run(app,host0.0.0.0,port8000)4. 业务后端 (Java SpringBoot)这是系统的“大脑”。负责协调Python服务和DeepSeek API。依赖 (pom.xml):需要spring-boot-starter-web,lombok,okhttp(用于调用DeepSeek API)。核心逻辑 (FatigueController.java):RestControllerRequestMapping(/api/fatigue)CrossOrigin(origins*)publicclassFatigueController{AutowiredprivateDetectionServicedetectionService;PostMapping(/upload)publicResult?detect(RequestParam(file)MultipartFilefile,RequestParam(valuethreshold,defaultValue0.5)Doublethreshold){try{// 1. 调用 Python 服务获取检测结果MapString,ObjectyoloResultdetectionService.callPythonAI(file,threshold);// 2. 提取主要疲劳特征 (例如只要有一个闭眼置信度0.6就判定为疲劳)StringmainLabelextractMainLabel((ListMap)yoloResult.get(detections));// 3. 调用 DeepSeek 生成分析报告StringaiReport;if(闭眼.equals(mainLabel)||打哈欠.equals(mainLabel)){aiReportdetectionService.callDeepSeek(mainLabel);}else{aiReport驾驶员状态良好未检测到明显疲劳特征。;}// 4. 组装返回数据 (包含YOLO结果和AI报告)yoloResult.put(ai_report,aiReport);// 5. (可选) 保存到 MySQL 数据库// detectionService.saveRecord(...);returnResult.success(yoloResult);}catch(Exceptione){returnResult.error(检测失败e.getMessage());}}// 辅助方法调用 DeepSeek APIprivateStringcallDeepSeek(Stringlabel){Stringprompt驾驶员被检测到行为label。请作为交通安全专家分析其风险如PERCLOS标准并给出3条具体的安全建议。要求语气专业、简练。;// 这里使用 OkHttp 发送 POST 请求到 https://api.deepseek.com/v1/chat/completions// 省略具体的 HTTP 请求代码需填入你的 DeepSeek API Keyreturn【DeepSeek分析】检测到label风险等级高。建议1.立即停车休息2.开启车窗通风...;}privateStringextractMainLabel(ListMapdetections){// 简单逻辑返回置信度最高的标签if(detections.isEmpty())return正常;return(String)detections.get(0).get(label);}}5. 前端实现 (Vue 3)这是系统的“脸面”。展示图片、绘制检测框、显示AI建议。核心组件 (ImageDetect.vue):templatedivclasscontainer!-- 左侧上传与展示 --divclasscanvas-areael-uploadaction#:http-requesthandleUpload:show-file-listfalseclassupload-btnel-buttontypeprimarysizelarge上传图片检测/el-button/el-uploaddivv-ifimageUrlclassimage-wrapperrefimgWrapperimg:srcimageUrlcrossoriginanonymousloaddrawBoxes/!-- 动态绘制检测框 --divv-for(box, idx) in boxes:keyidxclassyolo-box:style{ left: box.box[0] px, top: box.box[1] px, width: (box.box[2] - box.box[0]) px, height: (box.box[3] - box.box[1]) px, borderColor: box.label 闭眼 ? red : green }spanclasstag{{ box.label }} {{ box.confidence }}/span/div/div/div!-- 右侧数据与AI建议 --divclassinfo-areav-ifresultDatael-cardshadowhovertemplate#header检测结果/templatep识别对象strong{{ mainLabel }}/strong/pp置信度{{ maxConfidence }}%/pp耗时{{ timeCost }}秒/p/el-cardel-cardshadowhoverstylemargin-top:20px;template#header AI 智能分析 (DeepSeek)/templatedivclassai-contentv-htmlformattedReport/div/el-cardel-buttontypesuccessstylewidth:100%;margin-top:20px;clickexportPDF导出 PDF 报告/el-button/div/div/templatescriptsetupimport{ref,computed}fromvue;importaxiosfromaxios;import{ElMessage}fromelement-plus;constimageUrlref();constboxesref([]);constresultDataref(null);constimgWrapperref(null);consthandleUploadasync(options){constformDatanewFormData();formData.append(file,options.file);try{constresawaitaxios.post(http://localhost:8080/api/fatigue/upload,formData);if(res.data.code200){resultData.valueres.data.data;// 假设后端返回了图片的访问URLimageUrl.valuehttp://localhost:8080/res.data.data.image_url;boxes.valueres.data.data.detections;ElMessage.success(检测完成);}}catch(e){ElMessage.error(检测失败);}};// 简单的坐标转换实际需根据图片缩放比例计算constdrawBoxes(){// 如果后端返回的是归一化坐标(0-1)需在此处乘以 imgWrapper.offsetWidth// 此处假设后端返回的是像素坐标};constmainLabelcomputed(()resultData.value?.detections[0]?.label||-);constmaxConfidencecomputed(()(resultData.value?.detections[0]?.confidence*100).toFixed(2)||0);consttimeCostcomputed(()resultData.value?.time_cost||0);// 将换行符转换为HTML brconstformattedReportcomputed((){if(!resultData.value?.ai_report)return;returnresultData.value.ai_report.replace(/\n/g,br);});constexportPDF(){// 调用后端生成PDF接口或使用前端库 jsPDFalert(正在生成PDF报告...);};/scriptstylescoped.container{display:flex;gap:20px;padding:20px;}.canvas-area{flex:2;text-align:center;border:1px dashed #ccc;min-height:400px;position:relative;}.image-wrapper{position:relative;display:inline-block;margin-top:20px;}.image-wrapper img{max-width:100%;}.yolo-box{position:absolute;border:2px solid;box-sizing:border-box;}.tag{background:rgba(0,0,0,0.6);color:#fff;font-size:12px;position:absolute;top:-20px;left:0;}.info-area{flex:1;}.ai-content{line-height:1.6;font-size:14px;color:#333;}/style6. 如何运行与训练模型训练 YOLO 模型:收集驾驶员面部数据集包含睁眼、闭眼、打哈欠。使用Roboflow或LabelImg进行标注。使用 Python 训练fromultralyticsimportYOLO modelYOLO(yolov8n.pt)model.train(datadataset.yaml,epochs100,imgsz640)将生成的best.pt放入 Python 项目的models/目录。启动服务:Python:python ai_service.py(端口 8000)Java: 运行 SpringBoot 主类 (端口 8080)Vue:npm run dev(端口 5173)配置 DeepSeek:在 Java 代码中填入你的 DeepSeek API Key即可实现截图中的“AI建议”功能。

相关新闻

商标设计注册成功率从设计阶段就开始提高吗?

商标设计注册成功率从设计阶段就开始提高吗?

商标设计注册成功率能从设计阶段就开始提高吗?答案是肯定的。很多创业者直到被驳回才明白:商标注册的成功率,在设计阶段就已注定。 那些绕开雷区的品牌不是运气好,而是把功课做在了前面。本文拆解4个设计阶段的关键策略&#xff0…

2026/8/5 8:17:35 阅读更多 →
DTC与状态掩码:高效管理多状态组合的位运算实践

DTC与状态掩码:高效管理多状态组合的位运算实践

1. 项目概述:从“状态”的混乱到“掩码”的秩序 在任何一个涉及对象状态管理的系统里,无论是游戏开发中的角色属性、电商订单的生命周期,还是设备监控中的运行模式,我们都会遇到一个经典问题:如何高效、清晰地表达和操…

2026/8/5 8:17:35 阅读更多 →
Ubuntu 22.04双系统安装指南:从分区到引导的完整实践

Ubuntu 22.04双系统安装指南:从分区到引导的完整实践

1. 项目概述:为什么选择Ubuntu 22双系统?如果你正在看这篇内容,大概率是厌倦了Windows的某些限制,或者对Linux世界充满好奇,想在不放弃现有Windows环境的前提下,踏出探索的第一步。实机安装Ubuntu 22双系统…

2026/8/5 8:16:35 阅读更多 →

最新新闻

Python零基础入门实战:从环境搭建到爬虫与数据分析项目整合

Python零基础入门实战:从环境搭建到爬虫与数据分析项目整合

这类教程最值得先看的不是它覆盖了多少个知识点,而是能不能帮你从零开始,把环境搭稳、把基础语法跑通、把第一个项目跑起来,最后能独立完成爬虫和数据分析这类实际任务。很多新手卡在第一步——环境配置和工具选择上,或者学了一堆…

2026/8/5 9:01:54 阅读更多 →
构建高可用短视频内容API:从架构设计到工程实践

构建高可用短视频内容API:从架构设计到工程实践

1. 项目概述:从“小姐姐视频API”说起,我们到底在聊什么? 最近在和一些做内容应用开发的朋友聊天,发现一个挺有意思的现象:很多人一听到“小姐姐视频API”这个标题,第一反应要么是觉得“不正经”&#xff0…

2026/8/5 9:01:54 阅读更多 →
免费一站式AI模型平台体验指南:零门槛访问Grok等数十款模型

免费一站式AI模型平台体验指南:零门槛访问Grok等数十款模型

这次我们来看一个近期讨论度很高的 AI 工具集,它主打免费、易用,并且整合了包括 Grok 在内的数十款 AI 模型。对于想体验不同 AI 能力,尤其是想尝试 Grok 模型,但又不想折腾复杂部署和付费订阅的用户来说,这个方案值得…

2026/8/5 9:01:54 阅读更多 →
5分钟上手:三月七小助手的星穹铁道自动化终极指南

5分钟上手:三月七小助手的星穹铁道自动化终极指南

5分钟上手:三月七小助手的星穹铁道自动化终极指南 【免费下载链接】March7thAssistant 崩坏:星穹铁道全自动 三月七小助手 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant 还在为《崩坏:星穹铁道》中永无止境的日常任…

2026/8/5 9:01:54 阅读更多 →
从提示词工程到智能体构建:LLM应用开发全链路实战指南

从提示词工程到智能体构建:LLM应用开发全链路实战指南

在构建大模型应用时,你是否遇到过这样的困境:精心设计的提示词(Prompt)效果时好时坏,模型输出不稳定;想要让AI根据你的私有知识库回答问题,却不知如何高效整合;或者想构建一个能自主…

2026/8/5 9:01:53 阅读更多 →
内网NTP服务搭建全攻略:从协议原理到高可用部署

内网NTP服务搭建全攻略:从协议原理到高可用部署

1. 项目缘起:为什么内网必须有自己的“钟表匠” 在分布式系统、虚拟化集群、数据库主从复制乃至日常的日志分析中,时间戳的一致性不是锦上添花,而是基石。我曾经历过一次惨痛的教训:一个由十几台服务器组成的微服务集群&#xff0…

2026/8/5 9:00:53 阅读更多 →

日新闻

Java缓存框架:JetCache

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:00:43 阅读更多 →
AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/5 0:00:43 阅读更多 →
AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

更多请点击: https://kaifayun.com 第一章:AI生成素描效果 AI生成素描效果是计算机视觉与风格迁移技术融合的典型应用,其核心在于将彩色照片或RGB图像转换为具有手绘质感、明暗对比强烈、边缘清晰的单色素描图像。该过程通常依赖于深度学习模…

2026/8/5 0:00:43 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/4 13:24:41 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →