丁琳
(江蘇財(cái)經(jīng)職業(yè)技術(shù)學(xué)院,江蘇淮安 223003)
根據(jù)國(guó)家統(tǒng)計(jì)局的統(tǒng)計(jì),我國(guó)2022年全年道路交通事故每萬(wàn)車死亡人數(shù)為1.46 人,疲勞駕駛是引起交通事故的主要原因。如何有效地判斷駕駛員的疲勞狀況從而降低交通安全事故發(fā)生的概率成為汽車行業(yè)重點(diǎn)研究的方向。1994年,日本先鋒公司研發(fā)了一種通過(guò)檢測(cè)心跳速度測(cè)試駕駛員是否處于疲勞狀態(tài)并發(fā)出警告的系統(tǒng)。2001年,美國(guó)紐約倫斯勒理工學(xué)院的WU 等人[1]設(shè)計(jì)出一種攝像機(jī)定位人眼的硬件系統(tǒng),通過(guò)檢測(cè)瞳孔的信息飽和度判定人眼是否處于疲勞狀態(tài)。2003年,澳大利亞Seeing Machines公司通過(guò)在汽車的儀表盤上安裝微型傳感器獲取駕駛員頭部和面部的疲勞信息,以此判定駕駛員是否處于疲勞狀態(tài)。2015年,“沃爾沃”在XC60 系列汽車上安裝了駕駛員安全警告系統(tǒng),通過(guò)攝像頭實(shí)時(shí)監(jiān)測(cè)汽車與車道標(biāo)志的距離及當(dāng)前車輛的形式軌跡,以此判斷車輛是否處于正常行駛狀況。國(guó)內(nèi)開(kāi)展此項(xiàng)研究的成果也較多,韓政[2]設(shè)計(jì)一種基于改進(jìn)的隨機(jī)森林級(jí)聯(lián)回歸方法檢測(cè)人臉的關(guān)鍵特征點(diǎn),通過(guò)檢測(cè)駕駛員眨眼次數(shù)和打哈欠時(shí)嘴巴張開(kāi)的程度與頻率等信息綜合判斷其疲勞狀態(tài)。高嫄[3]提出一種融合多個(gè)疲勞特征的疲勞狀態(tài)檢測(cè)算法,同樣需要獲取駕駛員眼睛和嘴巴的信息并結(jié)合駕駛員大腦運(yùn)動(dòng)的過(guò)程綜合判斷疲勞信息。李德武[4]考慮到在做人臉圖像分割時(shí),光線問(wèn)題會(huì)導(dǎo)致圖像分割出現(xiàn)差錯(cuò),因此利用膚色在色度空間上的聚類特性,提出基于膚色分割的人臉定位方法。李慶臣[5]設(shè)計(jì)一種多疲勞指標(biāo)綜合的疲勞狀態(tài)檢測(cè)系統(tǒng),解決了因特殊情況導(dǎo)致實(shí)際測(cè)試環(huán)境受影響后結(jié)果出現(xiàn)偏差的問(wèn)題,結(jié)合面部、頭部、光線等多方面信息進(jìn)行疲勞檢測(cè)。
本文在前人研究的基礎(chǔ)上,將人臉的關(guān)鍵點(diǎn)檢測(cè)作為優(yōu)化的途徑,首先隨機(jī)給出關(guān)鍵點(diǎn)的初始分布,其次利用整體人臉外觀信息和全局人臉形狀不斷迭代優(yōu)化,最后通過(guò)全局人臉約束修正最終的檢測(cè)結(jié)果,以此判斷駕駛員的疲勞駕駛行為。
關(guān)于疲勞狀態(tài)的定義有很多,對(duì)于人體來(lái)說(shuō),疲勞狀態(tài)意味著人的勞動(dòng)能力下降,反應(yīng)能力減弱,而這些狀態(tài)的表現(xiàn)形式多數(shù)都可以體現(xiàn)在人的臉上。本文采取的疲勞狀態(tài)檢測(cè)是以人眼閉合狀態(tài)的持續(xù)時(shí)間判斷駕駛員是否處于疲勞狀態(tài),檢測(cè)流程圖如圖1所示。
圖1 疲勞狀態(tài)檢測(cè)流程
由于本文檢測(cè)方法進(jìn)行特征提取時(shí)需要定位在人眼部位,提取人眼信息,因此如何準(zhǔn)確地檢測(cè)人臉并準(zhǔn)確地定位到人眼的位置,是研究人員需要解決的主要問(wèn)題。本文采取的方式是借助機(jī)器視覺(jué)中強(qiáng)大的圖像處理庫(kù),通過(guò)SMO(序列最小優(yōu)化)算法[6]進(jìn)行大量的人眼開(kāi)閉訓(xùn)練,以達(dá)到準(zhǔn)確定位人眼并提取信息的目的。
進(jìn)行人臉定位時(shí),首先需要檢測(cè)諸如鼻子左側(cè)、鼻孔下側(cè)、瞳孔位置、上嘴唇下側(cè)等特征點(diǎn)的位置,獲取特征點(diǎn)的位置后進(jìn)行位置驅(qū)動(dòng)的變形,人臉即可被校正[7]。人臉定位方式采用OpenCV 庫(kù)中的DetectFace 函數(shù),該函數(shù)可以依靠自身的訓(xùn)練結(jié)果提取圖片中的人臉信息與所需的臉部關(guān)鍵特征點(diǎn)。借助DetectFace 函數(shù),將攝像頭采集到的圖像數(shù)據(jù)灰度化,再經(jīng)函數(shù)處理,便可得到人臉的精確定位。除了人臉信息,函數(shù)中還包含了人臉中各個(gè)特征關(guān)鍵點(diǎn)的信息,如眼、鼻、嘴等的特征信息,可根據(jù)需要對(duì)不同部位進(jìn)行信息提取,從而對(duì)人臉進(jìn)行更精確的檢測(cè)。
在基于SMO 挑選策略的人臉檢測(cè)中,特征點(diǎn)訓(xùn)練采用眉心、下巴的中心點(diǎn)、左臉頰和右臉頰4 個(gè)位置的特征。訓(xùn)練時(shí),采用SMO 算法進(jìn)行特征分類。SMO 是SVM 分類算法的一個(gè)發(fā)展分支,是針對(duì)二次規(guī)劃式的高效算法,它處理問(wèn)題時(shí)每次只選擇其中的2 個(gè)算子處理,對(duì)SMO 進(jìn)行優(yōu)化,根據(jù)優(yōu)化的結(jié)果更新SVM,觀察因更新導(dǎo)致的變化[7]。在實(shí)際的圖像處理過(guò)程中,更新屬于一個(gè)伴隨的操作,它根據(jù)算法的時(shí)間復(fù)雜度和準(zhǔn)確度進(jìn)行迭代。SMO 采取的方法是先計(jì)算檢測(cè)圖片大小的約束問(wèn)題,再解決原來(lái)帶有約束的最小化問(wèn)題。圖像大小的邊界約束舉例如下:使用α1表示第一個(gè)乘子,α2表示第二個(gè)乘子;因?yàn)槌俗幼兩伲俗娱g約束關(guān)系的表示就更簡(jiǎn)單,邊界約束情況如圖2所示。
圖2 邊界約束
由圖2 可以看出,因?yàn)檫吔缂s束的存在,所需要的乘子均在方框內(nèi)部,加上線性等式約束的存在,這些乘子就處于對(duì)角線的位置,而使用SMO 算法的目的就是在這些線段上尋找一個(gè)最優(yōu)解的存在。
如果計(jì)算結(jié)果顯示2個(gè)乘子是不等關(guān)系,線段的邊界約束關(guān)系如下所示:
如果計(jì)算結(jié)果顯示2個(gè)乘子是相等關(guān)系,相對(duì)應(yīng)的線段邊界約束關(guān)系如下:
因?yàn)檫吔缂s束關(guān)系的改變,導(dǎo)致原來(lái)應(yīng)用于對(duì)角線的關(guān)系函數(shù)不再適用,相對(duì)應(yīng)的關(guān)系函數(shù)變更為下述公式:
一般情況下,任何一個(gè)邊界函數(shù)都由一個(gè)明確的目標(biāo)函數(shù)表示,這個(gè)目標(biāo)函數(shù)表示線性等式所約束的方向存在一個(gè)最小值和一個(gè)僅大于0的最大值。在上述情境下,函數(shù)的最小值由以下函數(shù)計(jì)算得到:
如果當(dāng)Ei=ui-yi,則用來(lái)表示第i個(gè)訓(xùn)練樣本的誤差,通過(guò)公式(5)表示有約束條件的最小值:
假設(shè)s=y1y2,那么之前SVM 算法中沒(méi)有計(jì)算的第一個(gè)拉格朗日算子就可以通過(guò)第二個(gè)拉格朗日算子的計(jì)算結(jié)果表示:
公式(6)的計(jì)算并不是絕對(duì)的,假設(shè)存在1 個(gè)非正數(shù)的目標(biāo)函數(shù),例如如果SMO 算法中的Kernel K不符合Mercer's條件,計(jì)算出的目標(biāo)函數(shù)就會(huì)存在不確定性,無(wú)法正確判斷目標(biāo)函數(shù)的存在狀態(tài)。即使Kernel K 符合計(jì)算條件,也無(wú)法排除計(jì)算得到一個(gè)函數(shù)值為0的目標(biāo)函數(shù),即沒(méi)有得到算子。例如,在一個(gè)訓(xùn)練樣本里的向量有很多都是相同的輸入,那么就會(huì)出現(xiàn)上述函數(shù)值為0 的情況。為了讓SMO 處理這類問(wèn)題,需要增加更多的公式滿足所需要的條件,例如下列公式:
SMO 算法的挑選策略通過(guò)外層循環(huán)達(dá)到對(duì)整個(gè)訓(xùn)練集全局搜索的目的,采用這個(gè)方法可以清楚地計(jì)算出不滿足KKT(Karush-Kuhn-Tucker conditions)條件的樣本數(shù)量,根據(jù)這些樣本數(shù)量判斷是否需要優(yōu)化算法,如果沒(méi)有不滿足條件的樣本數(shù)量,則不需要優(yōu)化,說(shuō)明樣本本身就是最優(yōu)的;反之,則需要進(jìn)行優(yōu)化。不斷重復(fù)此步驟,直到所有樣本都符合KKT條件的標(biāo)準(zhǔn)。完成第一個(gè)乘子的選擇后,開(kāi)始選擇第二個(gè)乘子,SMO 會(huì)選擇最小的函數(shù)值作為第二乘子,因?yàn)閺淖钚≈甸_(kāi)始優(yōu)化可以提高優(yōu)化的效率。如果優(yōu)化后仍不滿足條件,那么采用SMO 在所有的非邊界樣本上進(jìn)行搜索,使乘子的目標(biāo)函數(shù)值最?。蝗绻匀皇?,則使用SMO 搜索覆蓋整個(gè)訓(xùn)練集,以便更好地尋找滿足條件的乘子,即找到最佳分類。
訓(xùn)練時(shí)需要構(gòu)建正負(fù)樣本數(shù)據(jù)集,本文需要建立眼睛狀態(tài)分類器。眼睛有兩種狀態(tài),一種是睜開(kāi)狀態(tài),一種是閉合狀態(tài),本文檢測(cè)的是閉合狀態(tài)的眼睛。此次采取的訓(xùn)練方式是建立人的左眼和右眼的灰度圖信息庫(kù),將其中的70%作為訓(xùn)練數(shù)據(jù),剩余的30%作為訓(xùn)練的測(cè)試數(shù)據(jù)。運(yùn)行模型訓(xùn)練模式,此時(shí)程序會(huì)依次打開(kāi)閉眼狀態(tài)訓(xùn)練庫(kù)(如圖3所示)和睜眼狀態(tài)訓(xùn)練庫(kù)(如圖4所示),分別訓(xùn)練人眼開(kāi)和閉的2種狀態(tài),訓(xùn)練完成后對(duì)訓(xùn)練器進(jìn)行測(cè)試。
圖3 閉眼狀態(tài)訓(xùn)練庫(kù)
圖4 睜眼狀態(tài)訓(xùn)練庫(kù)
經(jīng)過(guò)SVM 訓(xùn)練器的訓(xùn)練后,可以從人眼信息狀態(tài)灰度圖判斷人眼的狀態(tài),接著是采集實(shí)時(shí)畫面,將畫面中的人眼信息傳輸?shù)絊VM 測(cè)試器,與之前樣本訓(xùn)練的結(jié)果進(jìn)行對(duì)比,反饋實(shí)時(shí)的人眼信息狀態(tài)。疲勞檢測(cè)流程圖如圖5所示。
圖5 疲勞檢測(cè)流程圖
仿真實(shí)驗(yàn)中計(jì)算機(jī)性能參數(shù)為Intel I7 CPU,DDR3 8G RAM,win10 64 bits。采集視頻片段的時(shí)長(zhǎng)為2~4 s,視頻幀率為25 fps,視頻分辨率為720×480。首先通過(guò)SVM 訓(xùn)練器的訓(xùn)練,準(zhǔn)確定位人眼的位置并與人眼狀態(tài)庫(kù)進(jìn)行比較,判斷人眼閉合的狀態(tài),然后進(jìn)行疲勞狀態(tài)檢測(cè),在預(yù)定時(shí)間內(nèi)正確地反饋人眼信息,對(duì)處于疲勞狀態(tài)的人進(jìn)行提示。
圖6 至圖9 為文獻(xiàn)[1]中的方法和本文方法的疲勞狀態(tài)檢測(cè)性能對(duì)比結(jié)果。經(jīng)對(duì)比可知,本文方法比文獻(xiàn)[1]中的方法的訓(xùn)練準(zhǔn)確率高10%以上,這是由于本文在模型測(cè)試過(guò)程中減小了模型規(guī)模,即減少了模型中可學(xué)習(xí)的參數(shù)的數(shù)量,并且在迭代過(guò)程中對(duì)比訓(xùn)練數(shù)據(jù)的表現(xiàn),達(dá)到閾值即停止,避免對(duì)數(shù)據(jù)過(guò)度優(yōu)化,因此狀態(tài)分類的正確率得到了明顯提高。
圖6 文獻(xiàn)[1]中的方法訓(xùn)練損失和驗(yàn)證損失
圖7 文獻(xiàn)[1]中的方法訓(xùn)練準(zhǔn)確率和驗(yàn)證準(zhǔn)確率
圖8 本文方法的訓(xùn)練損失和驗(yàn)證損失
圖9 本文的訓(xùn)練準(zhǔn)確率和驗(yàn)證準(zhǔn)確率
在交通領(lǐng)域?qū)嵭袑?shí)時(shí)監(jiān)測(cè)很重要,然而在大量數(shù)據(jù)下SVM 的樣本訓(xùn)練存在實(shí)時(shí)性不高的問(wèn)題。SMO 算法在一定程度上提高了訓(xùn)練速度,在保證SVM 分類準(zhǔn)確度的前提下,通過(guò)剔除大量的非支持向量減小訓(xùn)練樣本規(guī)模的方式,縮短樣本的訓(xùn)練時(shí)間,提高SVM 分類算法的實(shí)時(shí)性。本文提出的結(jié)合駕駛員人眼信息的疲勞檢測(cè)算法,通過(guò)檢測(cè)駕駛員的人眼狀態(tài)信息的行為特征,利用SMO 算法訓(xùn)練庫(kù)的優(yōu)勢(shì),經(jīng)過(guò)一定量的人眼信息訓(xùn)練,獲得準(zhǔn)確的人眼信息反饋,從而在一定時(shí)間內(nèi)完成對(duì)駕駛員疲勞狀態(tài)的判斷。該疲勞檢測(cè)系統(tǒng)對(duì)未來(lái)的交通防護(hù)起到了重要的作用,也為今后汽車行業(yè)的科技發(fā)展提供更好的研究方向與技術(shù)支撐。