王 彬,徐俊杰,趙作鵬
(1.中國礦業(yè)大學 計算機科學與技術(shù)學院,江蘇 徐州 221116;2.江蘇聯(lián)合職業(yè)技術(shù)學院徐州財經(jīng)分院 信息技術(shù)系,江蘇 徐州 221008)
疲勞作為一種生理現(xiàn)象會降低工作效率和身體機能,通常是由于長時間的體力或腦力勞動所導(dǎo)致。在交通領(lǐng)域,疲勞駕駛會增加道路事故發(fā)生率[1-2]。據(jù)統(tǒng)計,疲勞駕駛是我國高速公路交通事故的主要原因之一,約占10%[3]。
為減少疲勞駕駛帶來的安全隱患,研究人員多采用基于生理特征和面部特征的疲勞檢測方法?;谏硖卣鞯臋z測方法是通過監(jiān)測駕駛者的生理指標,如心率、眼動、肌電信號等來評估其疲勞程度[4-5]。該類方法優(yōu)勢在于可以實時監(jiān)測駕駛者的身體狀況。而基于面部特征的檢測方法以駕駛者的面部表情、頭部姿態(tài)、眼瞼閉合率等為判斷疲勞程度的指標。該方法一般使用計算機視覺技術(shù)進行疲勞檢測,具有非接觸性、實時性和經(jīng)濟性等優(yōu)勢,現(xiàn)已成為主流的檢測方法。以卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)為代表的深度學習模型在計算機視覺領(lǐng)域取得了巨大的成功,借助CNN在人臉檢測和人體姿態(tài)估計方面取得的優(yōu)良效果,大大提高了疲勞檢測的準確性,并逐漸取代傳統(tǒng)的機器學習算法。
疲勞檢測可視為目標檢測問題。2019年,Xiao等[6]提出了一種通過駕駛員眼睛的時空特征檢測疲勞狀態(tài)的有效方法,設(shè)計了具有長短期記憶單元的端到端可訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)。在深度學習方法層面上,Liu等[7]提出了一種基于多人臉特征的雙流網(wǎng)絡(luò)模型的駕駛員疲勞檢測算法。Gu等[8]提出了一種用于疲勞檢測系統(tǒng)的多任務(wù)分層CNN方案,并提出了一種多任務(wù)的卷積神經(jīng)網(wǎng)絡(luò)模型。
本研究將疲勞檢測問題直接視為人臉和眼嘴的目標檢測任務(wù),以降低檢測過程中的計算量。但大部分目標檢測網(wǎng)絡(luò)往往更加關(guān)注檢測精度的提升,從而忽略了模型計算量、參數(shù)量大小的問題。2014年,將卷積神經(jīng)網(wǎng)絡(luò)運用在目標檢測領(lǐng)域的模型R-CNN被提出,該模型將mAP在VOC2012最好結(jié)果的基礎(chǔ)上提高了30%以上,達到了53.3%。
隨著R-CNN的進一步發(fā)展,產(chǎn)生了兩種不同的演變。第一種是基于候選區(qū)域網(wǎng)絡(luò)方法的目標檢測模型,第二種是基于回歸方法的目標檢測模型。這些新的變種在R-CNN的基礎(chǔ)上進行了改進和優(yōu)化,提高了目標檢測的精度和效果。
此類模型可分為兩種。(1)Faster R-CNN模型。它源于R-CNN和Fast R-CNN。2017年,Ren等[9]提出了Faster R-CNN,該模型在結(jié)構(gòu)上整合了特征抽取、候選區(qū)域提取、邊框回歸和分類器的全過程,并將它們都集成在一個網(wǎng)絡(luò)中。這種整合架構(gòu)使得Faster R-CNN在綜合性能上取得了優(yōu)秀的表現(xiàn),尤其是在檢測速度方面。(2)R-FCN模型。該模型基于目標檢測的需求,對ResNet進行了改進,將其轉(zhuǎn)變?yōu)橐环N全卷積網(wǎng)絡(luò),以實現(xiàn)目標位置的準確定位。R-FCN在PASCAL VOC 2007測試集上的mAP為83.6%,單張圖像檢測時間為170 ms。
此類模型也可分為兩種。(1)SSD模型。SSD是由谷歌團隊于2016年提出的一種通用物體檢測模型,它以VGG16為主干網(wǎng)絡(luò)。相較于VGG16基礎(chǔ)網(wǎng)絡(luò),SSD在最后一層卷積層之后添加了多個不同尺度的特征層,使得SSD能夠處理不同大小的目標。SSD采用了一種單神經(jīng)網(wǎng)絡(luò)多邊界框檢測的方法,可以直接進行候選區(qū)域選取和區(qū)域分類,從而大大縮短了檢測時間,但這種方式也會導(dǎo)致模型準確度的降低。(2)YOLO模型。同SSD一樣,YOLO也是一種one-stage的檢測模型,YOLO和YOLO9000于2016年和2017年先后面世,隨后陸續(xù)迭代出了YOLOv2至YOLOv5 4個版本。YOLOv3結(jié)合了YOLOv2和ResNet的特點,并借鑒了特征金字塔網(wǎng)絡(luò)FPN的設(shè)計思路,實現(xiàn)了多尺度預(yù)測。為了構(gòu)建該模型,YOLOv3采用了Darknet-53的深層網(wǎng)絡(luò)結(jié)構(gòu),其中包含了53層卷積層。此外,YOLOv3模型還通過使用多個邏輯分類器來取代softmax進行分類,以適應(yīng)復(fù)雜目標類別或多標簽分類任務(wù),這也導(dǎo)致了YOLOv3模型參數(shù)量大且檢測速度較慢。為了在算力有限的嵌入式設(shè)備上運行,需要提高模型檢測的精度和速度。
為了達到實時檢測的要求,同時滿足移動端的內(nèi)存限制,本研究提出了YM_SSH網(wǎng)絡(luò),整體結(jié)構(gòu)如圖1所示。該網(wǎng)絡(luò)分為兩部分:前半部分使用MobileViT替換YOLOv3的主干網(wǎng)絡(luò),后半部分為改進的SSH網(wǎng)絡(luò)和檢測層。為了完成輕量化的目標,選擇MobileViT作為前半部分模型的主干網(wǎng)絡(luò);后半部分為改進的SSH網(wǎng)絡(luò)。SSH網(wǎng)絡(luò)借鑒了Inception結(jié)構(gòu),利用多個卷積維度拓展特征提取感受野,通過多分支、不同大小卷積核提取特征。對于深度可分離卷積,使用若干3×3卷積核來替換5×5和7×7卷積核。形式上,給定輸入形狀(H,W,M)和輸出形狀(H,W,N),讓C5×5和C3×3分別表示5×5和3×3深度可分離卷積的計算代價:
圖1 YM_SSH網(wǎng)絡(luò)結(jié)構(gòu)
C3×3=H×W×M×(9+N)
(1)
C5×5=H×W×M×(25+N)
(2)
C7×7=H×W×M×(49+N)
(3)
對于相同的有效感受野,當輸入深度N<7時,兩個3×3的卷積核比一個5×5的卷積核具有更少的計算量;當輸入深度N<11時,3個3×3的卷積核比一個7×7的卷積核具有更少的計算量。將SSH模塊中的Conv-1單元卷積為一個3×3卷積核,通道數(shù)縮減為原來的1/2,Conv-2單元卷積利用2個3×3卷積核替換一個5×5卷積核,通道數(shù)縮減為原來的1/4,Conv-3單元卷積利用3個3×3卷積核替換1個7×7卷積核,合并之后總通道數(shù)不變。
在YOLOv3檢測層的基礎(chǔ)上,將檢測層的filter數(shù)量減半,通道數(shù)縮小為原來的1/2。為了彌補減少參數(shù)量的精度損失,引入SSH模塊擴展感受野,使模型在減少參數(shù)量的同時,保持較高精度。
本文實驗平臺為 Intel Core I5 10400F處理器,NVIDIA GTX 1660 S 8G顯存,軟件環(huán)境為 Windows10,PyTorch深度學習框架,使用VOC2007、VOC2012數(shù)據(jù)集、KITTI數(shù)據(jù)集對模型進行訓(xùn)練,測試本模型以及其他流行目標檢測模型的性能。
VOC2007和VOC2012數(shù)據(jù)集包括了20個目標物體類別。本文選擇VOC2007和VOC2012的訓(xùn)練數(shù)據(jù)集作為本模型的訓(xùn)練集,并使用VOC2007的測試集來評估模型性能。此外,本研究還使用了KITTI數(shù)據(jù)集,該數(shù)據(jù)集包含了在不同場景下采集的真實圖像數(shù)據(jù),涵蓋了市區(qū)、鄉(xiāng)村和高速公路等場景,共計8個類別。在實驗中,本研究將KITTI數(shù)據(jù)集中的pedestrian和person sitting合并為pedestrian類,并將tram和truck合并為truck類。因此,本研究的數(shù)據(jù)集包含了car、van、truck、pedestrian、cyclist和background 6個類別,總共有7 400張帶有標簽的圖像,其中6 660張用作訓(xùn)練集,剩下的740張作為測試集。
本文從檢測精度、檢測效率和模型大小3個方面對目標檢測效果進行評估。在評估模型性能上,采用準確率(Accuracy)、精確率(Precision)、召回率(Recall rate)、mAP(mean Average Precision)指標。使用每秒幀檢測數(shù)(FPS)來評估檢測效率,使用MB評估模型的大小。研究通過實驗測量這些性能指標,綜合討論出更適用于嵌入式移植的模型。
本節(jié)通過控制變量分別使用不同的基礎(chǔ)網(wǎng)絡(luò)和YOLOv3結(jié)構(gòu),對比不同組合模型的效果?;A(chǔ)網(wǎng)絡(luò)使用MobileNet、MobileNetV2、MobileViT和YOLOv3結(jié)構(gòu)組合,在KITTI數(shù)據(jù)集上驗證。結(jié)果如表1所示。通過第1、2行結(jié)果可知,在檢測網(wǎng)絡(luò)使用YOLOv3時,MobileNetV2相比于MobileNet,作為基礎(chǔ)網(wǎng)絡(luò)時可有效縮減模型大小,減少了2.8 MB,同時檢測精度基本保持不變。通過第2、3行結(jié)果可知,MobileViT作為基礎(chǔ)網(wǎng)絡(luò),相較于MobileNetV2,使用了標準卷積和Transformer,具有更少的計算量。此外,MobileViT作為基礎(chǔ)網(wǎng)絡(luò)要比MobileNetV2有更高的檢測精度,mAP提升了1.2%,因此MobileViT在特征提取方面也比MobileNet更優(yōu)秀。
表1 各模型在KITTI數(shù)據(jù)集上的效果
本節(jié)實驗分別使用輕量化目標檢測網(wǎng)絡(luò)MobileNet-YOLOv3、MobileNetV2-YOLOv3以及本文提出的YM_SSH網(wǎng)絡(luò),在VOC、KITTI和Fatigue_Imgs數(shù)據(jù)集上進行實驗。
在VOC和KITTI數(shù)據(jù)集上的實驗結(jié)果如表2所示,通過第1、2行結(jié)果可知,MobileNetV2-YOLOv3相對于MobileNet-YOLOv3,在縮小模型大小的同時,擁有更高的檢測精度。通過2、3行結(jié)果可知,本文提出的YM_SSH相對于MobileNetV2-YOLOv3,在大幅縮減模型大小的情況下,檢測精度mAP僅下降了0.9%,用較少的精度代價換取了比MobileNetV2-YOLOv3更小的模型。在檢測效率上,3款模型的FPS相近。
表2 各模型在VOC2007+2012數(shù)據(jù)集上的效果
本節(jié)實驗分別使用YOLOv3、YOLOv3-MobileViT以及本文提出的YOLO-SSH網(wǎng)絡(luò),在疲勞數(shù)據(jù)集Fatigue_Imgs上進行試驗。
在疲勞數(shù)據(jù)集上的實驗結(jié)果如表3所示,YM_SSH相對于YOLOv3和MobileViT-YOLOv3,在縮小模型的同時,獲得了更高的精度。
表3 各模型在Fatigue_Imgs數(shù)據(jù)集上的效果
為分析MobileViT-YOLOv3和YM_SSH兩種模型的性能,本節(jié)在相同實驗條件下,使用Fatigue_Imgs數(shù)據(jù)集比較了兩種模型在不同閾值下的準確率。如圖2所示,當閾值從0.25逐漸增加到0.55時,MobileViT-YOLOv3的檢測性能下降幅度明顯。但對于YM_SSH而言,當閾值為0.55時,準確率仍然達到91.39%,表明YM_SSH具有良好的抗干擾能力。
圖2 兩種網(wǎng)絡(luò)在不同閾值下的準確率
本文針對算力受限的系統(tǒng)基于YOLOv3-MobileViT,提出了一種輕量化網(wǎng)絡(luò)YM-SSH,它能夠?qū)崿F(xiàn)高效實時的疲勞檢測。經(jīng)過KITTI、VOC、Fatigue _Imgs數(shù)據(jù)集實驗測試,綜合考慮精度、速度和模型大小等因素,本文所提的輕量化疲勞檢測網(wǎng)絡(luò),相比以往的輕量化目標檢測模型,在收縮模型大小的同時,精確度更高。未來,本研究會將算法部署到嵌入式平臺中,并在嵌入式模型根據(jù)不同的檢測場景針對性地優(yōu)化模型。