?

基于深度學習的危險駕駛行為檢測模型研究

2021-12-29 01:10岳宸宇周沛松李明亮
新一代信息技術 2021年22期
關鍵詞:駕駛員卷積危險

岳宸宇,周沛松,2,李明亮,2

(1. 河北地質大學信息工程學院,河北 石家莊 050031;2. 智能傳感物聯網技術河北省工程研究中心,河北 石家莊 050031)

0 引言

長期以來,網絡及交通等基礎設施逐漸完善,我國運輸能力也有了飛躍的成長。然而高效便捷的交通在給人們帶來生活上便利的同時,也帶來了由于各種原因引起的交通事故頻發的嚴重安全問題。據統計,全球每年因交通事故死亡的人數達到130萬人,約2 000萬至5 000萬人受到非致命性傷害[1]。利用計算機視覺來檢測駕駛員分心狀態可以減少人工檢查費時費力廢財的弊端。通過這種方式,能夠作為一種智能化的安全輔助駕駛功能,能夠及時提醒駕駛員注意開車安全,讓視頻監控變得不再依賴人工干預,而更加智能化,有著重要的實際意義。

1 基于PaddleX的危險駕駛行為檢測方法

基于 PaddleX的危險駕駛行為檢測方法總體設計即為該模型訓練及測試總流程,總體設計流程圖如圖 1所示。主要針對 Kaggle 駕駛員狀態檢測數據集進行下載解壓,讀取數據,并安裝相關配置環境,模型訓練及導出、評估模型性能,為方便部署將PaddleX模型轉換為PaddleHub模型,最后對模型進行測試。

圖1 總體設計流程圖Fig.1 Overall design flow chart

其中訓練模型所采用的主要是 MobileNet輕量型網絡,本章主要介紹 MobileNet的提出及迭代變化,包括最新提出的MobileNetV3模型及本設計所涉及到的原理。數據中提到相對重量級網絡而言,輕量級網絡因其有參數少、計算量小、推理時間短的特點,從而更適用于存儲空間和功耗受限的場景。

基于 PaddleX的危險駕駛行為檢測模型主要采用的是谷歌于 2019年在 arxiv公開的論文“Searching for MobileNetV3”中提出的第三代MobileNet,百度在其全流程開發工具包PaddleX中嵌入MobileNetV3網絡,將其應用于目標檢測等領域。MobileNetV3的網絡結構如圖 2所示,文中提到的 Large模型和 Small模型的整體結構一致,區別即是基本單元bneck的個數以及內部參數上,主要是通道數目不同。

圖2 通道分離卷積Fig.2 channel separation convolution

MobileNet是基于 TensorFlow框架下開發的一系列基于移動設備優化的計算機視覺模型,其設計目的是在考慮移動設備或嵌入式應用程序的受限資源的情況下有效地最大化精度。它們是小型、低功耗、參數化的模型,以滿足設備的資源負擔??梢詾榉诸?、檢測和分割任務創建模型。寬度倍增和分辨率倍增是MobileNetV1的參數,可以調整以權衡資源精度的權衡。寬度倍增可以使網絡變薄,而分辨率倍增可以改變輸入圖像的尺寸。這些變化可以減少每一層的內部結構參數。MobileNetV1引入了深度可分離卷積,有效替代了傳統卷積層。標準卷積的特點是卷積核的通道數等于輸入特征圖的通道數。MobileNetV1通過從特征生成機制中分離空間濾波,可分離卷積有效地分解了傳統卷積,從而減少模型所需要的參數和計算量。深度可分離卷積定義了兩個獨立的層:其一是用于空間濾波的輕量級depthwise(深度卷積)以及用于生成特征的 Point W ise Convolution(逐點卷積)。本質上深度卷積即是卷積核的通道數為 1;逐點卷積即是 1×1的卷積核,通道數等于輸入特征圖的通道數。

相比于 MobileNetV2網絡,MobileNetV3網絡優化了網絡輸出部分。移除之前的瓶頸層連接,進一步降低網絡參數??梢杂行Ы档?1%的推理耗時,而性能幾乎沒有損失。

SE通道注意力機制,這里利用1×1卷積實現的 FC操作,本質上和 FC是一樣的。這里利用hsigmoid模擬 sigmoid操作。利用 h-swish和 hsigmoid近似操作模擬swish和ReLU,公式為:

bneck模塊是該網絡核心模塊,也是網絡的基本模塊。主要實現了“通道可分離卷積+SE通道注意力機制+殘差連接”。

2 實驗結果分析

(1)實驗環境

硬件環境:CPU:4 Cores;RAM:32GB;GPU:Tesla V100;顯存:32GB;磁盤:100GB;

編譯環境:Jupyter Notebook;

環境配置:Python版本:python 3.7;pip版本:21.1;OpenCV2;

框架版本:PaddlePaddle 2.0.2。

(2)解壓數據集

數據集解壓根據環境需要修改路徑,在之后的訓練過程中路徑必須統一,否則執行程序將會報錯。

!unzip/home/aistudio/data/data35503//imgs.zip-d /home/aistudio/work/imgs

!cp/home/aistudio/data/data35503/lbls.csv/home/aistudio/work/

(3)安裝PaddleX

import os

# 設置使用0號GPU卡(如無GPU,執行此代碼后仍然會使用CPU訓練模型)

os.environ['CUDA_VISIBLE_DEVICES'] = '0'

(4)定義數據加載器

由于分類使用ImageNet格式的數據集,用于識別任務的數據加載器的類定義使用pdx.datasets.ImageNet,其主要目的在于讀取數據。

model = pdx.cls.MobileNetV3_small_ssld(num_classes=num_classes)

model.train(num_epochs=20,train_dataset=trai n_dataset,train_batch_size=32,log_interval_steps=2 0,eval_dataset=eval_dataset,lr_decay_epochs=[1],sa ve_interval_epochs=1,learning_rate=0.01,save_dir='output/mobilenetv3')

(5)實驗結果

模型在Jupyter Notebook運行結果如圖3所示,測試程序中分別讀取十張圖片對應各個標簽的圖片。模型測試結果在最下方分別輸出,格式為:(類別ID,類別,識別成績/準確度),測試結果顯示:10張不同狀態圖像測試運行時間為:492 ms。

圖3 激活函數損失對比Fig.3 activation function loss comparison

圖4 實驗運行結果Fig.4 experimental results

3 結論

本設計針對駕駛員常見危險駕駛習慣如駕駛汽車過程中看手機、打電話、進食以及同車內乘客聊天等現象,設計基于深度學習技術的危險駕駛行為檢測模型。采用PaddlePaddle框架,利用Kaggle駕駛員狀態檢測數據集訓練并測試基于PaddleX+OpenCV的深度學習網絡模型;將PaddleX深度學習網絡模型轉化為 PaddleHub輕量型深度學習網絡模型便于部署和應用;能夠實現對駕駛員normal driving(正常駕駛);texting -right(右手發短信/玩手機);talking on the phone -right(右手打電話);texting - left(左手發短信/玩手機);talking on the phone - left(左手打電話);operating the radio(調試車載多媒體);drinking(進食);reaching behind(向后排拿東西);hair and makeup(整理妝容);talking to passenger(同乘客談話)等10種駕駛行為的檢測,其中有9種危險駕駛行為,并且識別準確率可達到98%以上。經測試,模型可同時進行10種狀態檢測,檢測運行時間為492 ms,由此可推斷,該模型可進行實時檢測駕駛員危險駕駛狀態。

根據模型表現,下一步可以將模型部署到手機端或類似于樹莓派等嵌入式終端進行本地檢測,同時還可以將模型進行“邊緣端+云端”部署,這樣可以實現更加穩定的實時檢測,并且可以根據模型不斷迭代實現模型檢測的高效性和高魯棒性。

猜你喜歡
駕駛員卷積危險
基于高速公路的駕駛員換道意圖識別
駕駛員安全帶識別方法綜述
基于3D-Winograd的快速卷積算法設計及FPGA實現
從濾波器理解卷積
喝水也會有危險
基于傅里葉域卷積表示的目標跟蹤算法
起步前環顧四周是車輛駕駛員的義務
擁擠的危險(三)
一種基于卷積神經網絡的性別識別方法
話“危險”
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合