任 琳,岳 光,郭保全
(1.太原工業學院 電子工程系,山西 太原 030008;2.中北大學 軍民融合協同創新研究院,山西 太原 030051)
隨著我軍武器裝備的機械化、數字化程度的提高,其自行武器底盤車輛的駕駛訓練強度逐漸增大,伴隨而來的是士兵駕駛員的疲勞問題逐漸增多,極大地影響著士兵的安全和自行武器的使用效能。數據表明:20%~30%的士兵駕駛問題是由于疲勞駕駛引起的注意力不集中、反應遲鈍、操作失誤等,這就導致駕駛過程中存在著極大的士兵本身和武器裝備的安全隱患[1,2]。因此,開展自行武器士兵駕駛員疲勞檢測與預警的研究工作有著十分重要的意義。
針對士兵疲勞駕駛緊急預警工作,國外的軍事強國有各類解決方案。德軍通過采集士兵駕駛員握方向盤的力度來檢測疲勞度,美軍的疲勞檢測系統是基于機器視覺的預警系統,利用駕駛員的面部、眼部等特征判斷駕駛員的疲勞狀態[3],從而降低駕駛員的事故發生率。本文提出一種基于AdaBoost視覺算法的士兵面部疲勞檢測系統,采用低成本、高性能的嵌入式Linux平臺對駕駛員的疲勞狀態做實時監測,并提出預警信息。
疲勞檢測預警系統是指駕駛員在疲勞狀態進行機動車輛駕駛情況下,對駕駛員進行疲勞檢測并預警。駕駛員疲勞的產生可能來源于駕駛員長時間駕駛、休息不充分等因素。人在疲勞狀態時會產生打哈欠、眨眼頻率降低、語調、頭部位移等明顯外在行為特征,主要表現在生理特征與生化特征兩方面[4]。通過外在行為特征或者生化指標可以判斷人是否處于疲勞駕駛狀態[5]。本文提出一種非接觸式、高實時性機器視覺AdaBoost算法對人眼狀態進行疲勞度檢測并及時給出預警。
本文設計的基于AdaBoost視覺算法的士兵面部疲勞檢測系統以ARM-A7為核心控制器,以嵌入式ARM系統對駕駛員的面部進行機器視覺的視頻圖像采集、數據分析和預警。
基于AdaBoost視覺算法的士兵面部疲勞檢測系統的硬件平臺為開源嵌入式ARM平臺——樹莓派2 Module B,并進行了外圍電路設計,其系統構架如圖1所示。外圍電路的輸入接口設計為帶有機器視覺圖像的采集調理電路,其接口為USB模式,方便了數據通用性傳輸,其輸出格式為UVC,以便系統軟件Linux內核進行數據處理,同時利用OpenCV采集函數來調用調理電路中的V4L2驅動和API函數,以實現對駕駛員面部機器視覺圖像傳感器信息的獲取;外圍電路的輸出接口采用D/A視頻輸出調理電路設計,并將疲勞結果實時顯示在OLCD上,同時及時輸出預警報警。

圖1 基于AdaBoost視覺算法的士兵面部疲勞檢測系統構架
Haar-like特征是Lienhart等人提出的一種表述[6]機器視覺的圖像局部或全部區域內像素值屬性的方法,Haar-like特征為邊緣特征、線特征和中心環繞特征。
求取Haar-like特征值需要很大的計算量,對于低性能的嵌入式平臺很難達到實時性指標。本文提出優化Haar-like特征的同時,也提出了對求取特征值加速的算法積分圖,這種算法只需要經歷一遍就可以求出圖像中任意一個區域的像素和,大大提高了求取Haar-like特征的效率。積分圖法使得求取特征值的時間復雜度為0(n),表述方式為待取值參考點位置左上角方向的所有像素的和。定義s(x,y)為從圖像左上角(0,0)點開始到當前點位置(x,y)此區域內的所有像素點的像素和,即:

(1)
其中:(x',y')為圖片像素中第(x',y')個元素。
假設圖像任意點像素集合用(i,j)表示,則由式(1)可推導積分圖構建算法如下:
(1) 設定s(i,j)表示行方向的像素和,則該積分圖像為ii(i,j)。
(2) 當機器視覺掃描整幅圖像時,設定每個像素為I(i,j),則行方向的像素值之和為:
s(i,j)=s(i,j-1)+I(i,j).
(2)
(3) 當掃描完至圖像右下角部分后,積分圖ii則構建完成。
(4) 由上面3個步驟可得積分圖像ii(i,j)的值:
ii(i,j)=ii(i-1,j)+s(i,j).
(3)
由以上可知,若計算圖像某一個區域圖像矩陣的像素值累加和可以使用積分圖獲取,會在很大程度上提高計算速度。若想獲取區域a、b、c、d的機器視覺圖像(如圖2所示)的像素值累加和,先將該區域分成四個定點,分別為d1,d2,d3,d4,由式(3)可知該區域的像素和為:

圖2 積分獲取區域的像素和示意圖
dsum=ii(d3)+ii(d1)-[(ii(d4)+ii(d2)].
(4)
對于士兵駕駛員視覺環境的感知,通常由眼睛感知做出判定。本文提出機器視覺識別,即根據待識別物體的數據集合特點構造出數據集合,查找出分類器的數學模型[7,8],并分別篩選出目標數據集與非目標數據集。因此,人眼識別對采集的數字圖像數據進行分類前,需構建對人眼進行分類的分類器[9]。
本文的識別人眼分類器主要采用基于Haar-like特征的分類器。然而在構造人眼分類器的過程中,會產生大量的弱分類器,需要通過計算輸入圖像的Haar-like特征值,然后與弱分類器的特征值作比較,以此來判斷采集的圖像是否屬于人眼。本文通過建立Haar-like決策樹(如圖3所示)的4個特征值來篩選并比較判斷是否屬于人眼。

圖3 Haar-like分類決策樹圖
從圖3分類決策樹圖的結構可知,在進行分類的過程中,非葉子節點代表的是一種對特征進行分析判斷的過程,所有的葉子節點表示判斷出的類別,最后得出分類的結果。分類器的訓練過程如下:
(1) 對所有樣本進行Haar-like特征值計算,并排序。接著對排序結果進行分析,計算以下幾個參數:①全部人眼樣本的權重和t1;②全部非人眼樣本的權重和t0;③計算所有元素之前的人眼樣本權重的和s1;④計算所有元素之前的非人眼樣本權重的和s0。
(2) 求每個元素的誤差。
AdaBoost是一種數據分類算法,該算法的核心思想是對所有的弱分類器進行調整訓練,最后使識別率高的弱分類器占高權重,反之占低權重,繼而得出強分類器[10]。
假設圖像中的數據集合為D1,“+”和“-”分別表示兩種不同種類的數據,進行第一次迭代分類,如圖4所示。
分類前初始化每個樣本的概率為一個均勻分布的概率。由圖4豎直的直線分類器將10個數據分為兩部分,對于分類后的數據,錯誤的數據有4個,即誤點概率為0.4,AdaBoost算法在下一次分類時對分類錯誤的數據權重進行調整,設定新形式的子分類器用h1來表示,同時得到更新權值后的新數據分布圖,如圖5所示。
通過AdaBoost算法的Haar-like決策樹的新一輪訓練,分類器會將權值重新分類,得到新分類結果圖,如圖6所示。
AdaBoost算法得出有限個子分類器,對這些子分類器進行整合如下所示:
(5)
其中:T為分類次數;αt為與分類誤差數據有關的一個值;ht(x)為子分類器。
H(x)的結果是得到強的分類器,其作用使優秀的分類器分配的權重提高,使質量低劣分類器權重降低。在進行分類器權值選優后,即可進行AdaBoost視覺算法的疲勞預警檢測,其流程如圖7所示。

圖4 第一次迭代分類 圖5 更新權值數據圖 圖6 新分類結果圖

圖7 AdaBoost視覺算法檢測預警流程
在進行人眼檢測后,本文采取模式分類的方法對Haar-like人眼級聯分類器經過訓練統計而得出的眼特征屬性的數據集進行采集,然后進行噪聲抑制、邊緣提取、二值化等操作,接著對上述操作后的輸出值進一步進行分析比較篩選。
在人眼模式分類中,分類器的輸入是遍歷圖像某區域的多個Haar-like特征值,Haar-like級聯分類器對該區域的特征值進行比較篩選,通過篩選的則認為是人眼區域,如圖8所示。

圖8 人眼識別與標注
通過AdaBoost視覺算法測試自行武器士兵駕駛人員的疲勞檢測系統在嵌入式Linux平臺實現,在AMR-A7正常運行的情況下,主頻頻率為1 GHz,如果處理分辨率為640×480(像素)大小的圖像,算法實時性會較差。經過多次反復測試,將圖像分辨率縮小至320×240(像素)大小時,可以滿足識別要求。
系統測試設定的環境條件為不同光照條件、不同的檢測人員、不同角度。
當光線較強和特別暗時對人眼的識別率會大大降低,在被測試人員戴眼鏡情況下也能正常識別標注,識別標注效果分別如圖9和圖10所示。
對于人眼處于機器視覺視野的不同角度可識別判斷,左右扭頭90°范圍可以識別單眼,上下點頭超過一定角度會識別錯誤,如圖11所示。

圖9 不戴眼鏡人眼識別與標注 圖10 戴眼鏡人眼識別與標注圖11 抬頭一定高度識別與標注
判斷人是否疲勞需要一個評定眨眼頻率的標準值,選取5名參與人員進行測試,測量每個人在疲勞時1 min的眨眼次數并求取平均眨眼率作為判斷標準,如表1所示。

表1 人疲勞時的平均眨眼率統計
通過AdaBoost視覺算法對士兵駕駛人員面部疲勞檢測預警系統的測試分析可知,該算法對于快速檢測和定位人眼,對駕駛人員疲勞具有很好預警效果。本文提出的這種新型士兵駕駛人員面部疲勞檢測預警分析在我軍自行武器駕駛員人員安全預警系統中還未曾出現過,這對于將來民用技術在我軍武器裝備的工程應用提供了理論借鑒和方法指導。
本文提出用AdaBoost視覺算法訓練Haar-like,以高準確率、較快的速度完成人眼識別,得到相應的疲勞度參數,對人眼進行位置預測跟蹤,提高了軟件運行的實時性,突出了這種新型應用的優越性,為軍民融合協同創新的探索研究打下基礎,同時也驗證了該方法研究設計的可行性和實用性。