人脸疲劳检测应用-米尔基于RK3576核心板/开发板
扫描二维码
随时随地手机看文章
本篇源自:优秀创作者 lulugl
本文将介绍基于米尔电子MYD-LR3576开发板(米尔基于瑞芯微 RK3576开发板)的人脸疲劳检测方案测试。
米尔基于RK3576核心板/开发板
【前言】
人脸疲劳检测:一种通过分析人脸特征来判断一个人是否处于疲劳状态的技术。其原理主要基于计算机视觉和机器学习方法。当人疲劳时,面部会出现一些特征变化,如眼睛闭合程度增加、眨眼频率变慢、打哈欠、头部姿态改变等。例如,通过检测眼睛的状态来判断疲劳程度是一个关键部分。正常情况下,人的眨眼频率相对稳定,而当疲劳时,眨眼频率会降低,并且每次眨眼时眼睛闭合的时间可能会延长。同时,头部可能会不自觉地下垂或者摇晃,这些特征都可以作为疲劳检测的依据。米尔MYC-LR3576采用8核CPU+搭载6 TOPS的NPU加速器,3D GPU,能够非常轻松的实现这个功能,下面就如何实现这一功能分享如下:
【硬件】
1、米尔MYC-LR3576开发板2、USB摄像头
【软件】
1、v4l22、openCV3、dlib库:dlib 是一个现代化的 C++ 工具包,它包含了许多用于机器学习、图像处理、数值计算等多种任务的算法和工具。它的设计目标是提供高性能、易于使用的库,并且在开源社区中被广泛应用。
【实现步骤】
1、安装python-opencv2、安装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、创建图像显示线程:
实现效果:
根据检测的结果,我们就可以来实现疲劳提醒等等的功能。整体代码如下:
# 释放摄像头并关闭所有窗口cap.release()cv2.destroyAllWindows()
【总结】
【米尔MYC-LR3576核心板及开发板】这块开发板性能强大,能轻松实现对人脸的疲劳检测,通过计算结果后进入非常多的工业、人工智能等等的实用功能。米尔MYIR