(西南交通大學(xué) 機(jī)械工程學(xué)院, 成都 610031)
隨著我國經(jīng)濟(jì)高速全面發(fā)展,鐵路運(yùn)輸能力的快速提高,鐵路運(yùn)輸在交通運(yùn)輸?shù)牡匚挥鸀橹匾4_保鐵路安全平穩(wěn)成為鐵路運(yùn)輸部門的一項重要工作。在眾多的鐵路安全事故中,人始終是影響鐵路行車安全的重要因素。文獻(xiàn)[1]總結(jié)了1990~2009年10年中重大列車事故原因,其中人為因素占總事故數(shù)目的64.76%。因此,對鐵路系統(tǒng)中的人加強(qiáng)監(jiān)管就顯得極為重要,尤其是直接關(guān)系到整車安全的機(jī)車駕駛員。
當(dāng)前,我國鐵路管理部門在原有安全監(jiān)測設(shè)備基礎(chǔ)上重新設(shè)計,構(gòu)建了機(jī)車車載系統(tǒng)、地面專家系統(tǒng)一體化的機(jī)車安全防護(hù)體系(6A系統(tǒng))[2]。這套系統(tǒng)在每輛機(jī)車的機(jī)車駕駛室后方安裝了攝像頭以加強(qiáng)對駕駛員的監(jiān)督。當(dāng)列車開始行駛后,攝像頭會開啟并記錄駕駛室人員視頻信息。當(dāng)列車停止運(yùn)行后,鐵路管理人員會以人工瀏覽察看視頻的方式進(jìn)行分析,用于司機(jī)的績效評定和事故后責(zé)任的分析??梢?,當(dāng)前的駕駛室視頻系統(tǒng)只能做到對駕駛員事先的心理提醒,無法對駕駛員在機(jī)車運(yùn)行過程中不當(dāng)行為進(jìn)行實(shí)時提醒。隨著深度學(xué)習(xí)在圖像處理方面的發(fā)展應(yīng)用,使用計算機(jī)實(shí)現(xiàn)自動司機(jī)行為識別已經(jīng)成為了可能。搭建一種車載智能監(jiān)控系統(tǒng),實(shí)現(xiàn)實(shí)時司機(jī)行為識別,如檢測出問題便及時將圖片傳回地面鐵路管理人員,便成為一項極有意義的工作。
由此,本文融合目標(biāo)檢測和關(guān)鍵點(diǎn)檢測兩種深度學(xué)習(xí)算法,創(chuàng)新實(shí)現(xiàn)了一種可以同時檢測司機(jī)人體關(guān)鍵點(diǎn)和手機(jī)的神經(jīng)網(wǎng)絡(luò),通過分析人體關(guān)節(jié)角度和人體關(guān)鍵點(diǎn)與手機(jī)目標(biāo)的位置關(guān)系對司機(jī)行為進(jìn)行了分類識別,并利用半精度加速和層級融合的方法對模型進(jìn)行了加速和壓縮,最終將其成功的部署在嵌入式邊緣計算設(shè)備上,實(shí)現(xiàn)了較好檢測效果下的實(shí)時運(yùn)行。
本文將需要檢測的司機(jī)行為分為以下幾類:1)離崗:駕駛室內(nèi)未檢測到司機(jī);2)使用手機(jī):司機(jī)使用手機(jī)并處于打電話或者玩手機(jī)的狀態(tài);3)進(jìn)行手勢:司機(jī)做出右手向前方示意或者高舉右手握拳的規(guī)定行為;4)站立:司機(jī)處于站立狀態(tài);5)坐:司機(jī)處于正常坐下狀態(tài);6)瞌睡:司機(jī)趴在駕駛臺上或后仰在椅子上。
為能夠確保數(shù)據(jù)的多樣性, 我們采集多組列車駕駛室原始視頻數(shù)據(jù)進(jìn)行抽幀提取訓(xùn)練圖片以及測試圖片,標(biāo)記其中出現(xiàn)司機(jī)人體關(guān)鍵點(diǎn)和手機(jī)目標(biāo)框。針對司機(jī)人體關(guān)鍵點(diǎn),根據(jù)實(shí)際需求,采用和AI Challenger數(shù)據(jù)集[3]相近的標(biāo)注結(jié)構(gòu),標(biāo)注每個人的目標(biāo)框和人體的14個關(guān)節(jié),分別為頭部、脖子、左右肩、左右肘、左右手腕、左右髖、左右膝和左右踝部,對于可見、可知不可見和不可知不可見的人體關(guān)鍵點(diǎn)分別以數(shù)字“0”、“1”、“2”進(jìn)行區(qū)分,標(biāo)注如圖1所示。
圖1 人體關(guān)鍵點(diǎn)標(biāo)注
我們共提取了2 750張不同司機(jī)姿態(tài)的圖片,共標(biāo)注了4 379個人體對象和1 139個手機(jī)目標(biāo)。其中共有主司機(jī)目標(biāo)3 015個,副司機(jī)目標(biāo)1 299個,其他人員65個。司機(jī)站立姿態(tài)1 315個,正常坐姿2 734個,瞌睡330個。司機(jī)進(jìn)行手勢對象1 590個。并將其按10∶1的比例隨機(jī)劃分為訓(xùn)練集和測試集。
根據(jù)需求,本文中的模型需要同時檢測出人體關(guān)鍵點(diǎn)和手機(jī)目標(biāo)框才可以進(jìn)行司機(jī)是否使用手機(jī)的判別。傳統(tǒng)意義上這是兩類截然不同的圖像識別任務(wù),需要分別運(yùn)行人體關(guān)鍵點(diǎn)檢測網(wǎng)絡(luò)和目標(biāo)檢測網(wǎng)路完成識別。然而同時運(yùn)行兩種網(wǎng)絡(luò)并保持輸出結(jié)果的實(shí)時性,無疑需求強(qiáng)大的計算能力。在每臺機(jī)車上部署高性能主機(jī)耗價昂貴,而機(jī)車也未必能滿足計算機(jī)運(yùn)行所需的穩(wěn)定的環(huán)境和電力需求。而選擇遠(yuǎn)程部署實(shí)時分析的方法,當(dāng)前我國的網(wǎng)絡(luò)建設(shè)也很難滿足實(shí)時傳輸機(jī)車視頻的需求。因此,本文融合目標(biāo)檢測和關(guān)鍵點(diǎn)檢測兩種深度學(xué)習(xí)算法,基于目標(biāo)框檢測實(shí)現(xiàn)了一種可以同時檢測司機(jī)人體關(guān)鍵點(diǎn)和手機(jī)目標(biāo)的神經(jīng)網(wǎng)絡(luò)。
目標(biāo)檢測算法可以分為單階段和雙階段兩類,單階段目標(biāo)檢測通過神經(jīng)網(wǎng)絡(luò)提取圖片特征,輸出長寬為原始圖片n分之一的特征圖,特征圖每個點(diǎn)回歸預(yù)測固定個數(shù)的目標(biāo)框的中心點(diǎn)、長寬、置信度和類別,通過非最大抑制算法[4]得到最終的目標(biāo)框和目標(biāo)類別,如Yolo[5]和SSD[6]網(wǎng)絡(luò)。人體關(guān)鍵點(diǎn)檢測算法根據(jù)先檢測關(guān)鍵點(diǎn)再連接成人體還是先檢測出人體再檢測每個關(guān)鍵點(diǎn)可以分為自底而上和自頂而下兩種方式,其都是通過神經(jīng)網(wǎng)絡(luò)對人體關(guān)鍵點(diǎn)位置進(jìn)行直接預(yù)測。自頂而下一般具有相對較高的準(zhǔn)確率,但是處理速度較低,而且當(dāng)出現(xiàn)多人時,處理速度會出現(xiàn)明顯的波動,不利于實(shí)時檢測,近些年代表性的算法為Alphapose[8]。自底而上的處理速度較快,不受人數(shù)多少的影響,其經(jīng)過神經(jīng)網(wǎng)絡(luò)處理后分別得到兩張?zhí)卣鲌D,分別為人體關(guān)鍵點(diǎn)的置信度和用作指示關(guān)鍵點(diǎn)的指向作為肢體連接的概率,通過最大匹配的方法連接各個人體關(guān)鍵點(diǎn)組成人體姿勢。近些年代表性的算法為Openpose[7]。
Pose proposal network[9]借鑒單階段目標(biāo)檢測的思想,將人體姿態(tài)估計轉(zhuǎn)換為目標(biāo)檢測問題,即將每個人體關(guān)鍵點(diǎn)標(biāo)注的人體關(guān)節(jié)視為一個目標(biāo)框,從圖像中直接回歸出包含人體關(guān)鍵點(diǎn)的目標(biāo)框。將目標(biāo)框的中心點(diǎn)視為要預(yù)測的人體關(guān)鍵點(diǎn),通過計算肢體連接概率對關(guān)鍵點(diǎn)進(jìn)行連接,得到人體姿態(tài)。相關(guān)實(shí)驗[9]表明,Pose proposal network在mpii、coco等主流數(shù)據(jù)集上取得了和openpose等以直接預(yù)測關(guān)鍵點(diǎn)的人體姿態(tài)估計算法不相上下的成績,而模型的計算量較小,運(yùn)行的速度大為提高,適于計算受限情況下的部署。
由此,我們可以通過目標(biāo)框識別將人體關(guān)鍵點(diǎn)和手機(jī)識別統(tǒng)一起來,通過一個主干網(wǎng)絡(luò)統(tǒng)一提取圖片中的特征信息,分別得到H×W大小的包含人體關(guān)鍵點(diǎn)、手機(jī)目標(biāo)框的特征圖B和只包含肢體關(guān)系的特征圖C,如式(1)所示:
C={{p(ki,ki+1,x,x+Δx)}i}i∈{1,....H×W},(ki,ki+1)∈L
(1)
(2)
特征圖B通過conf確定目標(biāo)框,并通過ox、oy、w、h得到每個目標(biāo)框的位置大小后,通過非最大值抑制去除重復(fù)的目標(biāo)框,將人體關(guān)鍵點(diǎn)代入肢體關(guān)系特征圖C中進(jìn)行二分圖匹配連接,區(qū)分得到不同的人類個體,最后輸出人體姿勢和手機(jī)目標(biāo),如圖2所示。
圖2 融合模型設(shè)計
為了滿足模型在嵌入式設(shè)備上運(yùn)行的需求,本文通過使用TensorRT框架[10]完成對模型的壓縮提速。TensoRT是英偉達(dá)公司為滿足深度學(xué)習(xí)的高速推理需求所推出的只用于部署推理的神經(jīng)網(wǎng)絡(luò)框架。其通過實(shí)現(xiàn)模型簡化和降低模型運(yùn)行計算復(fù)雜度對模型推理速度進(jìn)行加速和對模型體積壓縮,使嵌入式設(shè)備也可以滿足實(shí)時運(yùn)行深度網(wǎng)絡(luò)的需求。
TensorRT的模型簡化通過整合卷積層(convolution layer)和批歸一化層(batch normalization layer)為一層實(shí)現(xiàn)。神經(jīng)網(wǎng)絡(luò)中,卷積層運(yùn)算可以表示為:
xl+1=W*xl
(3)
其中:xl代表特征圖輸入,xl+1代表特征圖輸出,W代表卷積核參數(shù),*代表卷積運(yùn)算。而批歸一化層可以表示為:
(4)
其中:μ代表事先學(xué)習(xí)中保存的訓(xùn)練集xl+1的均值,σ代表xl+1的標(biāo)準(zhǔn)差,γ、β代表兩個調(diào)節(jié)因子??梢詫?3)和(4)融合為:
(5)
TensorRT降低模型運(yùn)行計算復(fù)雜度通過降低模型運(yùn)行時計算的字節(jié)位數(shù)實(shí)現(xiàn)。神經(jīng)網(wǎng)絡(luò)運(yùn)行時默認(rèn)采用單精度32位浮點(diǎn)數(shù)進(jìn)行計算,而TensorRT可以將模型更換為半精度16位浮點(diǎn)數(shù)乃至8位整數(shù)進(jìn)行推算并保存模型參數(shù),調(diào)用設(shè)備的GPU實(shí)現(xiàn)模型提速。相關(guān)實(shí)驗表明,當(dāng)模型采用16位浮點(diǎn)數(shù)計算時,模型運(yùn)行速度有近乎原有速度數(shù)倍的提升,而模型的精度幾乎沒有變化。
當(dāng)完成人體骨架和手機(jī)的檢測后,模型輸出識別出的人體各個關(guān)節(jié)點(diǎn)和手機(jī)的目標(biāo)框。我們可以通過分析人體各部分的角度關(guān)系得到司機(jī)的姿態(tài)和動作,并通過檢測得到的手機(jī)框與人體手部框和人體頭部框的關(guān)系可以得到司機(jī)是否接電話或者使用手機(jī)。
如圖3所示,本文通過人體各關(guān)節(jié)點(diǎn)坐標(biāo)得到人體肢體的向量,通過余弦公式得到肢體之間的角度。本文計算右大臂和軀干角度α、右大臂與右小臂角度β對司機(jī)是否正進(jìn)行手勢進(jìn)行二分判別;計算左右大腿和人體軀干的角度δ、γ判別司機(jī)處于站立還是坐著;計算人體軀干與水平面角度ε、頭部與軀干角度ζ判別司機(jī)是否瞌睡;如未在規(guī)定范圍內(nèi)檢測到人體,則判斷為離崗。當(dāng)檢測結(jié)果中出現(xiàn)手機(jī)目標(biāo)框時,則計算手機(jī)目標(biāo)框與各個人體的手部、頭部的目標(biāo)框的的重疊情況,當(dāng)手機(jī)目標(biāo)框中心點(diǎn)落于手部、頭部的目標(biāo)框內(nèi)或手部、頭部的目標(biāo)框中心點(diǎn)落于手機(jī)目標(biāo)框內(nèi)時,判定其處于使用手機(jī)的狀態(tài)。整體的后處理流程如圖4所示。
圖3 人體骨架示意圖
圖4 后處理流程圖
本文使用了Pytorch深度學(xué)習(xí)框架完成融合模型的搭建?;谇度胧皆O(shè)備計算量限制的需求,主干網(wǎng)絡(luò)選擇有較好精度表現(xiàn)并且計算量相對較少的Densent[11],特征提取層由兩層3×3、一層1×1的卷積層和相應(yīng)的批歸一化層、relu非線性激活層組成,損失函數(shù)選擇均方誤差函數(shù)(mean square error,MSE)。訓(xùn)練GPU為RTX2070 8G,系統(tǒng)為Ubuntu16.04,python環(huán)境為python3.6.8。訓(xùn)練設(shè)置圖片輸入大小為288×288,初始學(xué)習(xí)率為1e-3,按1e-3*(1-當(dāng)前循環(huán)次數(shù)/總循環(huán)次數(shù))衰減,每批次輸入圖片張數(shù)設(shè)為32,共循環(huán)訓(xùn)練集1 000次。為使模型不對訓(xùn)練集產(chǎn)生過擬合現(xiàn)象、提高樣本多樣性和圖片質(zhì)量,使用隨機(jī)旋轉(zhuǎn)、左右翻轉(zhuǎn)、隨機(jī)裁剪、隨機(jī)改變圖片明暗度、飽和度等方式在訓(xùn)練過程中擴(kuò)增訓(xùn)練集。
本文選擇的部署嵌入式平臺為較為廉價、適于工業(yè)部署的NVIDIA Jetson TX2,如圖5所示。NVIDIA Jetson TX2是英偉達(dá)公司推出的嵌入式高性能開發(fā)板,其采用NVIDIA Pascal架構(gòu),配備256個 CUDA核心,CPU和GPU共用內(nèi)存為8 GB,可進(jìn)行16位浮點(diǎn)數(shù)計算。
圖5 NVIDIA Jetson TX2
本文采用OKS(目標(biāo)關(guān)鍵點(diǎn)相似度,Object Keypoint Similarity)[12]作為每張圖片人體關(guān)鍵點(diǎn)識別好壞的衡量標(biāo)準(zhǔn),其計算公式如下:
(6)
式中,p表示真實(shí)目標(biāo)中當(dāng)前檢測的人的代碼,i代表被標(biāo)記的人的每一個關(guān)節(jié),dpi表示真實(shí)目標(biāo)中每個人和預(yù)測的每個人的關(guān)鍵點(diǎn)的歐氏距離,Sp表示當(dāng)前人的尺度因子,等于人所占面積的平方根,表示人體每個關(guān)鍵點(diǎn)的歸一化因子,這個值反映了當(dāng)前關(guān)鍵點(diǎn)的識別的難易程度,υpi代表第i個點(diǎn)是否可見。
統(tǒng)計測試集所有圖片的OKS以計算MAP(mean average precision,均值平均精度)作為人體關(guān)鍵點(diǎn)的衡量指標(biāo)。對于手機(jī)目標(biāo),本文則采用目標(biāo)檢測中常用的IOU(intersection over union,交并比)作為識別好壞的衡量標(biāo)準(zhǔn),同樣統(tǒng)計測試集所有圖片的MAP作為手機(jī)目標(biāo)框的衡量指標(biāo)。
圖6和表1分別展示了模型的訓(xùn)練曲線和融合模型在測試集上的MAP。人體關(guān)鍵點(diǎn)和手機(jī)框識別均處于較為良好的識別水平,滿足進(jìn)行人體識別后處理的要求。
圖6 訓(xùn)練損失和測試集損失曲線
表1 模型檢測精度
隨后,搭建TensorRT加速模型和壓縮模型體積。由于模型采用Pytorch搭建,無法直接轉(zhuǎn)換為TesnorRT可讀取的參數(shù)格式,先將Pytorch模型轉(zhuǎn)換為ONNX(Open Neural Network Exchange) 開放式格式的模型,再輸入TesnorRT程序讀入。表2展示了TenosrRT加速前后模型在精度、速度和體積上的區(qū)別,表中各項都是在Jetson TX2中測得。經(jīng)過TensorRT加速后,模型在人體關(guān)鍵點(diǎn)上MAP下降了0.000 7,而在手機(jī)目標(biāo)框上上升了0.000 2,模型精度基本沒有太大變化。而加速后,模型的推理時間較低到了兩位數(shù)范圍以內(nèi),模型運(yùn)行速度加速比為8.08,基本滿足實(shí)時運(yùn)行的要求。同時,模型的體積降低了36.8%,節(jié)省了嵌入式設(shè)備的存儲空間。圖7展示了模型在測試集上的檢測效果,模型展現(xiàn)了較好的魯棒性,在駕駛室內(nèi)光照情況有巨大區(qū)別的情況下依然可以較為精準(zhǔn)地識別出人體姿態(tài)。
表2 加速前后模型對比
圖7 模型檢測效果圖
表3統(tǒng)計了經(jīng)過第2.3節(jié)所描述的后處理后,模型在測試集的精確率(Precision)和召回率(Recall)。模型在大多數(shù)行為檢測中表現(xiàn)較好,其中在使用手機(jī)的行為上檢測表現(xiàn)最好,精確率達(dá)到92.31%。模型在檢測司機(jī)離崗的情況最差,精確率為62.12%。
表3 后處理檢測效果 %
在這項工作中,本文成功融合了目標(biāo)檢測和關(guān)鍵點(diǎn)檢測兩種深度學(xué)習(xí)算法,創(chuàng)新實(shí)現(xiàn)了一種可以同時檢測司機(jī)人體關(guān)鍵點(diǎn)和手機(jī)的神經(jīng)網(wǎng)絡(luò),通過分析人體關(guān)節(jié)角度和人體關(guān)鍵點(diǎn)與手機(jī)目標(biāo)框位置對司機(jī)行為進(jìn)行了分類識別。并對算法模型進(jìn)行了加速和壓縮,最終將其成功地部署在嵌入式邊緣計算設(shè)備上,模型推理速度為25 ms,可以達(dá)到實(shí)時運(yùn)行的目標(biāo)。另一方面,模型在各類別行為的檢測效果不一,其中離崗行為識別的檢測效果不佳,模型訓(xùn)練的樣本量較少,基于各關(guān)節(jié)角度的后處理方法仍有較大的改善空間,需進(jìn)一步研究。