?

基于神經網絡深度學習算法的駕駛員疲勞駕駛檢測研究*

2024-01-09 05:09肖心遠孫瀟鵬吳朝榮
機電工程技術 2023年12期
關鍵詞:人臉駕駛員卷積

肖心遠,黃 劍,孫瀟鵬,吳朝榮

(廣東交通職業技術學院,廣州 510650)

0 引言

道路運輸中,人、車、路、環境是影響駕駛安全的最主要因素,而人的因素又是影響駕駛安全的最重要因素。據統計,在各類道路運輸安全事故中,80%~90%的安全事故是由人為因素造成[1],疲勞駕駛又是造成安全事故的最主要原因。據統計,在交通事故中,有30%左右是因疲勞駕駛造成,每年大約有1 500 人死于疲勞駕駛引起的事故[2],因此對駕駛員的疲勞狀態進行監測非常重要。本文主要是采用視覺圖像處理技術對駕駛員的疲勞度進行監測,預防駕駛員疲勞駕駛。當前在圖像模式識別中,由于CNN神經網絡避免了對圖像復雜的前期預處理,節省了很多工作,CNN成為了眾多科學領域的熱點研究領域,應用也越來越廣泛[3]。傳統的駕駛員駕駛行為檢測方法是使用SIFT、HOG 或者Haar 等特征描述算子[4],并且使用人工提取特征方式進行模式識別,在現實復雜的駕駛環境下往往精度不能滿足要求,其魯棒性也有待提高。深度學習技術是一類能從大量數據中自動學習出特征進行表示的方法[5],這些年在目標檢測、目標識別、目標跟蹤,人臉識別、場景語義理解等領域有了快速的發展,其強大的學習能力和特征表達能力,對大部分有遮擋、光照明暗變化等外界干擾條件的場合也表現出了較強的魯棒性[6]。因此,本文選取駕駛員身體特征,比如眼睛閉合、嘴巴張開程度等,設計使用基于深度學習算法的疲勞駕駛檢測算法,來表示疲勞駕駛的特征,設計神經網絡模型,檢測車輛駕駛員是否疲勞并判斷其疲勞程度。

1 駕駛員疲勞檢測系統搭建

本系統采用前期研發的道路車輛駕駛員監測信息的采集及處理系統[7],監測終端利用當今最流行的Android嵌入式開發系統,并在該系統的基礎上,升級了系統的軟硬件,之前利用ARM Cortex-A8 內核的REAL210 核心開發板[8],但速度明顯慢,沒有達到理想的效果,最后使用了樹莓派3 作為主控板,達到了要求。目前主控處理器更新為樹莓派4B,在該開發板中進行有效開發,通過對監測終端的開發,系統的外圍接口模塊有電源模塊、5G無線模塊、GPS定位模塊、視頻圖像采集模塊、溫度信號采集模塊、心率信號采集模塊、存儲器模塊、LCD顯示模塊、ZigBee 通信模塊[8]??蓪崿F人臉識別、疲勞度監測、酒精度監測、GPS 定位監測、心率體溫監測、顯示和Web數據上傳功能。各個模塊分別作為一個線程同時執行,監測模塊將采集的數據生成臨時文件進行保存,顯示屏模塊通過對數據文件進行讀取將數據進行顯示,Web 數據上傳模塊通過對數據文件進行讀取定時將數據進行上傳,實現對駕駛員的實時監控。駕駛員信息采集系統原如圖1 所示。

圖1 駕駛員疲勞檢測系統原理

2 駕駛員疲勞度監測流程

本文使用基于深度學習的疲勞駕駛檢測算法。首先利用深度學習CNN模型YOLOv3 算法[9]檢測出常規攝像頭實時采集的駕駛員人臉圖像,其次,利用特征點模型實現眼睛和嘴巴區域的分割,然后通過循環神經網絡(RNN)中的長短記憶網絡算法訓練模型,進行駕駛員疲勞度預警,疲勞度監測流程如圖2 所示。

圖2 疲勞度監測流程

3 駕駛員人臉采集及識別

人臉識別模塊主要通過調用百度人臉識別接口實現人臉識別功能。首先在樹莓派中安裝百度人臉識別接口的SDK,并在百度云平臺申請并生成接口的密鑰,在云平臺中創建人臉庫,將人臉圖像信息以及個人信息上傳到人臉庫中將會自動生成一個唯一的用戶ID賬號,在系統開發板中,通過已經注冊的接口密鑰調用SDK 的AipFace()方法創建一個客戶端,再通過樹莓派的USB 攝像頭獲得當前鏡頭前的圖像信息,獲取的人臉圖像如圖3 所示。

圖3 人臉原始圖像

將圖像信息臨時生成一張圖片進行保存,再通過已經創建好的客戶端將采集到的人臉照片以及對應的人臉庫用戶組名,通過網絡的方式發送請求到百度云人臉識別平臺進行人臉識別操作,百度人臉識別平臺將會根據上傳的人臉圖像已經對應的人臉倉庫進行比較,并將結果返回。

4 卷積神經網絡YOLOv3 算法模型

在使用卷積神經網絡YOLOv3 算法檢測出視頻中的人臉后,本項目引入長短時記憶網絡(LSTM)[10]獲取各個時刻的圖像特征之間的相互關聯信息。LSTM 是循環神經網絡(RNN)的一種,可以對時間進行顯式建模,并且引入時間序列維度來解決幀數據間的聯系。

卷積神經網絡是前饋神經網絡的一種,它具有豐富的人工神經元,對圖像處理、圖像識別、圖像特征提取有非常出色的表現,它主要包括卷積層、池化層和全連接層3 層[11]。

利用深度卷積神經網絡對人臉圖像進行捕捉,深度學習模型如圖4 所示。

圖4 深度卷積神經網絡模型

本文的CNN 人臉檢測采用基準人臉數據集Wider Face進行訓練,數據集共包含了32 203 張圖像和393 703個人臉標注,自帶標注好的人臉框,在下載的數據集中,每個集合中的圖像數據,根據人臉檢測的難易程度分為“Easy”“Medium”“Hard”3 種,其中人工標注邊界框為綠色的矩形框,在尺度、遮擋、姿態、裝扮、表情、光照等方面的人臉差異較大,人臉特征具有多樣性[12]。針對模型訓練,本文按照圖像的識別難度把數據集分成為3 個子集,并把數據集中60%用作訓練集,30%用作測試集,10%為驗證集用于模型訓練。

算法實現步驟如下。

(1)算法選擇。人臉檢測算法為YOLOv3。

(2)部署應用環境搭建。試驗采用Tensorflow 深度學習框架[13];環境為tensorflow-gpu1.14,keras 2.1.5;Ubuntu,NVIDIA Tesla驅動程序,CUDA10 版本,cuDNN神經網絡加速庫7.4.2 版本。

(3)訓練設置。超參數動量因子設置為0.944,權重衰減正則系數設置為0.000 6,最大迭代次數epoch 設置為100,alpha學習率為0.001 5 次迭代時,batch_size為8;每訓練50 次時疊加學習率0.000 1,batch_siz為1;網絡結構為CSPDarknet53 +PAnet-SPP +Yolov3 head 結構(圖5)。

圖5 YOLOv3 網絡結構

4.1 主干特征提取

YOLOv3 算法采用的主干網絡為Darknet-53[14],其主要特征是使用了殘差網絡Residual,對殘差卷積進行一次3*3、2 步長的卷積,再保存該卷積layer,進行一次1*1 的卷積和一次3*3 的卷積,把這個結果加上layer作為最后的結果。殘差網絡的優點是容易優化,它能夠使用增加深度的方法來提高識別準確率。本文在YOLOv3 的基礎上借鑒了CSPNet,對Darknet-53 做了網絡機構的局部改進[15]。

4.2 金字塔分離特征

在特征金字塔部分設計中,YOLOv3 主要使用SPPNet和PANet兩種結構。模型中不同尺寸特征圖進入全連接層時引發的問題主要由SPP- Net 模塊解決。對CSPdarknet53 最后一個特征圖進行3 次卷積,然后用4個不同尺度的池化核(13*13、9*9、5*5、1*1)進行最大值池化,最后分離出最顯著的特征,PANet 是一種特征圖融合方式[16],特點是對提取的特征進行多次重復利用。

4.3 圖像數據增強

YOLOv3 采用了Mosaic 數據增強方式,其原理類似CutMix,隨機裁剪4 張圖片,然后拼接成一張圖片作為圖片訓練數據。這樣做豐富了圖片背景,增強了對常見背景之外的目標的檢測精度。減少了估計均值和方差時對batch-size的要求,降低了訓練成本,單GPU 也可以進行訓練[17]。

5 疲勞駕駛檢測及訓練

5.1 疲勞駕駛檢測數據集

本文使用YawDD數據集作為疲勞駕駛檢測模型的數據集,該數據集里面包含各類駕駛車輛人員在不同條件,不同光照環境下拍攝的模擬駕駛視頻,可用于駕駛員疲勞檢測等算法的驗證試驗。YawDD 數據集有2 個視頻集,包含了多個具有不同面部特征的駕駛車輛人員行為[18]。錄制視頻分辨率為640×480,以30 幀/s 的速率錄制,采用24bit真彩色進行顯式。第1 個視頻集安裝的攝像頭在駕駛室后視鏡的下方,共有322 段視頻,每個駕駛員錄制3~4 段視頻,第2 個視頻集是把攝像頭安裝在駕駛室儀表盤上方,每個駕駛員錄制一段視頻。

駕駛人員的面部特征包括:(1)駕駛員正常駕駛(不說話,設置標簽為Normal);(2)駕駛員駕駛時說話或唱歌(設置標簽為Talking);(3)駕駛員開車打哈欠(設置標簽為Yawning);(4)駕駛員開車閉眼晴(設置標簽為Sleeping)。數據樣本如圖6 所示。

圖6 YawDD數據集示例

5.2 長短時記憶網絡模型數據集及訓練

項目設計使用循環神經網絡中的長短時記憶網絡模型對數據集進行訓練,選取數據集中30 s以上的視頻作為測試樣本,選取視頻數據集中的60%作為模型的訓練集,30%作為測試集,10%作為驗證集進行模型訓練。LSTM網絡模型是一種時間遞歸神經網絡,它解決了RNN的長期依賴與梯度消失問題[19],這種網絡能夠記住數據的長期依賴關系,前一時刻的網絡輸出被它選擇性地記憶下來,給后面的網絡學習提供了豐富的事件關聯性[20-21]。

本文中,駕駛員監控視頻被按幀按時間順序分解成圖片序列,將一幀幀圖片的臉部疲勞狀態參數矩陣Xt輸入LSTM,LSTM模型會判斷出來運動狀態下的駕駛員疲勞狀態。

訓練部署應用如下:(1)實驗平臺主機電腦采用Intel(R)Core(TM)i7-1165,@2.80 GHz,內存16 GB;(2)在Windows10 操作系統下采用Tensorflow 深度學習模塊;(3)優化器采用ADAM,不需GPU加速;(4)實驗的數據集為YawDD 視頻數據,將正常駕駛、說話狀態、唱歌狀態標注為非疲勞狀態,將打哈欠、閉眼睛標注為疲勞狀態;(5)使用上述長短記憶網絡(LSTM)進行訓練。

若由于攝像頭沒有獲取到人臉的監測數據,系統則會將疲勞度文件的疲勞數據修改為-1,表示數據異常,并且將錯誤信息保存在錯誤信息文件中,顯示屏將會讀取錯誤信息并顯示。

6 結束語

本文針對傳統的特征算子檢測精度較低,搭建了駕駛員疲勞檢測的信息采集系統,系統采集駕駛員的人臉圖像、溫度、心率、GPS 定位等多種信息,并通過后臺處理駕駛員疲勞狀態圖像。系統選取駕駛員身體特征,比如眼睛閉合、嘴巴張開程度等,設計使用基于神經網絡深度學習算法的疲勞駕駛檢測算法,來表示疲勞駕駛的特征,使用YawDD數據集作為疲勞駕駛檢測模型的數據集,數據集中60%用作訓練集,30%用作測試集,10%為驗證集用于模型訓練,使用循環神經網絡中的長短時記憶網絡模型對數據集進行訓練結果表時,實驗結果能滿足駕駛員疲勞檢測的要求。

猜你喜歡
人臉駕駛員卷積
基于高速公路的駕駛員換道意圖識別
駕駛員安全帶識別方法綜述
基于3D-Winograd的快速卷積算法設計及FPGA實現
有特點的人臉
從濾波器理解卷積
三國漫——人臉解鎖
基于傅里葉域卷積表示的目標跟蹤算法
起步前環顧四周是車輛駕駛員的義務
馬面部與人臉相似度驚人
長得象人臉的十種動物
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合