楊萍茹,黃 勇,廖龍濤,孫棣華,陳 希,王正江
(1.重慶城市綜合交通樞紐開發投資有限公司,重慶 401121;2.重慶大學 自動化學院,重慶 400044;3.重慶市公共交通控股(集團)有限公司,重慶 401121)
目前我國機動車保有量已經突破2億,車輛的增多及交通設施的完善給人們的出行帶來了巨大的便利,但是也引發了一系列的交通事故。據有關統計數據,在各類事故死亡人數中,交通事故死亡人數所占比例為78.5%。其中,駕駛員疲勞造成交通事故的占總數的20%左右,占特大交通事故的40%以上[1]。
如果駕駛員在疲勞狀態下駕駛車輛,不僅自己的人身財產安全存在隱患,而且容易對其他行人及車輛造成安全影響。因為疲勞駕駛所引發的交通事故并不是在駕駛員剛剛產生疲勞時就發生,所以可以通過一種疲勞駕駛監測手段在駕駛員產生疲勞時進行預警提示,從而使得駕駛員可以采取一定的預防措施,以避免事故發生。
現有研究中有多種方式能夠實現疲勞駕駛監測,總結起來主要包括3種:①基于駕駛員面部特征的檢測(如眼睛的閉合狀態、面部表情、眨眼速度等);②基于駕駛員生理特征的檢測(如心電信號、腦電信號以及肌電信號等);③ 基于駕駛行為的檢測(如方向盤轉角、車輛位置、車輛加減速等)。WierwiIIe[2]最早基于模擬實驗提出PERCLOS(一定時間內眼睛閉合時間所占的比值)指標用于駕駛疲勞識別,后來研究表明該指標是疲勞識別最有效的指標之一。Mbouna等[3]從駕駛員臉部視頻各片段中提取了EI(眼睛閉合度)、PA(瞳孔偏離率)和HP(頭部姿態偏差)等3類眼睛和頭部特征,并基于SVM建立疲勞識別模型后驗證其平均錯誤識別率為5.16%。王琳等[4]從肌電信號和心電信號中提取出肌電信號復雜度、心電信號復雜度和心電信號樣本熵等3個特征參數,并基于多元回歸理論建立了判定駕駛疲勞的數學模型,該模型準確率達90%以上。萬蔚等[5]對車輛速度、方向盤轉角和車輛橫向位置的樣本熵進行了分析,從中提取了該3類參數的樣本熵特征,并構建了基于BP神經網絡的駕駛員疲勞駕駛判別算法。
基于駕駛員面部特征的方式可以有效監測疲勞駕駛,且對駕駛員操作不具有入侵性,但是駕駛員由于受到監視而會對此類識別方式產生抵觸,且該方式會受到駕駛員膚色、外界光照以及佩戴眼鏡等因素的影響。生理信號能夠直接反應人體的生理狀態,基于駕駛員生理特征的疲勞檢測被認為是最直觀、最準確的檢測方法[6]。但是在采集駕駛員的生理信號時,設備會與駕駛員有接觸,從而給駕駛員的操作帶來影響,不利于安全駕駛,且信號采集設備也十分昂貴?;隈{駛行為的檢測方法則能夠有效避免前2種方式的不足,受到了眾多研究者的重視,但是該方式目前大多是基于仿真研究的,部分數據在實際中不易獲得,而基于實車的研究又需要在車輛上安裝多種傳感器,存在一定實用局限性。
針對基于駕駛行為檢測方法的缺點,考慮到智能手表日益普及,其附帶的傳感器能夠有效監測人體手部運動,因此,本文考慮使用智能手表感知駕駛員的轉向行為信息,從中提取出有效疲勞特征指標并基于分類模型實現疲勞識別。該方式不需要依賴車載傳感器,且研究成果可以以APP的形式安裝在智能手表中供駕駛員使用,成本更低、實用性更強、智能化水平更高。本文采用KSS量表,綜合多人主觀評價,給采集到的駕駛數據打上“正常駕駛”或“疲勞駕駛”的標簽,并將這些數據作為訓練集,利用隨機森林方法訓練本文提出的基于智能手表的疲勞駕駛監測方法。實驗結果表明本文提出的方法能夠準確感知轉向差異并判斷駕駛員的駕駛狀態。
實驗以重慶大學車車協同仿真平臺為實驗平臺,將智能手表佩戴在駕駛員左手手腕處,采集10名駕駛員在正常和疲勞狀態下手腕運動的加速度和角速度數據。
模擬駕駛平臺是利用虛擬現實仿真技術營造虛擬的駕駛訓練環境,人們通過模擬器的操作部件與虛擬的環境進行交互。本文所進行疲勞駕駛實驗是基于重慶大學教育部重點實驗室T-CPS車車/車路協同仿真平臺,該平臺由3臺駕駛模擬器和1臺仿真工作站服務器組成,如圖1所示。每臺駕駛模擬器均具有可變轉向力反饋方向盤、虛擬儀表顯示、油門踏板、剎車踏板、自動檔換檔桿、電動座椅和轉向燈開關等,同時駕駛模擬器利用3塊顯示屏拼接而成,進行實時交通場景交互。該平臺采用的是PreScan虛擬交通場景設計與仿真軟件,通過與Matlab中Simulink等軟件聯合實現在環駕駛仿真。
本文招募了10名志愿者(編號1~10)進行疲勞駕駛實驗,包括8名男性和2名女性,年齡分布在22~35歲(均值26.5歲),駕齡分布在2~8 a。實驗選用容易產生疲勞的高速公路這種單調場景,道路長63 km,雙向4車道,車速保持在80±10 km/h,在駕駛過程中需要減少變道和超車行為。仿真場景如圖2所示。
實驗需要進行正常駕駛和疲勞駕駛2個階段,每名志愿者均需要進行這2個階段的實驗。為了避免正常和疲勞駕駛實驗之間造成干擾,2個階段的實驗需要間隔一定的時間進行,具體實驗順序如表1所示。

表1 實驗順序
第一階段為正常駕駛實驗,要求志愿者保持充足的睡眠,并且在大腦比較清醒的上午9點開始進行。第二階段實驗為疲勞駕駛實驗,要求志愿者在實驗前睡眠較晚且不充足,并且在大腦較為疲勞的下午1點開始進行。2個階段的實驗均需要進行1 h。實驗前需要每名志愿者充分熟悉駕駛環境,并且在實驗過程中需要將智能手表佩戴在左手手腕處,且手握方向盤的位置如圖3所示。實驗過程中除了采集智能手表加速度和角速度數據以外,還需定期填寫KSS疲勞評測問卷[7]以及實時記錄駕駛員的面部視頻,以便后期對駕駛員的駕駛狀態進行標定。
文獻[8-9]的研究表明,駕駛員的主觀自評與基于面部視頻的主觀他評具有較高的一致性,通過綜合駕駛員本人及他人的主觀評價,可以達到相對客觀的疲勞判定。另外,駕駛員在疲勞駕駛和正常駕駛時,對車輛的操控能力會有所不同,這一差別可用作客觀評價指標。為了提高對駕駛員狀態評定的準確性,本文通過采用調查量表,結合駕駛員的主觀自評和基于面部視頻的主觀他評進行疲勞駕駛評定。首先將某段樣本數據對應的根據KSS量表(如表2所示)自主評定的狀態等級(記為KRATE)作為參考值,當KRATE≤3時則表示處于正常狀態,當KRATE≥7時則表示處于疲勞狀態,然后與文獻[10]基于面部視頻的評價方式所得結果進行對比,當2種方式所得結果不一致時則舍棄該樣本,否則保留該樣本。
已有研究發現,隨著疲勞程度的加深,駕駛員對車輛的操控能力會降低,表現為對方向盤的修正頻度降低,修正的幅度增大。下面以不同駕駛狀態下所采集的加速度數據進行對比分析。圖4為正常駕駛和疲勞駕駛狀態下的加速度數據變化圖,可以發現,正常駕駛情況下,X軸、Y軸和Z軸加速度值會不斷變化,且變化的幅值較??;而在疲勞駕駛情況下,X軸、Y軸和Z軸加速度值的波動變小,甚至長時間幾乎不變,而會伴有較大幅度的變化。因此,可以通過一些量化的特征參數來表征這種數據變化差異,進而實現區分不同的駕駛員狀態。

表2 KSS量表等級描述
從前面的分析中可以看出數據波動具有差異,可以利用統計特征來描述這種差異,常用的統計特征包括均值(Mean)、方差(Variance)和均方根(Root Mean Square)。
均值是表示一組數據集中趨勢的量數,是指在一組數據中所有數據之和再除以這組數據的個數。它是反映數據集中趨勢的一項指標,其數學定義為:
方差是衡量隨機變量或一組數據離散程度的度量,其數學定義為:
均方根能夠描述數據相對于零值的波動情況,其數學定義為:
此外,樣本熵(sample entropy,SampEn)是由Richman和Moornan提出的一種新的時間序列復雜性度量算法[11],比近似熵更具有相對一致性。樣本熵有較好的抗噪抗干擾能力,只需較短的數據就能達到有效分析的目的,運算時間短,對確定性信號和隨機信號都適用,是非線性動力學時間序列研究的有力工具。本文中通過計算駕駛員駕駛過程中各個指定時刻所有被試者心電信號的樣本熵,以此作為表征駕駛員疲勞的特征參數,可用SampEn(m,r,N)來表示,其中m為維數,r為相似容限,N為長度。相關研究指出[12],當m=2,r=(0.1~0.2)SD時,樣本熵的結果較為合理,SD為原始數據的標準差。樣本熵算法如下。
步驟1設N點原始時間序列為:x(1),x(2),…,x(N),按順序組成一組m維矢量為:
步驟2定義Xm(i)和Xm(j)間的距離d[Xm(i),Xm(j)]為 對 應 元 素 差 值 最 大 的 一個,即:
步驟3給定閾值r,對每一個i≤N-m值,統計d[Xm(i),Xm(j)]<r的數目(模板匹配數),然后計算此數目與距離總數的比值,用表示,即:
步驟4求對于所有i的平均值,即:
步驟5將矢量維度m改為(m+1),重復步驟1~步驟4,得B(m+1)(r),則此序列樣本熵為:
當N為有限值時,樣本熵可表示為:
根據以上特征提取理論知識,本文提取了智能手表XYZ軸絕對加速度的均值(3個軸分別記為MAAX、MAAY和MAAZ)、絕對加速度的方差(3個軸分別記為VAAX、VAAY和VAAZ)、合成加速度均方根值(記為RMSA)、絕對角速度的均值(3個軸分別記為MAPX、MAPY和MAPZ)、絕對角速度的方差(3個軸分別記為VAPX、VAPY和VAPZ)、合成角速度均方根值(記為RMSP)、絕對加速度樣本熵(3個軸分別記為SEAAX、SEAAY和SEAAZ)、合成加速度樣本熵(記為SEA)、絕對角速度樣本熵(3個軸分別記為SEAPX、SEAPY和SEAPZ)和合成角速度樣本熵(記為SEP)。
隨機森林屬于非線性擬合模型,訓練速度快,可以用于大規模數據集,且不易陷入過擬合狀態,具有一定的抗噪聲能力。由于駕駛員與駕駛無關的手部動作(如抓癢等)較多,提取的智能手環數據存在噪聲。并且,疲勞與轉向行為特征之間存在復雜的非線性關系。因此,本文采用隨機森林(random forest,RF)理論對疲勞檢測進行模型建立。
隨機森林算法是Breiman于2001年提出的一種集成學習算法,具有處理高維小樣本數據時不容易過分擬合、分類性能優良等特點。隨機森林以分類回歸樹CART為基本分類器,并且包含多個由Bagging集成學習技術訓練得到的決策樹,當輸入待分類的樣本時,最終的分類結果由單棵決策樹的輸出結果投票決定[13,14]。隨機森林算法的基本步驟如下:
步驟1從原始訓練集S={(xi,yi)}(i=1,2,…,n)中bootstrap抽樣生成k個訓練樣本集,每個樣本集是每棵分類樹的全部訓練數據。
步驟2每個訓練樣本集單獨生長成為一棵不剪枝葉的分類樹hi。在樹的每個節點處從M個特征中隨機挑選m個特征(m≤M),在每個節點上從m個特征中依據Gini指標選取最優特征進行分支生長。這棵分類樹進行充分生長,使每個節點的不純度達到最小,不進行通常的剪枝操作。
根據生成的多個樹分類器對新的測試數據xi進行預測,分類結果按每個樹分類器的投票多少而決定,即分類公式為:
式中:majorityvote表示多數投票;N tree表示隨機森林中樹的個數。在訓練過程中每次抽樣生成自助訓練樣本集,原始訓練數據集中不在自助樣本中的剩余數據被稱為袋外數據(out-of-bag,OOB),OOB數據被用來預測分類的正確率,每次的預測結果進行匯總得到錯誤率的OOB估計。
隨機森林的邊緣函數為:
隨機森林的泛化誤差上界為:
式中:ρ為相關系數的均值;s為分類器的強度,s=Ex,ymr(x,y)。隨機森林通過在每個節點處隨機選擇特征進行分支,最小化各棵分類樹之間的相關性,提高了分類精確度。
本文以10 s為時間窗,從實驗所采集的數據中提取了前面的各個特征,共得到3 200組正常駕駛樣本和2 600組疲勞駕駛樣本。本文從樣本中隨機選擇2 240組正常駕駛樣本和1 820組疲勞駕駛樣本進行訓練。在Matlab平臺上編寫相關程序,設置變量個數m try=2,隨機森林樹的個數N tree=400,利用所選擇訓練樣本數據訓練隨機森林模型,確定2個變量與駕駛員狀態之間的非線性關系。
用剩余的樣本數據對疲勞檢測模型進行測試,結果如表3所示,由表3可知:模型對于駕駛員正常駕駛準確識別812個,錯誤識別148個,疲勞駕駛準確識別634個,錯誤識別146個。本文選取準確率、真陽性率和真陰性率對模型結果進行有效評價,結果表明:模型的準確率為83.10%,真陽性率為81.28%,真陰性率為84.58%。

表3 測試結果
由上述結果可知,在960組正常駕駛數據中,有148組被錯誤識別為疲勞駕駛。通過對駕駛員的面部視頻分析發現,導致錯誤識別的主要原因是駕駛過程中佩戴智能手表的手脫離方向盤。其中,3號和7號駕駛員在駕駛過程中出現將佩戴智能手表的手放在腿上的行為,導致智能手表的傳感器數據幾乎不變而被錯誤識別為疲勞情形下長時間不修正方向盤行為。
而在780組疲勞駕駛樣本中,有146組被錯誤識別為正常駕駛。分析視頻資料發現,錯誤識別的樣本主要來自于4號駕駛員。由于4號駕駛員在疲勞駕駛時不斷使用佩戴智能手表的手撓癢,使得疲勞狀態下所采集的數據特征和正常狀態下的數據特征相似,從而造成模型的誤判。
使用智能手表采集了10名駕駛志愿者在正常和疲勞狀態下駕駛時的手腕運動信息,并從中提取了多個統計特征和樣本熵特征,建立了基于隨機森林的疲勞駕駛監測模型,完成了模型檢驗。結果顯示:通過加速度和角速度數據的統計特征和樣本熵特征等能夠有效地實現疲勞駕駛檢測。960組正常駕駛和780組疲勞駕駛樣本的測試結果表明:模型的準確率為83.10%,真陽性率為81.28%,真陰性率為84.58%。
使用智能手表作為駕駛員轉向行為的數據采集裝置,能夠準確感知轉向差異,但由于駕駛志愿者在駕駛過程中將佩戴智能手表的手脫離方向盤以及撓癢等而導致了一些誤判。因此,在后續的研究中還可以考慮對這些行為進行識別或者與其他方式結合,以便進一步提高模型的檢測準確率,使得該方式更具有實用性。