基于机器学习的驾驶疲劳检测,应该如何入门?
基于机器学习的驾驶疲劳检测可以说是本科/硕士毕设中性价比很高的一个题目它既有充足的开源参考资料又容易做出可视化的Demo答辩时也比较讨喜。 我来帮你把这个看似庞大的项目拆解成流水线。你不需要去手搓底层的神经网络只要像搭积木一样把成熟的模块拼起来就行。1. 基于视觉的疲劳检测的主流算法 在工业界和学术界基于视觉方法的疲劳度判断最直观的就是看脸尤其是眼睛和嘴巴。 这里面有一个交通安全领域公认的黄金指标PERCLOS (Percentage of Eye Closure)。 它的通俗定义是在一段特定时间比如1分钟内眼睛闭合程度超过80%的时间所占的比例。只要这个比例超过某个阈值系统就判定驾驶员疲劳了。 具体怎么算呢我们会用到 EAREye Aspect Ratio眼睛纵横比 当眼睛睁开时EAR 是一个相对稳定的常数当人眨眼或者打瞌睡闭眼时EAR 的值会迅速下降趋近于 0。使用EAR判断眼睛是否闭合由此判断是否疲劳同理我们还可以计算 MARMouth Aspect Ratio嘴巴纵横比 来判断驾驶员是否在频繁打哈欠。基于MAR判断是否“打哈欠”你的机器学习模型本质上就是吃进这几个特征EAR、MAR、低头频率等然后吐出一个分类结果【清醒】or【疲劳】。2. 保姆级实操工作流 不要去想什么从零训练一个复杂的人脸识别大模型半年结题的时间根本不够你调参的。请严格按照以下三步走 第一步人脸与特征点定位直接调包 不用自己写算法找脸直接使用 Python 中的开源库MediaPipe强烈推荐Google 开源的视觉库提取 468 个面部特征点速度极快甚至用普通的笔记本摄像头都能跑到丝滑的帧率。链接在这里google-ai-edge/mediapipeDlib经典的 68 个面部特征点模型网上教程多如牛毛随便一搜“Dlib 疲劳检测”全是现成的代码骨架。MediaPipe 提取面部关键点第二步特征提取与数据构造 利用上一步拿到的眼睛和嘴巴坐标点写几行简单的数学公式计算出 EAR 和 MAR。 接着通过滑动窗口比如提取过去 10 秒内的 EAR 均值、方差、低于阈值的次数、打哈欠的次数构造出一个特征向量Feature Vector。 第三步机器学习分类套用传统模型 既然题目是“基于机器学习”你可以使用 scikit-learn 库中现成的轻量级分类器比如 SVM支持向量机、随机森林Random Forest或者 KNN。 把第二步提取的特征丢进模型里进行训练。你可以使用公开的疲劳驾驶数据集如 NTHU Drowsy Driver Dataset来训练模型然后用电脑摄像头做实时推理验证。3. 基线测试如何证明受试者“真的困了”PVT 测试 如果你只做到上面两步这顶多算是个中规中矩的“及格”项目。在答辩现场评委老师有可能会抛出一个致命的灵魂拷问“你算法检测出来的‘疲劳’怎么证明是真实的疲劳你采集数据时受试者的真值是怎么标定的总不能是他故意闭着眼睛装睡吧真的会有本科毕设的小孩去玩这些花招”很多人在这个环节只能回答“受试者自己填表说他困了主观量表”这就显得非常不严谨。 在严谨的认知科学和驾驶安全研究中衡量疲劳的黄金标准是客观行为测试尤其是 PVTPsychomotor Vigilance Task精神运动警觉性任务。它的原理很简单屏幕上随机出现刺激信号记录受试者的毫秒级反应时间。人越疲劳反应越迟钝漏报率越高。 如果你能在毕设中将你视觉算法测出的 PERCLOS 曲线与受试者做 PVT 测试的真实反应时间曲线做个相关性对比证明两者高度一致你的毕设绝对是降维打击。 为了帮大家解决这个“如何客观标定疲劳真值”的头疼问题我最近在 GitHub 上开源了一套相关的基线测试工具 FMBT-Fatigue-Monitoring-Baseline-Toolkit- (车载疲劳诱导与基线测试工具箱) 这套工具箱不仅内置了用于诱导脑力疲劳的 3-Back 认知任务还无缝整合了 PVT 反应时间测试 KSS 主观量表能为你提供极度标准化的个性化疲劳度客观标签Ground Truth。 你可以直接 Clone 这个工具箱下来作为你收集毕设数据、验证模型有效性的辅助脚手架。别人在用主观感觉当标签你用的是严谨的心理学实验基线这分数自然就拉开了。 祝你顺利搞定毕设如果有帮助欢迎去 GitHub 顺手点个 Star这对我非常重要
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2468594.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!