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