嵌入式
返回首页

人脸疲劳检测应用-米尔基于RK3576核心板/开发板

2024-12-20 来源:EEWORLD

本文将介绍基于米尔电子MYD-LR3576开发板(米尔基于瑞芯微 RK3576开发板)的人脸疲劳检测方案测试。

image.png

米尔基于RK3576核心板/开发板


【前言】


人脸疲劳检测:一种通过分析人脸特征来判断一个人是否处于疲劳状态的技术。其原理主要基于计算机视觉和机器学习方法。当人疲劳时,面部会出现一些特征变化,如眼睛闭合程度增加、眨眼频率变慢、打哈欠、头部姿态改变等。


例如,通过检测眼睛的状态来判断疲劳程度是一个关键部分。正常情况下,人的眨眼频率相对稳定,而当疲劳时,眨眼频率会降低,并且每次眨眼时眼睛闭合的时间可能会延长。同时,头部可能会不自觉地下垂或者摇晃,这些特征都可以作为疲劳检测的依据。米尔MYC-LR3576采用8核CPU+搭载6 TOPS的NPU加速器,3D GPU,能够非常轻松的实现这个功能,下面就如何实现这一功能分享如下:


【硬件】


1、米尔MYC-LR3576开发板
2、USB摄像头


【软件】


1、v4l2

2、openCV
3、dlib库:dlib 是一个现代化的 C++ 工具包,它包含了许多用于机器学习、图像处理、数值计算等多种任务的算法和工具。它的设计目标是提供高性能、易于使用的库,并且在开源社区中被广泛应用。


【实现步骤】


1、安装python-opencv
2、安装dlib库
3、安装v4l2库


【代码实现】


1、引入cv2、dlib以及线程等:

import cv2import dlibimport numpy as npimport timefrom concurrent.futures import ThreadPoolExecutorimport threading

2、初始化dlib的面部检测器和特征点预测器

detector = dlib.get_frontal_face_detector()predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')

3、定义计算眼睛纵横比的函数

def eye_aspect_ratio(eye):    A = np.linalg.norm(np.array(eye[1]) - np.array(eye[5]))    B = np.linalg.norm(np.array(eye[2]) - np.array(eye[4]))    C = np.linalg.norm(np.array(eye[0]) - np.array(eye[3]))    ear = (A + B) / (2.0 * C)    return ear

4、定义计算头部姿势的函数

5、定义眼睛纵横比阈值和连续帧数阈值

6、打开摄像头
我们先使用v4l2-ctl --list-devices来例出接在开发板上的列表信息:

7、创建多线程处理函数,实现采集与分析分离:

8、创建图像显示线程:


备注:由于篇幅有限,具体代码,请查看https://mp.weixin.qq.com/s/vnIXf6qOgzZHqhBUrjnAnw

 

实现效果:

 

image.png

根据检测的结果,我们就可以来实现疲劳提醒等等的功能。


整体代码如下:


# 释放摄像头并关闭所有窗口cap.release()cv2.destroyAllWindows()


【总结】


【米尔MYC-LR3576核心板及开发板】


这块开发板性能强大,能轻松实现对人脸的疲劳检测,通过计算结果后进入非常多的工业、人工智能等等的实用功能。



进入嵌入式查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • FollowMe 第二季:3 - EK_RA6M5 开发板入门

  • FollowMe 第二季: 1 Adafruit Circuit Playground Express及任务讲解

  • Azure RTOS step by step workshop

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • 从0到1:树莓派与物联网教程(英文)

精选电路图
  • 1瓦线性调频增强器

  • 家用电器遥控器

  • 12V 转 28V DC-DC 变换器(基于 LM2585)

  • 红外开关

  • DS1669数字电位器

  • HA1377 桥式放大器 BCL 电容 17W(汽车音频)

    相关电子头条文章