蔣鵬民 李海標(biāo) 黃名柏 時(shí)君
(桂林電子科技大學(xué),桂林 541004)
主題詞:駕駛員 疲勞檢測(cè) 轉(zhuǎn)向盤(pán)圖像 支持向量機(jī)
統(tǒng)計(jì)數(shù)據(jù)表明,我國(guó)每年因疲勞駕駛引起的交通事故占交通事故總數(shù)的20%左右,占特大交通事故的40%以上[1]。如果能在駕駛員疲勞產(chǎn)生的初期給予安全提醒,將會(huì)最大程度地避免交通事故,所以實(shí)時(shí)疲勞檢測(cè)系統(tǒng)的設(shè)計(jì)研究對(duì)道路交通安全意義重大?,F(xiàn)有駕駛員的疲勞檢測(cè)方法主要依靠人臉面部特征進(jìn)行判別[2],這種檢測(cè)方法所采用的算法較復(fù)雜,實(shí)時(shí)效果較差,受個(gè)人特征影響較大。
研究發(fā)現(xiàn),轉(zhuǎn)向盤(pán)轉(zhuǎn)角數(shù)據(jù)能實(shí)時(shí)反映駕駛員的操作狀態(tài),通過(guò)檢測(cè)轉(zhuǎn)向盤(pán)轉(zhuǎn)角的實(shí)時(shí)變化即可判斷駕駛員的疲勞狀態(tài),其中關(guān)鍵是對(duì)轉(zhuǎn)向盤(pán)轉(zhuǎn)角的測(cè)量。目前國(guó)內(nèi)外主要采用轉(zhuǎn)角測(cè)試儀或轉(zhuǎn)角傳感器[3]對(duì)轉(zhuǎn)向盤(pán)轉(zhuǎn)角進(jìn)行測(cè)量,但這些儀器安裝困難,不便于拆卸移動(dòng)。為此,本文提出基于轉(zhuǎn)向盤(pán)圖像的駕駛員疲勞檢測(cè)方法,并建立了駕駛員的疲勞判別模型,通過(guò)試驗(yàn)驗(yàn)證了判別模型的有效性。
基于轉(zhuǎn)向盤(pán)圖像的駕駛員疲勞檢測(cè)流程如圖1所示。首先,由攝像頭實(shí)時(shí)采集轉(zhuǎn)向盤(pán)圖像并進(jìn)行預(yù)處理,通過(guò)對(duì)預(yù)處理后的轉(zhuǎn)向盤(pán)圖像進(jìn)行特征點(diǎn)的檢測(cè)和跟蹤,進(jìn)而計(jì)算出轉(zhuǎn)向盤(pán)的轉(zhuǎn)角;其次,根據(jù)轉(zhuǎn)向盤(pán)轉(zhuǎn)角計(jì)算出與疲勞最相關(guān)的兩個(gè)指標(biāo),即零速百分比PNS和角度標(biāo)準(zhǔn)差σ;最后,采用支持向量機(jī)(SVM)算法建立駕駛員的疲勞判別模型,利用該模型對(duì)試驗(yàn)數(shù)據(jù)進(jìn)行判別。
圖1 基于轉(zhuǎn)向盤(pán)圖像的駕駛員疲勞檢測(cè)流程
2.2.1 轉(zhuǎn)向盤(pán)轉(zhuǎn)角計(jì)算方法
2.2.1.1 轉(zhuǎn)向盤(pán)圓心位置確定
通常情況下轉(zhuǎn)向盤(pán)形狀可視為圓形,但由于攝像頭的安裝位置不一定在轉(zhuǎn)向盤(pán)中心的正上方,為增強(qiáng)算法的魯棒性,采集過(guò)程中的轉(zhuǎn)向盤(pán)形狀一般按橢圓來(lái)處理。
首先利用安裝于駕駛室車(chē)頂位置的攝像頭拍攝一張白色背景的轉(zhuǎn)向盤(pán)圖像作為初始圖像(圖2),然后利用OpenCV庫(kù)中findContours()函數(shù)對(duì)初始圖像進(jìn)行處理,通過(guò)設(shè)置一些約束參數(shù)得到轉(zhuǎn)向盤(pán)圖像的最外輪廓。為快速找到轉(zhuǎn)向盤(pán)圓心位置,在OpenCV中利用圖像矩moments()函數(shù)[4]計(jì)算圖像中所有的矩,進(jìn)而計(jì)算出轉(zhuǎn)向盤(pán)圓心位置坐標(biāo)O(x0,y0)。
圖2 轉(zhuǎn)向盤(pán)初始圖像
2.2.1.2 特征點(diǎn)的檢測(cè)與跟蹤
特征點(diǎn)(也稱角點(diǎn))常被定義為兩條邊的交點(diǎn),更嚴(yán)格地說(shuō),特征點(diǎn)的局部領(lǐng)域應(yīng)該具有兩個(gè)不同區(qū)域的不同方向的邊界。
如圖3所示,攝像頭拍攝到的橢圓形轉(zhuǎn)向盤(pán)上特征點(diǎn)位置坐標(biāo)為m(xm,ym),而實(shí)際特征點(diǎn)位置坐標(biāo)為M(xM,yM),跟蹤點(diǎn)m計(jì)算出的轉(zhuǎn)角與實(shí)際轉(zhuǎn)角(由點(diǎn)M計(jì)算出的轉(zhuǎn)角)存在一定的偏差。m(xm,ym)與M(xM,yM)之間的對(duì)應(yīng)關(guān)系為:
式中,Xo為圓心位置橫坐標(biāo);半徑R為橢圓長(zhǎng)半軸(等于轉(zhuǎn)向盤(pán)最外輪廓半徑),且R的長(zhǎng)度不變。
圖3 檢測(cè)到的特征點(diǎn)位置與實(shí)際位置示意
為了使檢測(cè)到的特征點(diǎn)坐標(biāo)更精確,采用OpenCV庫(kù)中亞像素級(jí)特征點(diǎn)檢測(cè)函數(shù)cornerSubPix()[5]得到當(dāng)前幀轉(zhuǎn)向盤(pán)圖像上特征點(diǎn)位置坐標(biāo)A0(xm01,ym01)和B0(xm02,ym02),經(jīng)式(1)和式(2)換算后得到當(dāng)前幀轉(zhuǎn)向盤(pán)實(shí)際位置坐標(biāo)A0(xM01,yM01)和B0(xM02,yM02,)如圖4所示。
圖4 轉(zhuǎn)向盤(pán)上特征點(diǎn)位置示意
在圖像處理領(lǐng)域可設(shè)置感興趣區(qū)域(ROI),也就是從圖像中選擇一個(gè)分析所關(guān)注的重點(diǎn)區(qū)域,在此區(qū)域內(nèi)用鼠標(biāo)點(diǎn)擊即可檢測(cè)出此區(qū)域內(nèi)的特征點(diǎn),以提高特征點(diǎn)的檢測(cè)速度。
如果對(duì)每幀轉(zhuǎn)向盤(pán)圖像都要進(jìn)行特征點(diǎn)檢測(cè)則算法較復(fù)雜,同時(shí)考慮到在實(shí)際行車(chē)過(guò)程中駕駛員手臂可能會(huì)遮擋部分轉(zhuǎn)向盤(pán),為此,采用KLT跟蹤算法[6]對(duì)特征點(diǎn)進(jìn)行實(shí)時(shí)跟蹤。
KLT跟蹤算法的原理為:假設(shè)相鄰兩幀圖像的亮度恒定、時(shí)間連續(xù)和空間一致性,簡(jiǎn)單的說(shuō),通過(guò)迭代尋找上一幀中轉(zhuǎn)向盤(pán)圖像中的特征點(diǎn)在當(dāng)前幀中的位置。KLT跟蹤算法的具體實(shí)現(xiàn)過(guò)程被寫(xiě)成了庫(kù)函數(shù)CalcOpticalFlowPyrLK(),把上一幀特征點(diǎn)位置坐標(biāo)A0(xM01,yM01)和輸入到CalcOpticalFlowPyrLK()函數(shù)中,函數(shù)輸出當(dāng)前幀特征點(diǎn)位置坐標(biāo)A1(xM11,yM11)和
2.2.1.3 轉(zhuǎn)向盤(pán)轉(zhuǎn)動(dòng)角度θ的計(jì)算
當(dāng)轉(zhuǎn)向盤(pán)轉(zhuǎn)動(dòng)角度θ后,當(dāng)前幀的特征點(diǎn)位置為如圖5所示,最終轉(zhuǎn)向盤(pán)轉(zhuǎn)動(dòng)角度θ為特征點(diǎn)A0和B0轉(zhuǎn)動(dòng)角度的平均值,即
由兩點(diǎn)間距離公式計(jì)算出:
同理可算出 |OA1|、 |A0A1|、|OB0|、 |OB1|和 |B0B1|。
式中,NPSi為第i幀的零速百分比;Ni為第i幀前50 s內(nèi)角速度的總采樣點(diǎn)數(shù);ni為第i幀前50 s內(nèi)角速度在±0.1°/s內(nèi)的點(diǎn)數(shù)。
另外利用角度標(biāo)準(zhǔn)差σ表征所選時(shí)間段內(nèi)轉(zhuǎn)向盤(pán)轉(zhuǎn)角波動(dòng)的大小,角度標(biāo)準(zhǔn)差計(jì)算式為:
一般情況下,需要求兩個(gè)特征點(diǎn)動(dòng)角度的平均值作為最后的轉(zhuǎn)角數(shù)據(jù),但是汽車(chē)實(shí)際行駛過(guò)程中駕駛員可能會(huì)遮擋一個(gè)特征點(diǎn),這時(shí)另外一個(gè)特征點(diǎn)的轉(zhuǎn)角可作為最終的轉(zhuǎn)角數(shù)據(jù)。
2.2.2 特征提取
研究發(fā)現(xiàn),當(dāng)駕駛員處于疲勞狀態(tài)時(shí),其對(duì)轉(zhuǎn)向盤(pán)的修正頻度減少,轉(zhuǎn)向盤(pán)靜止不動(dòng)的時(shí)間增多。本文采用零速百分比PNS來(lái)表征所選時(shí)間段內(nèi)轉(zhuǎn)向盤(pán)靜止不動(dòng)的程度[7],取時(shí)間段為50 s,采樣頻率為10幀/s,則零速百分比PNS計(jì)算式為:
式中,θj為第j幀對(duì)應(yīng)的轉(zhuǎn)向盤(pán)轉(zhuǎn)角;μ為第M幀內(nèi)平均每幀轉(zhuǎn)向盤(pán)轉(zhuǎn)角。
2.2.3 疲勞狀態(tài)判別算法
綜合所得的零速百分比PNS和角度標(biāo)準(zhǔn)差σ,采用支持向量機(jī)(SVM)分類(lèi)算法建立駕駛員疲勞判別模型[8]。
支持向量機(jī)分類(lèi)算法先訓(xùn)練樣本集S,在樣本空間中找到一個(gè)劃分不同類(lèi)的超平面,該超平面對(duì)應(yīng)的模型為ωTx+b=0,模型參數(shù)ω為法向量、b為位移項(xiàng)、T為轉(zhuǎn)置為零速百分比和角度標(biāo)準(zhǔn)差組成的自變量。
支持向量機(jī)分類(lèi)算法實(shí)現(xiàn)步驟如下。
a.訓(xùn)練樣本的采集。選擇擁有5年以上駕齡的5名駕駛員,每位駕駛員隨機(jī)挑選一部車(chē)況良好的車(chē)輛,采集不同行駛狀況下的100個(gè)訓(xùn)練樣本,樣本情況如表1所列。
表1 不同行駛狀況下采集的樣本數(shù)量
b.參數(shù)的求解。找到一個(gè)超平面將訓(xùn)練樣本分開(kāi),且滿足兩類(lèi)支持向量(滿足ωTx+b=±1的樣本點(diǎn))到超平面的距離之和最大,也就是找到約束模型ωTx+b=0的參數(shù)ω和b,使得間隔最大,即
以上就是支持向量機(jī)融合算法的基本模型,式(10)本身是凸二次規(guī)劃問(wèn)題,可以直接用現(xiàn)成的優(yōu)化方法來(lái)計(jì)算,但是可以采用更高效的方法,就是使用拉格朗日乘子法得到其對(duì)偶問(wèn)題:
式中,xt1、xt2、yt1、yt2為樣本參數(shù);α為拉格朗日常數(shù)。
以上是一般線性SVM分類(lèi)原理,對(duì)于疲勞駕駛行為決策模型,屬于非線性可分問(wèn)題,則需在上式中引入實(shí)現(xiàn)線性映射的核函數(shù)K(xt1,xt2),則
支持向量機(jī)(SVM)融合算法的模型參數(shù)設(shè)置如表2所示。
本文基于4重交叉檢驗(yàn)法對(duì)疲勞駕駛的檢測(cè)模型做出準(zhǔn)確率的評(píng)價(jià),利用網(wǎng)格尋優(yōu)法搜尋最優(yōu)變量組合其搜尋結(jié)果如圖6所示。由圖6可知,當(dāng)交叉檢驗(yàn)準(zhǔn)確率為87%時(shí),模型參數(shù)達(dá)到最優(yōu),此時(shí),C=4,γ=32。
表2 SVM訓(xùn)練參數(shù)的設(shè)置
圖6 網(wǎng)格尋優(yōu)法搜尋最優(yōu)變量組合3D視圖
在實(shí)際的機(jī)動(dòng)車(chē)行駛環(huán)境下對(duì)建立的疲勞判別模型進(jìn)行了試驗(yàn)驗(yàn)證。試驗(yàn)時(shí)間段為上午9時(shí)至12時(shí)和下午2時(shí)至4時(shí),地點(diǎn)為桂林市中山路的主干道。選取100個(gè)測(cè)試樣本,其中清醒狀態(tài)樣本80個(gè),疲勞狀態(tài)樣本20個(gè),測(cè)試樣本狀態(tài)是由人工主觀察所得,模型判別結(jié)果與實(shí)際狀態(tài)一致視為判別正確,否則為誤判。結(jié)果如表3所列。
表3 判別結(jié)果
由表3可知,疲勞判別模型正確識(shí)別率為85%,出現(xiàn)誤判的原因?yàn)椋河袝r(shí)光線不佳會(huì)造成特征點(diǎn)跟蹤失??;有些司機(jī)受個(gè)人駕駛習(xí)慣影響,其對(duì)轉(zhuǎn)向盤(pán)操作的行為與一般規(guī)律性不符。
本文提出一種基于轉(zhuǎn)向盤(pán)圖像的駕駛員疲勞檢測(cè)方法。首先采用基于轉(zhuǎn)向盤(pán)圖像來(lái)計(jì)算轉(zhuǎn)角,進(jìn)而提取出與疲勞相關(guān)的零速百分比和角度標(biāo)準(zhǔn)差兩個(gè)指標(biāo),最后采用處理非線性問(wèn)題較好的支持向量機(jī)融合算法建立了駕駛員的疲勞判別模型。試驗(yàn)結(jié)果表明,該模型的檢測(cè)正確率達(dá)85%,檢測(cè)方法具有操作簡(jiǎn)單、實(shí)用性強(qiáng)、移植性好以及對(duì)駕駛員不造成干擾等優(yōu)點(diǎn)。