基于Dlib实现的疲劳识别

基于Dlib实现的疲劳识别-云港网络
基于Dlib实现的疲劳识别
此内容为免费资源,请登录后查看
0
持续更新
下载不限速
永久免费
免费资源

一、项目介绍

本项目基于 Python 开发,通过调用 OpenCV、Dlib、Scipy 等库,实现对人脸图像中眼部闭合、打哈欠、点头等行为的监测,从而评估人的疲劳状态。适用于司机、安保、工地人员等高风险工作场景。

系统功能包括:

  • 实时采集视频流并进行人脸检测

  • 提取关键面部标志点(68 点)

  • 计算 EAR(眼睛纵横比)、MAR(嘴巴纵横比)、头部姿态等指标

  • 校准个体化阈值,自适应判断疲劳状态

  • 中文视觉提示与警告反馈

    20250703131519398-420b8f2111d2ecbeaf0b70be00df85c2

二、技术创新点摘要

  1. 动态个性化校准机制

    • 引入 EAR 个体基准校准阶段,避免固定阈值对不同人群的误判。

  2. 多模态疲劳检测逻辑融合

    • 同时融合眨眼频率、打哈欠持续时间、点头幅度三个维度,提升检测精度与鲁棒性。

  3. 图像与中文文字融合显示

    • 使用 PIL 结合 OpenCV 实现对中文状态信息的叠加显示,提升人机交互友好性。

  4. 实时反馈与可视化分析

    • 显示 EAR、MAR 动态数值与疲劳状态,用户可直观了解监测过程。

三、模型架构设计

20250703132038215-image

四、核心代码讲解

  1. EAR / MAR 指标计算:
    def eye_aspect_ratio(eye):
        A = dist.euclidean(eye[1], eye[5]) * 1.5
        B = dist.euclidean(eye[2], eye[4]) * 1.2
        C = dist.euclidean(eye[0], eye[3])
        return (A + B) / (2.0 * C)
  2. 头部点头估计(垂直距离):
    def head_pose_estimation(shape):
        nose_bridge = shape[27]
        chin = shape[8]
        return chin[1] - nose_bridge[1]
  3. 个性化阈值校准:
    def head_pose_estimation(shape):
        nose_bridge = shape[27]
        chin = shape[8]
        return chin[1] - nose_bridge[1]
  4. 疲劳检测逻辑整合:
    if COUNTER >= EAR_CONSEC_FRAMES * 2:
        fatigue_status = "瞌睡!闭眼"
    elif yawn_counter >= YAWN_CONSEC_FRAMES:
        fatigue_status = "疲劳!打哈欠"
    elif nod_counter >= NOD_CONSEC_FRAMES:
        fatigue_status = "瞌睡!点头"
    elif COUNTER >= EAR_CONSEC_FRAMES:
        fatigue_status = "疲劳!眨眼"
    else:
        fatigue_status = "正常"

五、优缺点评价

类别 评价
优点 - 实时性强,适合部署在摄像头前端- 无需模型训练,轻量高效- 融合多个指标判断更精准- 界面友好,支持中文提示
缺点 - 依赖摄像头质量,光照强弱影响大- 无远程数据同步与日志系统- 仅支持单人检测- 模型不具备深度学习自适应能力

 


广告:

© 版权声明
THE END
喜欢就支持一下吧
点赞10打赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容