日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

基于多信息融合的疲劳驾驶检测系统

發(fā)布時(shí)間:2024/3/24 windows 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于多信息融合的疲劳驾驶检测系统 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.眨眼檢測(cè)原理

基于dlib人臉識(shí)別68特征點(diǎn)檢測(cè)、分別獲取左右眼面部標(biāo)志的索引,通過opencv對(duì)視頻流進(jìn)行灰度化處理,檢測(cè)出人眼的位置信息。
人臉特征點(diǎn)檢測(cè)用到了dlib,dlib有兩個(gè)關(guān)鍵函數(shù):dlib.get_frontal_face_detector()和dlib.shape_predictor(predictor_path)。

前者是內(nèi)置的人臉檢測(cè)算法,檢測(cè)人臉區(qū)域的界限
后者是用來檢測(cè)一個(gè)區(qū)域內(nèi)的特征點(diǎn),并輸出這些特征點(diǎn)的坐標(biāo),它需要一個(gè)預(yù)先訓(xùn)練好的模型(通過文件路徑的方法傳入),才能正常工作。
使用開源模型shape_predictor_68_face_landmarks.dat,可以得到68個(gè)特征點(diǎn)位置的坐標(biāo)

點(diǎn)我下載開源數(shù)據(jù)集

基本原理:計(jì)算 眼睛長(zhǎng)寬比EAR.當(dāng)人眼在正常狀態(tài)下時(shí),EAR在某個(gè)值上下波動(dòng),當(dāng)人眼閉合時(shí),EAR迅速下降。所以我們認(rèn)為當(dāng)EAR低于某個(gè)閾值時(shí),眼睛處于閉合狀態(tài)。為檢測(cè)眨眼次數(shù),我們?cè)O(shè)置了閾值為0.2,如果當(dāng)前幀兩雙眼睛寬高比的平均值小于0.2,則加1,如果連續(xù)3次都小于閾值,則表示進(jìn)行了一次眨眼活動(dòng)。

(68點(diǎn)landmark中可以看到37-42為左眼,43-48為右眼)

右眼開合度可以通過以下公式得到(左眼同理):

通過計(jì)算38、39、42、41的縱坐標(biāo)、37、40的橫坐標(biāo)來計(jì)算眼睛的睜開度。如:1/2*[(y42+y41)-(y38+y39)]/(x40-x37)通過一個(gè)閾值確定眼睛是睜開還是閉上。也可以將這個(gè)值與初始的值的比值作為睜開度,根據(jù)不同程度來進(jìn)行比較。睜開度從大到小為進(jìn)入閉眼期,從小到大為進(jìn)入睜眼期,計(jì)算 最長(zhǎng)閉眼時(shí)間(可用幀數(shù)來代替)閉眼次數(shù)為進(jìn)入閉眼、進(jìn)入睜眼的次數(shù) 。

主要代碼思路

第一步:使用dlib.get_frontal_face_detector() 獲得臉部位置檢測(cè)器
第二步:使用dlib.shape_predictor獲得臉部特征位置檢測(cè)器
第三步:分別獲取左右眼面部標(biāo)志的索引
第四步:打開cv2 本地?cái)z像頭
第五步:從視頻流進(jìn)行循環(huán),讀取圖片,并對(duì)圖片做維度擴(kuò)大,并進(jìn)灰度化
第六步:使用detector(gray, 0) 進(jìn)行臉部位置檢測(cè)
第七步:循環(huán)臉部位置信息,使用predictor(gray, rect)獲得臉部特征位置的信息
第八步:將臉部特征信息轉(zhuǎn)換為數(shù)組array的格式
第九步:提取左眼和右眼坐標(biāo)
第十步:構(gòu)造函數(shù)計(jì)算左右眼的EAR值,使用平均值作為最終的EAR
第十一步:使用cv2.convexHull獲得凸包位置,使用drawContours畫出輪廓位置進(jìn)行畫圖操作
第十二步:進(jìn)行畫圖操作,用矩形框標(biāo)注人臉
第十三步:分別計(jì)算左眼和右眼的評(píng)分求平均作為最終的評(píng)分,如果小于閾值,則加1,如果連續(xù)3次都小于閾值,則表示進(jìn)行了一次眨眼活動(dòng)
第十四步:進(jìn)行畫圖操作,68個(gè)特征點(diǎn)標(biāo)識(shí)
第十五步:進(jìn)行畫圖操作,同時(shí)使用cv2.putText將眨眼次數(shù)進(jìn)行顯示

2.打哈欠檢測(cè)原理

嘴部主要取六個(gè)參考點(diǎn):

打哈欠可利用嘴巴處通過計(jì)算51、59、53、57、的縱坐標(biāo)、49、55的橫坐標(biāo)來計(jì)算眼睛的睜開度。如:1/2*[(y51+y53)-(y59+y57)]/(x55-x49)點(diǎn)的距離來判斷是否張嘴及張嘴時(shí)間,從而確定人是否是在打哈欠,同時(shí)這個(gè)閾值應(yīng)當(dāng)合理,能夠與正常說話或哼歌區(qū)分開來。

同眼睛相類似方法求嘴部歐式距離:

主要代碼思路

Step1:提取幀圖像檢測(cè)人臉,嘴部粗定位進(jìn)行膚色分割;
Step2: 嘴部精確定位,獲取嘴部歐式距離K1,若k1大于閾值T1,則Step3,并且count+1;否則count=0回到step1,檢測(cè)下一幀。
Step3: 統(tǒng)計(jì)哈欠特征值count,當(dāng)count超過閾值3,則記作打一次哈欠,保存count到Y(jié)awn,Yawn(i)=count,count=0(count清0)回到Step1,否則的話也直接轉(zhuǎn)回Step1。

3.瞌睡點(diǎn)頭檢測(cè)原理

采用Head Pose Estimation(頭部姿態(tài)估計(jì)) 算法,該算法的步驟一般為:2D人臉關(guān)鍵點(diǎn)檢測(cè);3D人臉模型匹配;求解3D點(diǎn)和對(duì)應(yīng)2D點(diǎn)的轉(zhuǎn)換關(guān)系;根據(jù)旋轉(zhuǎn)矩陣求解歐拉角

https://developer.aliyun.com/article/674048

https://blog.csdn.net/lql0716/article/details/72597719

具體原理請(qǐng)看上面那兩篇博客,網(wǎng)上有開源代碼(如下),大神已經(jīng)幫我們搞好了,我們拿來直接用就行,最后得到歐拉角

點(diǎn)我查看參考代碼

主要代碼思路

頭部姿態(tài)判斷打瞌睡得到實(shí)時(shí)頭部姿態(tài)的旋轉(zhuǎn)角度過后,如下所示為頭部旋轉(zhuǎn)角度的3個(gè)參數(shù)Yaw,Pitch和Roll的示意圖,駕駛員在打瞌睡時(shí),顯然頭部會(huì)做類似于點(diǎn)頭和傾斜的動(dòng)作.而根據(jù)一般人的打瞌睡時(shí)表現(xiàn)出來的頭部姿態(tài),顯然很少會(huì)在Yaw上有動(dòng)作,而主要集中在Pitch和Roll的行為.設(shè)定參數(shù)閾值為0.3,在一個(gè)時(shí)間段內(nèi)10 s內(nèi),當(dāng)I PitchI≥20°或者|Rolll≥20°的時(shí)間比例超過0.3時(shí),就認(rèn)為駕駛員處于點(diǎn)頭打瞌睡的狀態(tài)

4.多信息融合的疲勞判斷

我們分別計(jì)算出單位時(shí)間內(nèi)瞌睡點(diǎn)頭的頻率,眨眼頻率以及打哈欠的頻率分別賦予他們不同的權(quán)值,采用信息融合的方式進(jìn)行綜合打分,最后根據(jù)最終分?jǐn)?shù),設(shè)置疲勞等級(jí),分別為輕度疲勞,中度疲勞和重度疲勞,相應(yīng)的做出報(bào)警等操作,可自行觀看源代碼理解

5.效果展示

5.1ui界面設(shè)計(jì)

[

5.2效果演示

[

5.3報(bào)表界面部分演示

6.項(xiàng)目進(jìn)展

眨眼檢測(cè)DONE
打哈欠檢測(cè)DONE
瞌睡點(diǎn)頭檢測(cè)DONE
實(shí)時(shí)眨眼頻率計(jì)算DONE
實(shí)時(shí)打哈欠頻率DONE
實(shí)時(shí)瞌睡點(diǎn)頭頻率DONE
疲勞程度的計(jì)算DONE
疲勞程度劃分DONE
UI界面設(shè)計(jì)DONE
FPS計(jì)算以及語音播報(bào)DONE
報(bào)表界面設(shè)計(jì)DONE

7.界面參數(shù)介紹

Blinks眨眼次數(shù)
Yawning打哈欠次數(shù)
Nod瞌睡點(diǎn)頭次數(shù)
Blink Frequency實(shí)時(shí)眨眼頻率
Yawing Frequency實(shí)時(shí)打哈欠頻率
Nod Frequency實(shí)時(shí)瞌睡點(diǎn)頭頻率
Score疲勞程度
FPS視頻幀率

8.文件介紹

main.py-------------------------主程序

sats2.py--------------------------報(bào)表界面制作(pyecharts,感覺還是挺好用的,具體操作可以看官網(wǎng)文檔,中國(guó)人開發(fā)的庫值得推薦)

pyecharts gallery pyecharts操作手冊(cè)

images目錄下存放圖片png以及ico

model目錄下存放68人臉關(guān)鍵點(diǎn)模型

fatigue_detect.html-----------------可視化報(bào)表

9.項(xiàng)目所有源代碼獲取

私信我獲取完整源代碼

10.參考博客

https://blog.csdn.net/cungudafa/article/details/103477960

https://blog.csdn.net/cungudafa/article/details/103499230

https://blog.csdn.net/cungudafa/article/details/103496881

https://blog.csdn.net/lql0716/article/details/72597719

https://developer.aliyun.com/article/674048

總結(jié)

以上是生活随笔為你收集整理的基于多信息融合的疲劳驾驶检测系统的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。