岳宸宇,周沛松,2,李明亮,2
(1. 河北地質(zhì)大學(xué)信息工程學(xué)院,河北 石家莊 050031;2. 智能傳感物聯(lián)網(wǎng)技術(shù)河北省工程研究中心,河北 石家莊 050031)
長期以來,網(wǎng)絡(luò)及交通等基礎(chǔ)設(shè)施逐漸完善,我國運(yùn)輸能力也有了飛躍的成長。然而高效便捷的交通在給人們帶來生活上便利的同時(shí),也帶來了由于各種原因引起的交通事故頻發(fā)的嚴(yán)重安全問題。據(jù)統(tǒng)計(jì),全球每年因交通事故死亡的人數(shù)達(dá)到130萬人,約2 000萬至5 000萬人受到非致命性傷害[1]。利用計(jì)算機(jī)視覺來檢測駕駛員分心狀態(tài)可以減少人工檢查費(fèi)時(shí)費(fèi)力廢財(cái)?shù)谋锥?。通過這種方式,能夠作為一種智能化的安全輔助駕駛功能,能夠及時(shí)提醒駕駛員注意開車安全,讓視頻監(jiān)控變得不再依賴人工干預(yù),而更加智能化,有著重要的實(shí)際意義。
基于 PaddleX的危險(xiǎn)駕駛行為檢測方法總體設(shè)計(jì)即為該模型訓(xùn)練及測試總流程,總體設(shè)計(jì)流程圖如圖 1所示。主要針對 Kaggle 駕駛員狀態(tài)檢測數(shù)據(jù)集進(jìn)行下載解壓,讀取數(shù)據(jù),并安裝相關(guān)配置環(huán)境,模型訓(xùn)練及導(dǎo)出、評估模型性能,為方便部署將PaddleX模型轉(zhuǎn)換為PaddleHub模型,最后對模型進(jìn)行測試。
圖1 總體設(shè)計(jì)流程圖Fig.1 Overall design flow chart
其中訓(xùn)練模型所采用的主要是 MobileNet輕量型網(wǎng)絡(luò),本章主要介紹 MobileNet的提出及迭代變化,包括最新提出的MobileNetV3模型及本設(shè)計(jì)所涉及到的原理。數(shù)據(jù)中提到相對重量級(jí)網(wǎng)絡(luò)而言,輕量級(jí)網(wǎng)絡(luò)因其有參數(shù)少、計(jì)算量小、推理時(shí)間短的特點(diǎn),從而更適用于存儲(chǔ)空間和功耗受限的場景。
基于 PaddleX的危險(xiǎn)駕駛行為檢測模型主要采用的是谷歌于 2019年在 arxiv公開的論文“Searching for MobileNetV3”中提出的第三代MobileNet,百度在其全流程開發(fā)工具包PaddleX中嵌入MobileNetV3網(wǎng)絡(luò),將其應(yīng)用于目標(biāo)檢測等領(lǐng)域。MobileNetV3的網(wǎng)絡(luò)結(jié)構(gòu)如圖 2所示,文中提到的 Large模型和 Small模型的整體結(jié)構(gòu)一致,區(qū)別即是基本單元bneck的個(gè)數(shù)以及內(nèi)部參數(shù)上,主要是通道數(shù)目不同。
圖2 通道分離卷積Fig.2 channel separation convolution
MobileNet是基于 TensorFlow框架下開發(fā)的一系列基于移動(dòng)設(shè)備優(yōu)化的計(jì)算機(jī)視覺模型,其設(shè)計(jì)目的是在考慮移動(dòng)設(shè)備或嵌入式應(yīng)用程序的受限資源的情況下有效地最大化精度。它們是小型、低功耗、參數(shù)化的模型,以滿足設(shè)備的資源負(fù)擔(dān)??梢詾榉诸?、檢測和分割任務(wù)創(chuàng)建模型。寬度倍增和分辨率倍增是MobileNetV1的參數(shù),可以調(diào)整以權(quán)衡資源精度的權(quán)衡。寬度倍增可以使網(wǎng)絡(luò)變薄,而分辨率倍增可以改變輸入圖像的尺寸。這些變化可以減少每一層的內(nèi)部結(jié)構(gòu)參數(shù)。MobileNetV1引入了深度可分離卷積,有效替代了傳統(tǒng)卷積層。標(biāo)準(zhǔn)卷積的特點(diǎn)是卷積核的通道數(shù)等于輸入特征圖的通道數(shù)。MobileNetV1通過從特征生成機(jī)制中分離空間濾波,可分離卷積有效地分解了傳統(tǒng)卷積,從而減少模型所需要的參數(shù)和計(jì)算量。深度可分離卷積定義了兩個(gè)獨(dú)立的層:其一是用于空間濾波的輕量級(jí)depthwise(深度卷積)以及用于生成特征的 Point W ise Convolution(逐點(diǎn)卷積)。本質(zhì)上深度卷積即是卷積核的通道數(shù)為 1;逐點(diǎn)卷積即是 1×1的卷積核,通道數(shù)等于輸入特征圖的通道數(shù)。
相比于 MobileNetV2網(wǎng)絡(luò),MobileNetV3網(wǎng)絡(luò)優(yōu)化了網(wǎng)絡(luò)輸出部分。移除之前的瓶頸層連接,進(jìn)一步降低網(wǎng)絡(luò)參數(shù)??梢杂行Ы档?1%的推理耗時(shí),而性能幾乎沒有損失。
SE通道注意力機(jī)制,這里利用1×1卷積實(shí)現(xiàn)的 FC操作,本質(zhì)上和 FC是一樣的。這里利用hsigmoid模擬 sigmoid操作。利用 h-swish和 hsigmoid近似操作模擬swish和ReLU,公式為:
bneck模塊是該網(wǎng)絡(luò)核心模塊,也是網(wǎng)絡(luò)的基本模塊。主要實(shí)現(xiàn)了“通道可分離卷積+SE通道注意力機(jī)制+殘差連接”。
(1)實(shí)驗(yàn)環(huán)境
硬件環(huán)境:CPU:4 Cores;RAM:32GB;GPU:Tesla V100;顯存:32GB;磁盤:100GB;
編譯環(huán)境:Jupyter Notebook;
環(huán)境配置:Python版本:python 3.7;pip版本:21.1;OpenCV2;
框架版本:PaddlePaddle 2.0.2。
(2)解壓數(shù)據(jù)集
數(shù)據(jù)集解壓根據(jù)環(huán)境需要修改路徑,在之后的訓(xùn)練過程中路徑必須統(tǒng)一,否則執(zhí)行程序?qū)?huì)報(bào)錯(cuò)。
!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
# 設(shè)置使用0號(hào)GPU卡(如無GPU,執(zhí)行此代碼后仍然會(huì)使用CPU訓(xùn)練模型)
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
(4)定義數(shù)據(jù)加載器
由于分類使用ImageNet格式的數(shù)據(jù)集,用于識(shí)別任務(wù)的數(shù)據(jù)加載器的類定義使用pdx.datasets.ImageNet,其主要目的在于讀取數(shù)據(jù)。
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)實(shí)驗(yàn)結(jié)果
模型在Jupyter Notebook運(yùn)行結(jié)果如圖3所示,測試程序中分別讀取十張圖片對應(yīng)各個(gè)標(biāo)簽的圖片。模型測試結(jié)果在最下方分別輸出,格式為:(類別ID,類別,識(shí)別成績/準(zhǔn)確度),測試結(jié)果顯示:10張不同狀態(tài)圖像測試運(yùn)行時(shí)間為:492 ms。
圖3 激活函數(shù)損失對比Fig.3 activation function loss comparison
圖4 實(shí)驗(yàn)運(yùn)行結(jié)果Fig.4 experimental results
本設(shè)計(jì)針對駕駛員常見危險(xiǎn)駕駛習(xí)慣如駕駛汽車過程中看手機(jī)、打電話、進(jìn)食以及同車內(nèi)乘客聊天等現(xiàn)象,設(shè)計(jì)基于深度學(xué)習(xí)技術(shù)的危險(xiǎn)駕駛行為檢測模型。采用PaddlePaddle框架,利用Kaggle駕駛員狀態(tài)檢測數(shù)據(jù)集訓(xùn)練并測試基于PaddleX+OpenCV的深度學(xué)習(xí)網(wǎng)絡(luò)模型;將PaddleX深度學(xué)習(xí)網(wǎng)絡(luò)模型轉(zhuǎn)化為 PaddleHub輕量型深度學(xué)習(xí)網(wǎng)絡(luò)模型便于部署和應(yīng)用;能夠?qū)崿F(xiàn)對駕駛員normal driving(正常駕駛);texting -right(右手發(fā)短信/玩手機(jī));talking on the phone -right(右手打電話);texting - left(左手發(fā)短信/玩手機(jī));talking on the phone - left(左手打電話);operating the radio(調(diào)試車載多媒體);drinking(進(jìn)食);reaching behind(向后排拿東西);hair and makeup(整理妝容);talking to passenger(同乘客談話)等10種駕駛行為的檢測,其中有9種危險(xiǎn)駕駛行為,并且識(shí)別準(zhǔn)確率可達(dá)到98%以上。經(jīng)測試,模型可同時(shí)進(jìn)行10種狀態(tài)檢測,檢測運(yùn)行時(shí)間為492 ms,由此可推斷,該模型可進(jìn)行實(shí)時(shí)檢測駕駛員危險(xiǎn)駕駛狀態(tài)。
根據(jù)模型表現(xiàn),下一步可以將模型部署到手機(jī)端或類似于樹莓派等嵌入式終端進(jìn)行本地檢測,同時(shí)還可以將模型進(jìn)行“邊緣端+云端”部署,這樣可以實(shí)現(xiàn)更加穩(wěn)定的實(shí)時(shí)檢測,并且可以根據(jù)模型不斷迭代實(shí)現(xiàn)模型檢測的高效性和高魯棒性。