毕设开源 深度学习驾驶行为识别系统(源码+论文)
文章目录0 前言1 项目运行效果2 设计概要3 相关技术3.1 Dlib3.2 疲劳检测算法3.3 YOLOV5算法4 最后0 前言这两年开始毕业设计和毕业答辩的要求和难度不断提升传统的毕设题目缺少创新和亮点往往达不到毕业答辩的要求这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。并且很难找到完整的毕设参考学习资料。为了大家能够顺利以及最少的精力通过毕设学长分享优质毕业设计项目提供大家参考学习今天要分享的是毕业设计 深度学习驾驶行为识别系统源码论文学长这里给一个题目综合评分(每项满分5分)难度系数3分工作量3分创新点4分项目分享见主页任意置顶文章1 项目运行效果视频效果毕业设计 深度学习驾驶行为识别系统2 设计概要大多数的交通事故是由于驾驶员的不规范驾驶所导致的例如酒驾、疲劳驾驶、失误操作等对人们的日常出行安全造成了威胁。随着人工智能的崛起而出现的自动驾驶技术针对车辆行驶过程中的操作进行规范可以有效避免人为操作而导致的交通事故。自动驾驶关键技术之一就是对于驾驶者行为的准确检测与识别。但是驾驶行为类别多要对其准确检测与识别存在一定困难本文采用深度学习中的目标检测算法来解决驾驶者的行为的检测与识别问题并针对模型的网络结构进行分析与改进来达到更好的识别效果。本文提出利用计算机视觉来进行驾驶行为检测与识别一是提供自动驾驶场景辅助功能二是也提高了检测效率。从端到端的目标检测识别技术出发基于yoloV5算法的思路意图探索出一种检测精度高、速度快的驾驶行为识别检测算法。目前图像识别算法受周围环境影响因素较大尤其是出现遮挡、光照、极端的偏转角度以及低分辨率等问题的影响加大了检测在实际应用中所要面临的挑战。而基于深度学习的方法具有强大的特征学习能力以及较高的检测精度所以优化识别精度、削弱检测对光照的敏感度能够更好的帮助我们对自然场景下驾驶行为的检测与检测。3 相关技术3.1 Dlib简介Dlib是一个基于c开发的开源数据工具库,其中包含了不少的机器学习的成熟算法与模型,相对于tensorflow和PyTorch,它用于图像处理以及人脸面部特征提取、分类及对比这几个方面比较具有通用性和优越性,因此,Dlib正在越来越广泛地应用在人脸识别技术领域。Dlib具有独立使用的可移植代码。Dlib中的代码使用c语言进行开发而成,使用独立封装,在不借助第三方数据库的情况下,可以直接移植到自己所需要设计的项目中进行使用。Dlib优点Dlib拥有全面的文档说明。作为一个开源的人脸数据库训练集,Dlib中有很多功能齐全的程序和文件,从人性化的角度而言的,Dlib在这一点上做的是非常不错的,因为它为每一个程序文档和文件都做了相对应的注释,这样开发者就可以迅速准确的调集程序文档来完成自己所需要的项目功能。Dlib涵盖了支持功能完备的深度学习以及图像处理的各类算法。Dlib为开发者提供了机器深度学习的各类成熟的完备算法,并且在图像处理方面也为开发者带来了能够解决大多数实质问题的优良算法。例如基于SVM的递归和分类算法,以及专门用于面对大规模分类和递归的降维算法。当然还有能够对未知函数进行预分类和预测的相关向量机,其分类和预测训练是基于贝叶斯框架。相关代码import matplotlib.pyplotaspltimport dlibimport numpyasnpimport globimport re#正脸检测器detectordlib.get_frontal_face_detector()#脸部关键形态检测器spdlib.shape_predictor(rD:LBJAVAscriptshape_predictor_68_face_landmarks.dat)#人脸识别模型facerec dlib.face_recognition_model_v1(rD:LBJAVAscriptdlib_face_recognition_resnet_model_v1.dat)#候选人脸部描述向量集descriptors[]photo_locations[]for photo in glob.glob(rD:LBJAVAscriptfaces*.jpg):photo_locations.append(photo)imgplt.imread(photo)imgnp.array(img)#开始检测人脸detsdetector(img,1)for k,d in enumerate(dets):#检测每张照片中人脸的特征shapesp(img,d)face_descriptorfacerec.compute_face_descriptor(img,shape)vnp.array(face_descriptor)descriptors.append(v)#输入的待识别的人脸处理方法相同imgplt.imread(rD:test_photo10.jpg)imgnp.array(img)detsdetector(img,1)#计算输入人脸和已有人脸之间的差异程度比如用欧式距离来衡量differences[]for k,d in enumerate(dets):shapesp(img,d)face_descriptorfacerec.compute_face_descriptor(img,shape)d_testnp.array(face_descriptor)#计算输入人脸和所有已有人脸描述向量的欧氏距离for i in descriptors:distancenp.linalg.norm(i-d_test)differences.append(distance)#按欧式距离排序 欧式距离最小的就是匹配的人脸candidate_countlen(photo_locations)candidates_dictdict(zip(photo_locations,differences))candidates_dict_sortedsorted(candidates_dict.items(),keylambda x:x[1])#matplotlib要正确显示中文需要设置plt.rcParams[font.family] [sans-serif]plt.rcParams[font.sans-serif] [SimHei]plt.rcParams[figure.figsize] (20.0,70.0)axplt.subplot(candidate_count1,4,1)ax.set_title(输入的人脸)ax.imshow(img)for i,(photo,distance)in enumerate(candidates_dict_sorted):imgplt.imread(photo)face_namephoto_namere.search(r([^\]*).jpg$,photo)if photo_name:face_namephoto_name[1]axplt.subplot(candidate_count1,4,i2)ax.set_xticks([])ax.set_yticks([])ax.spines[top].set_visible(False)ax.spines[right].set_visible(False)ax.spines[bottom].set_visible(False)ax.spines[left].set_visible(False)if i0:ax.set_title(最匹配的人脸nnface_namenn差异度str(distance))else:ax.set_title(face_namenn差异度str(distance))ax.imshow(img)plt.show()3.2 疲劳检测算法该系统采用Dlib库中人脸68个关键点检测shapepredictor68facelandmarks.dat的dat模型库及视频中的人脸之后返回人脸特征点坐标、人脸框及人脸角度等。本系统利用这68个关键点对驾驶员的疲劳状态进行检测算法如下初始化Dlib的人脸检测器(HOG)然后创建面部标志物预测使用dlib.getfrontalfacedetector() 获得脸部位置检测器使用dlib.shapepredictor获得脸部特征位置检测器分别获取左、右眼面部标志的索引打开cv2本地摄像头。Dlib库68个特征点模型如图所示眼睛检测算法基于EAR算法的眨眼检测当人眼睁开时EAR在某个值域范围内波动当人眼闭合时EAR迅速下降理论上接近于0。当EAR低于某个阈值时眼睛处于闭合状态当EAR由某个值迅速下降至小于该阈值再迅速上升至大于该阈值则判断为一次眨眼。为检测眨眼次数需要设置同一次眨眼的连续帧数。眨眼速度较快一般13帧即可完成眨眼动作。眼部特征点如图EAR计算公式如下当后帧眼睛宽高比与前一帧差值的绝对值(EAR)大于0.2时认为驾驶员在疲劳驾驶。68点landmark中可以看到37-42为左眼43-48为右眼右眼开合度可以通过以下公式眼睛睁开度从大到小为进入闭眼期从小到大为进入睁眼期计算最长闭眼时间(可用帧数来代替)。闭眼次数为进入闭眼、进入睁眼的次数。通过设定单位时间内闭眼次数、闭眼时间的阈值判断人是否已经疲劳了。相关代码# 疲劳检测检测眼睛和嘴巴的开合程度fromscipy.spatialimportdistanceasdistfromimutils.videoimportFileVideoStreamfromimutils.videoimportVideoStreamfromimutilsimportface_utilsimportnumpyasnp# 数据处理的库 numpyimportargparseimportimutilsimporttimeimportdlibimportcv2importmathimporttimefromthreadingimportThreaddefeye_aspect_ratio(eye):# 垂直眼标志XY坐标Adist.euclidean(eye[1],eye[5])# 计算两个集合之间的欧式距离Bdist.euclidean(eye[2],eye[4])# 计算水平之间的欧几里得距离# 水平眼标志XY坐标Cdist.euclidean(eye[0],eye[3])# 眼睛长宽比的计算ear(AB)/(2.0*C)# 返回眼睛的长宽比returnear打哈欠检测算法基于MAR算法的哈欠检测利用Dlib提取嘴部的6个特征点通过这6个特征点的坐标(51、59、53、57的纵坐标和49、55的横坐标)来计算打哈欠时嘴巴的张开程度。当一个人说话时点51、59、53、57的纵坐标差值增大从而使MAR值迅速增大反之当一个人闭上嘴巴时MAR值迅速减小。嘴部主要取六个参考点如下图计算公式通过公式计算MAR来判断是否张嘴及张嘴时间从而确定驾驶员是否在打哈欠。阈值应经过大量实验能够与正常说话或哼歌区分开来。为提高判断的准确度采用双阈值法进行哈欠检测即对内轮廓进行检测结合张口度与张口时间进行判断。Yawn为打哈欠的帧数N为1 min内总帧数设双阈值法哈欠检测的阈值为10%当打哈欠频率Freq10%时则认为驾驶员打了1个深度哈欠或者至少连续2个浅哈欠此时系统进行疲劳提醒。相关代码# 疲劳检测检测眼睛和嘴巴的开合程度fromscipy.spatialimportdistanceasdistfromimutils.videoimportFileVideoStreamfromimutils.videoimportVideoStreamfromimutilsimportface_utilsimportnumpyasnp# 数据处理的库 numpyimportargparseimportimutilsimporttimeimportdlibimportcv2importmathimporttimefromthreadingimportThreaddefmouth_aspect_ratio(mouth):# 嘴部Anp.linalg.norm(mouth[2]-mouth[10])# 51, 59Bnp.linalg.norm(mouth[4]-mouth[8])# 53, 57Cnp.linalg.norm(mouth[0]-mouth[6])# 49, 55mar(AB)/(2.0*C)returnmar点头检测算法基于HPE算法的点头检测算法步骤2D人脸关键点检测3D人脸模型匹配求解3D点和对应2D点的转换关系根据旋转矩阵求解欧拉角。检测过程中需要使用世界坐标系(UVW)、相机坐标系(XYZ)、图像中心坐标系(uv)和像素坐标系(xy)。一个物体相对于相机的姿态可以使用旋转矩阵和平移矩阵来表示。平移矩阵物体相对于相机的空间位置关系矩阵用T表示。旋转矩阵物体相对于相机的空间姿态关系矩阵用R表示。因此必然少不了坐标系转换。如图所示于是世界坐标系(UVW)、相机坐标系(XYZ)、图像中心坐标系(uv)和像素坐标系(xy)四兄弟闪亮登场。相对关系如世界坐标系转换到相机坐标相机坐标系转换到像素坐标系像素坐标系与世界坐标系的关系为图像中心坐标系转换到像素坐标系得到旋转矩阵后求欧拉角设定参数阈值为0.3在一个时间段如10 s内当低头欧拉角|Pitch|≥20°或者头部倾斜欧拉角|Roll|≥20°的时间比例超过0.3时则认为驾驶员处于瞌睡状态发出预警。3.3 YOLOV5算法简介我们选择当下YOLO最新的卷积神经网络YOLOv5来进行检测是否存在玩手机、抽烟、喝水这三种行为。6月9日Ultralytics公司开源了YOLOv5离上一次YOLOv4发布不到50天。而且这一次的YOLOv5是完全基于PyTorch实现的在我们还对YOLOv4的各种高端操作、丰富的实验对比惊叹不已时YOLOv5又带来了更强实时目标检测技术。按照官方给出的数目现版本的YOLOv5每个图像的推理时间最快0.007秒即每秒140帧FPS但YOLOv5的权重文件大小只有YOLOv4的1/9。目标检测架构分为两种一种是two-stage一种是one-stage区别就在于 two-stage 有region proposal过程类似于一种海选过程,网络会根据候选区域生成位置和类别而one-stage直接从图片生成位置和类别。今天提到的 YOLO就是一种 one-stage方法。YOLO是You Only Look Once的缩写,意思是神经网络只需要看一次图片就能输出结果。YOLO 一共发布了五个版本其中 YOLOv1 奠定了整个系列的基础后面的系列就是在第一版基础上的改进为的是提升性能。YOLOv5有4个版本性能如图所示网络架构图篇幅有限更多详细设计见设计论文4 最后项目包含内容完整详细设计论文项目分享见主页任意置顶文章

相关新闻

Unity Shader实战:让法线贴图细节在阴影中完美呈现

Unity Shader实战:让法线贴图细节在阴影中完美呈现

1. 项目概述:阴影与法线的交响曲在Unity3D的世界里,让一个模型看起来“真实”,远不止是贴一张漂亮的图片那么简单。你有没有遇到过这种情况:一个精心雕刻了高模细节、烘焙了精美法线贴图的角色或场景,一旦走进阴影区域…

2026/7/13 13:16:06 阅读更多 →
思维链提示词从入门到封神,深度拆解LLM推理路径建模逻辑,含OpenAI内部评估指标白皮书节选

思维链提示词从入门到封神,深度拆解LLM推理路径建模逻辑,含OpenAI内部评估指标白皮书节选

更多请点击: https://intelliparadigm.com 第一章:思维链提示词从入门到封神,深度拆解LLM推理路径建模逻辑,含OpenAI内部评估指标白皮书节选 什么是思维链(Chain-of-Thought, CoT)提示词 思维链提示词并非…

2026/7/13 13:16:06 阅读更多 →
ChatGPT视频理解到底有多强?我们用UCF101、Something-Something V2和自建安防数据集做了72小时压力测试

ChatGPT视频理解到底有多强?我们用UCF101、Something-Something V2和自建安防数据集做了72小时压力测试

更多请点击: https://kaifayun.com 第一章:ChatGPT视频理解能力的边界与定义 ChatGPT 本身并不具备原生视频理解能力。其核心模型(如 GPT-4)是纯文本语言模型,无法直接接收、解析或推理视频帧、音频流或时间序列视觉数…

2026/7/13 13:16:06 阅读更多 →

最新新闻

免费解锁Wand专业版功能:告别2小时限制,畅享完整游戏修改体验

免费解锁Wand专业版功能:告别2小时限制,畅享完整游戏修改体验

免费解锁Wand专业版功能:告别2小时限制,畅享完整游戏修改体验 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 你是否曾在游…

2026/7/13 14:08:02 阅读更多 →
猫抓浏览器扩展:让网页视频音频下载变得触手可及

猫抓浏览器扩展:让网页视频音频下载变得触手可及

猫抓浏览器扩展:让网页视频音频下载变得触手可及 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾遇到过这样的情况&#xff1a…

2026/7/13 14:08:02 阅读更多 →
别再被 AI 新词绕晕了:现在大家说的 AI,到底在说什么?

别再被 AI 新词绕晕了:现在大家说的 AI,到底在说什么?

别再被 AI 新词绕晕了:现在大家说的 AI,到底在说什么? 现在只要刷到 AI 相关内容,基本绕不开一堆新词: 交互技法: Prompt、Context Engineering、RAG开发利器: Cursor、Claude Code、Trae、Lang…

2026/7/13 14:04:01 阅读更多 →
Arduino IDE 2.3.2 多平台环境配置:Windows/Mac/Linux 3系统避坑指南

Arduino IDE 2.3.2 多平台环境配置:Windows/Mac/Linux 3系统避坑指南

Arduino IDE 2.3.2 多平台环境配置:Windows/Mac/Linux 3系统避坑指南对于需要在不同操作系统间切换开发的创客和学生来说,跨平台开发环境的配置往往是一个令人头疼的问题。本文将深入解析Arduino IDE 2.3.2在Windows、macOS和Linux三大平台上的完整配置流…

2026/7/13 13:57:39 阅读更多 →
幻兽帕鲁存档修复工具:告别服务器迁移的角色丢失噩梦

幻兽帕鲁存档修复工具:告别服务器迁移的角色丢失噩梦

幻兽帕鲁存档修复工具:告别服务器迁移的角色丢失噩梦 【免费下载链接】palworld-host-save-fix Fixes the bug which forces a player to create a new character when they already have a save. Useful for migrating maps from co-op to dedicated servers and f…

2026/7/13 13:55:38 阅读更多 →
一周AI科技热闻回顾(2026.07.05-07.11)

一周AI科技热闻回顾(2026.07.05-07.11)

title: 一周AI科技热闻回顾(2026.07.05-07.11) tags: [AI新闻, 科技热点, GPT-5.6, OpenAI, Apple]🤖 一周AI科技热闻回顾(2026.07.05-07.11) 过去一周(7月5日-11日),AI圈风起云涌&a…

2026/7/13 13:53:38 阅读更多 →

日新闻

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools 你是否曾经想要调整Palwor…

2026/7/13 0:01:19 阅读更多 →
浦东旧模块回收哪家强?专业评测带你一探究竟

浦东旧模块回收哪家强?专业评测带你一探究竟

于科技迅猛飞速迭代的当下此刻, 旧模块的回收处置, 不但关联着资源的再度利用, 而且更牵扯到数据安全以及环保合规事宜。你是不是也正为那堆积得如同山峦般的旧模块而发愁? 是不是不清楚该怎样安全且高效地去处理它们? 别忧心烦恼, 就在今日, 我会以具备权威影响力的自媒体博…

2026/7/13 0:01:19 阅读更多 →
卡梅德生物技术快报|重组蛋白的表达和纯化:IMAC 金属螯合色谱全流程工艺手册|基质 - 配基 - 金属离子匹配与蛋白质分离纯化参数优化

卡梅德生物技术快报|重组蛋白的表达和纯化:IMAC 金属螯合色谱全流程工艺手册|基质 - 配基 - 金属离子匹配与蛋白质分离纯化参数优化

1 研究背景与现存技术痛点(提出问题)基因工程、蛋白质组学、生物制药研发流程中,蛋白质分离纯化是决定下游实验成败的关键环节。当前实验室常规蛋白质分离纯化工艺存在三类难以标准化的技术瓶颈:传统离子交换、分子筛层析无特异性…

2026/7/13 0:05:20 阅读更多 →

周新闻

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨 在一个阳光明媚的上午,互联网大厂的面试官坐在桌前,准备迎接他的面试候选人——燕双非,一个以搞笑和幽默著称的程序员。第一轮提问 面试官:燕双非,作…

2026/7/13 4:38:36 阅读更多 →
车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估在智能驾驶和车联网技术快速发展的今天,车载以太网作为新一代车载网络的核心传输技术,其物理层性能直接决定了数据传输的可靠性和稳定性。1000BASE-T1作为当前主流的…

2026/7/13 4:38:38 阅读更多 →
VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战指南嵌入式开发领域正经历一场工具链的静默革命。当传统Keil用户首次打开VSCode的扩展市场搜索EIDE时,往往会惊讶于这个看似简单的插件竟能重构十余年的开发习惯。本文将揭示如何用五个精准步骤&#xff0…

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

月新闻