人臉疲勞檢測(cè)應(yīng)用-米爾基于RK3576核心板/開(kāi)發(fā)板
本篇源自:優(yōu)秀創(chuàng)作者 lulugl
本文將介紹基于米爾電子MYD-LR3576開(kāi)發(fā)板(米爾基于瑞芯微 RK3576開(kāi)發(fā)板)的人臉疲勞檢測(cè)方案測(cè)試。
米爾基于RK3576核心板/開(kāi)發(fā)板
【前言】
人臉疲勞檢測(cè):一種通過(guò)分析人臉特征來(lái)判斷一個(gè)人是否處于疲勞狀態(tài)的技術(shù)。其原理主要基于計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)方法。當(dāng)人疲勞時(shí),面部會(huì)出現(xiàn)一些特征變化,如眼睛閉合程度增加、眨眼頻率變慢、打哈欠、頭部姿態(tài)改變等。例如,通過(guò)檢測(cè)眼睛的狀態(tài)來(lái)判斷疲勞程度是一個(gè)關(guān)鍵部分。正常情況下,人的眨眼頻率相對(duì)穩(wěn)定,而當(dāng)疲勞時(shí),眨眼頻率會(huì)降低,并且每次眨眼時(shí)眼睛閉合的時(shí)間可能會(huì)延長(zhǎng)。同時(shí),頭部可能會(huì)不自覺(jué)地下垂或者搖晃,這些特征都可以作為疲勞檢測(cè)的依據(jù)。米爾MYC-LR3576采用8核CPU+搭載6 TOPS的NPU加速器,3D GPU,能夠非常輕松的實(shí)現(xiàn)這個(gè)功能,下面就如何實(shí)現(xiàn)這一功能分享如下:
【硬件】
1、米爾MYC-LR3576開(kāi)發(fā)板2、USB攝像頭
【軟件】
1、v4l22、openCV3、dlib庫(kù):dlib 是一個(gè)現(xiàn)代化的 C++ 工具包,它包含了許多用于機(jī)器學(xué)習(xí)、圖像處理、數(shù)值計(jì)算等多種任務(wù)的算法和工具。它的設(shè)計(jì)目標(biāo)是提供高性能、易于使用的庫(kù),并且在開(kāi)源社區(qū)中被廣泛應(yīng)用。
【實(shí)現(xiàn)步驟】
1、安裝python-opencv2、安裝dlib庫(kù)3、安裝v4l2庫(kù)
【代碼實(shí)現(xiàn)】
1、引入cv2、dlib以及線程等:
import cv2import dlibimport numpy as npimport timefrom concurrent.futures import ThreadPoolExecutorimport threading
2、初始化dlib的面部檢測(cè)器和特征點(diǎn)預(yù)測(cè)器
detector = dlib.get_frontal_face_detector()predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')
3、定義計(jì)算眼睛縱橫比的函數(shù)
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、定義計(jì)算頭部姿勢(shì)的函數(shù)
5、定義眼睛縱橫比閾值和連續(xù)幀數(shù)閾值
6、打開(kāi)攝像頭我們先使用v4l2-ctl --list-devices來(lái)例出接在開(kāi)發(fā)板上的列表信息:
7、創(chuàng)建多線程處理函數(shù),實(shí)現(xiàn)采集與分析分離:
8、創(chuàng)建圖像顯示線程:
實(shí)現(xiàn)效果:
根據(jù)檢測(cè)的結(jié)果,我們就可以來(lái)實(shí)現(xiàn)疲勞提醒等等的功能。整體代碼如下:
# 釋放攝像頭并關(guān)閉所有窗口cap.release()cv2.destroyAllWindows()
【總結(jié)】
【米爾MYC-LR3576核心板及開(kāi)發(fā)板】這塊開(kāi)發(fā)板性能強(qiáng)大,能輕松實(shí)現(xiàn)對(duì)人臉的疲勞檢測(cè),通過(guò)計(jì)算結(jié)果后進(jìn)入非常多的工業(yè)、人工智能等等的實(shí)用功能。米爾MYIR