?

基于SMO算法的駕駛員疲勞檢測*

2024-01-10 06:54丁琳
企業科技與發展 2023年12期
關鍵詞:乘子人眼人臉

丁琳

(江蘇財經職業技術學院,江蘇淮安 223003)

0 引言

根據國家統計局的統計,我國2022年全年道路交通事故每萬車死亡人數為1.46 人,疲勞駕駛是引起交通事故的主要原因。如何有效地判斷駕駛員的疲勞狀況從而降低交通安全事故發生的概率成為汽車行業重點研究的方向。1994年,日本先鋒公司研發了一種通過檢測心跳速度測試駕駛員是否處于疲勞狀態并發出警告的系統。2001年,美國紐約倫斯勒理工學院的WU 等人[1]設計出一種攝像機定位人眼的硬件系統,通過檢測瞳孔的信息飽和度判定人眼是否處于疲勞狀態。2003年,澳大利亞Seeing Machines公司通過在汽車的儀表盤上安裝微型傳感器獲取駕駛員頭部和面部的疲勞信息,以此判定駕駛員是否處于疲勞狀態。2015年,“沃爾沃”在XC60 系列汽車上安裝了駕駛員安全警告系統,通過攝像頭實時監測汽車與車道標志的距離及當前車輛的形式軌跡,以此判斷車輛是否處于正常行駛狀況。國內開展此項研究的成果也較多,韓政[2]設計一種基于改進的隨機森林級聯回歸方法檢測人臉的關鍵特征點,通過檢測駕駛員眨眼次數和打哈欠時嘴巴張開的程度與頻率等信息綜合判斷其疲勞狀態。高嫄[3]提出一種融合多個疲勞特征的疲勞狀態檢測算法,同樣需要獲取駕駛員眼睛和嘴巴的信息并結合駕駛員大腦運動的過程綜合判斷疲勞信息。李德武[4]考慮到在做人臉圖像分割時,光線問題會導致圖像分割出現差錯,因此利用膚色在色度空間上的聚類特性,提出基于膚色分割的人臉定位方法。李慶臣[5]設計一種多疲勞指標綜合的疲勞狀態檢測系統,解決了因特殊情況導致實際測試環境受影響后結果出現偏差的問題,結合面部、頭部、光線等多方面信息進行疲勞檢測。

本文在前人研究的基礎上,將人臉的關鍵點檢測作為優化的途徑,首先隨機給出關鍵點的初始分布,其次利用整體人臉外觀信息和全局人臉形狀不斷迭代優化,最后通過全局人臉約束修正最終的檢測結果,以此判斷駕駛員的疲勞駕駛行為。

1 基于機器視覺的疲勞狀態識別

關于疲勞狀態的定義有很多,對于人體來說,疲勞狀態意味著人的勞動能力下降,反應能力減弱,而這些狀態的表現形式多數都可以體現在人的臉上。本文采取的疲勞狀態檢測是以人眼閉合狀態的持續時間判斷駕駛員是否處于疲勞狀態,檢測流程圖如圖1所示。

圖1 疲勞狀態檢測流程

由于本文檢測方法進行特征提取時需要定位在人眼部位,提取人眼信息,因此如何準確地檢測人臉并準確地定位到人眼的位置,是研究人員需要解決的主要問題。本文采取的方式是借助機器視覺中強大的圖像處理庫,通過SMO(序列最小優化)算法[6]進行大量的人眼開閉訓練,以達到準確定位人眼并提取信息的目的。

1.1 人臉特征定位

進行人臉定位時,首先需要檢測諸如鼻子左側、鼻孔下側、瞳孔位置、上嘴唇下側等特征點的位置,獲取特征點的位置后進行位置驅動的變形,人臉即可被校正[7]。人臉定位方式采用OpenCV 庫中的DetectFace 函數,該函數可以依靠自身的訓練結果提取圖片中的人臉信息與所需的臉部關鍵特征點。借助DetectFace 函數,將攝像頭采集到的圖像數據灰度化,再經函數處理,便可得到人臉的精確定位。除了人臉信息,函數中還包含了人臉中各個特征關鍵點的信息,如眼、鼻、嘴等的特征信息,可根據需要對不同部位進行信息提取,從而對人臉進行更精確的檢測。

1.2 基于SMO挑選策略的眼部特征參數提取

在基于SMO 挑選策略的人臉檢測中,特征點訓練采用眉心、下巴的中心點、左臉頰和右臉頰4 個位置的特征。訓練時,采用SMO 算法進行特征分類。SMO 是SVM 分類算法的一個發展分支,是針對二次規劃式的高效算法,它處理問題時每次只選擇其中的2 個算子處理,對SMO 進行優化,根據優化的結果更新SVM,觀察因更新導致的變化[7]。在實際的圖像處理過程中,更新屬于一個伴隨的操作,它根據算法的時間復雜度和準確度進行迭代。SMO 采取的方法是先計算檢測圖片大小的約束問題,再解決原來帶有約束的最小化問題。圖像大小的邊界約束舉例如下:使用α1表示第一個乘子,α2表示第二個乘子;因為乘子變少,乘子間約束關系的表示就更簡單,邊界約束情況如圖2所示。

圖2 邊界約束

由圖2 可以看出,因為邊界約束的存在,所需要的乘子均在方框內部,加上線性等式約束的存在,這些乘子就處于對角線的位置,而使用SMO 算法的目的就是在這些線段上尋找一個最優解的存在。

如果計算結果顯示2個乘子是不等關系,線段的邊界約束關系如下所示:

如果計算結果顯示2個乘子是相等關系,相對應的線段邊界約束關系如下:

因為邊界約束關系的改變,導致原來應用于對角線的關系函數不再適用,相對應的關系函數變更為下述公式:

一般情況下,任何一個邊界函數都由一個明確的目標函數表示,這個目標函數表示線性等式所約束的方向存在一個最小值和一個僅大于0的最大值。在上述情境下,函數的最小值由以下函數計算得到:

如果當Ei=ui-yi,則用來表示第i個訓練樣本的誤差,通過公式(5)表示有約束條件的最小值:

假設s=y1y2,那么之前SVM 算法中沒有計算的第一個拉格朗日算子就可以通過第二個拉格朗日算子的計算結果表示:

公式(6)的計算并不是絕對的,假設存在1 個非正數的目標函數,例如如果SMO 算法中的Kernel K不符合Mercer's條件,計算出的目標函數就會存在不確定性,無法正確判斷目標函數的存在狀態。即使Kernel K 符合計算條件,也無法排除計算得到一個函數值為0的目標函數,即沒有得到算子。例如,在一個訓練樣本里的向量有很多都是相同的輸入,那么就會出現上述函數值為0 的情況。為了讓SMO 處理這類問題,需要增加更多的公式滿足所需要的條件,例如下列公式:

SMO 算法的挑選策略通過外層循環達到對整個訓練集全局搜索的目的,采用這個方法可以清楚地計算出不滿足KKT(Karush-Kuhn-Tucker conditions)條件的樣本數量,根據這些樣本數量判斷是否需要優化算法,如果沒有不滿足條件的樣本數量,則不需要優化,說明樣本本身就是最優的;反之,則需要進行優化。不斷重復此步驟,直到所有樣本都符合KKT條件的標準。完成第一個乘子的選擇后,開始選擇第二個乘子,SMO 會選擇最小的函數值作為第二乘子,因為從最小值開始優化可以提高優化的效率。如果優化后仍不滿足條件,那么采用SMO 在所有的非邊界樣本上進行搜索,使乘子的目標函數值最??;如果仍然失敗,則使用SMO 搜索覆蓋整個訓練集,以便更好地尋找滿足條件的乘子,即找到最佳分類。

1.3 基于人眼開合度的訓練測試

訓練時需要構建正負樣本數據集,本文需要建立眼睛狀態分類器。眼睛有兩種狀態,一種是睜開狀態,一種是閉合狀態,本文檢測的是閉合狀態的眼睛。此次采取的訓練方式是建立人的左眼和右眼的灰度圖信息庫,將其中的70%作為訓練數據,剩余的30%作為訓練的測試數據。運行模型訓練模式,此時程序會依次打開閉眼狀態訓練庫(如圖3所示)和睜眼狀態訓練庫(如圖4所示),分別訓練人眼開和閉的2種狀態,訓練完成后對訓練器進行測試。

圖3 閉眼狀態訓練庫

圖4 睜眼狀態訓練庫

2 仿真實驗

經過SVM 訓練器的訓練后,可以從人眼信息狀態灰度圖判斷人眼的狀態,接著是采集實時畫面,將畫面中的人眼信息傳輸到SVM 測試器,與之前樣本訓練的結果進行對比,反饋實時的人眼信息狀態。疲勞檢測流程圖如圖5所示。

圖5 疲勞檢測流程圖

仿真實驗中計算機性能參數為Intel I7 CPU,DDR3 8G RAM,win10 64 bits。采集視頻片段的時長為2~4 s,視頻幀率為25 fps,視頻分辨率為720×480。首先通過SVM 訓練器的訓練,準確定位人眼的位置并與人眼狀態庫進行比較,判斷人眼閉合的狀態,然后進行疲勞狀態檢測,在預定時間內正確地反饋人眼信息,對處于疲勞狀態的人進行提示。

圖6 至圖9 為文獻[1]中的方法和本文方法的疲勞狀態檢測性能對比結果。經對比可知,本文方法比文獻[1]中的方法的訓練準確率高10%以上,這是由于本文在模型測試過程中減小了模型規模,即減少了模型中可學習的參數的數量,并且在迭代過程中對比訓練數據的表現,達到閾值即停止,避免對數據過度優化,因此狀態分類的正確率得到了明顯提高。

圖6 文獻[1]中的方法訓練損失和驗證損失

圖7 文獻[1]中的方法訓練準確率和驗證準確率

圖8 本文方法的訓練損失和驗證損失

圖9 本文的訓練準確率和驗證準確率

3 結語

在交通領域實行實時監測很重要,然而在大量數據下SVM 的樣本訓練存在實時性不高的問題。SMO 算法在一定程度上提高了訓練速度,在保證SVM 分類準確度的前提下,通過剔除大量的非支持向量減小訓練樣本規模的方式,縮短樣本的訓練時間,提高SVM 分類算法的實時性。本文提出的結合駕駛員人眼信息的疲勞檢測算法,通過檢測駕駛員的人眼狀態信息的行為特征,利用SMO 算法訓練庫的優勢,經過一定量的人眼信息訓練,獲得準確的人眼信息反饋,從而在一定時間內完成對駕駛員疲勞狀態的判斷。該疲勞檢測系統對未來的交通防護起到了重要的作用,也為今后汽車行業的科技發展提供更好的研究方向與技術支撐。

猜你喜歡
乘子人眼人臉
再談單位球上正規權Zygmund空間上的點乘子
有特點的人臉
人眼X光
雙線性傅里葉乘子算子的量化加權估計
人眼為什么能看到虛像
單位球上正規權Zygmund空間上的點乘子
三國漫——人臉解鎖
單位球上正規權Zygmund空間上的點乘子
閃瞎人眼的,還有唇
看人,星光璀璨繚人眼
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合