劉常榕 趙雪寒 劉慶華 金 文 杜春旺 張翟容
(1.江蘇科技大學(xué) 鎮(zhèn)江 212003)(2.江蘇金海星導(dǎo)航科技有限公司 鎮(zhèn)江 212002)
交通安全一直是社會(huì)重大安全問(wèn)題之一,每年多少人都因?yàn)榈缆方煌ㄊ鹿适氋F的生命,一方面是由于行人等自身不遵守交通規(guī)則,一方面也是因?yàn)轳{駛員的危險(xiǎn)駕駛行為導(dǎo)致災(zāi)禍的發(fā)生。在道路交通領(lǐng)域中,危險(xiǎn)駕駛一直是人們比較關(guān)注的地方。道路交通事故統(tǒng)計(jì)資料表明,駕駛員超速、疲勞駕駛、酒后駕駛等危險(xiǎn)駕駛行為是造成交通安全事故的主要因素。楊曉峰等人提出了一種基于臉部特征提取的駕駛員低頭行為的檢測(cè)方法[1],吳超仲[2]等人以駕駛疲勞狀態(tài)監(jiān)測(cè)為研究對(duì)象,介紹現(xiàn)有幾種疲勞檢測(cè)方法及其優(yōu)缺點(diǎn),提出了對(duì)駕駛行為操作和駕駛員生理指標(biāo)進(jìn)行建模,建立疲勞識(shí)別模型,實(shí)現(xiàn)了對(duì)疲勞駕駛行為的檢測(cè)。李娟根據(jù)數(shù)據(jù)融合的思想,采用粗糙集模型融合人眼疲勞識(shí)別特征參數(shù)和車道線危險(xiǎn)識(shí)別特征參數(shù),建立危險(xiǎn)駕駛識(shí)別的數(shù)據(jù)融合模型,得出了最終的危險(xiǎn)識(shí)別結(jié)果[3]。然而,水上駕駛安全也同樣重要。每年,全國(guó)范圍內(nèi)水上交通事故發(fā)生也非常多,水上交通安全問(wèn)題日益凸顯,如何降低水上交通事故發(fā)生已經(jīng)成為江河流域管理部門的重大難題之一。我們認(rèn)識(shí)到,水上危險(xiǎn)駕駛行為是導(dǎo)致水上交通事故的主要原因[4],嚴(yán)重威脅水上交通安全。因此,如何實(shí)現(xiàn)對(duì)船舶駕駛員的危險(xiǎn)駕駛行為的實(shí)時(shí)檢測(cè)對(duì)于減少水上交通事故顯得尤為重要。
在水上交通安全領(lǐng)域,船員的危險(xiǎn)駕駛行為主要有低頭、閉眼、打哈欠、打電話、抽煙、轉(zhuǎn)頭等行為。這些行為可以通過(guò)安裝在船長(zhǎng)駕駛室的攝像頭進(jìn)行捕捉畫(huà)面,并且通過(guò)分析畫(huà)面中的相應(yīng)行為來(lái)檢測(cè)是否有危險(xiǎn)行為發(fā)生,這其實(shí)就涉及到對(duì)人臉、電話等的目標(biāo)檢測(cè)問(wèn)題。目前,在計(jì)算機(jī)視覺(jué)領(lǐng)域,目標(biāo)檢測(cè)是一個(gè)非常重要的研究方向,很多新型科研領(lǐng)域如無(wú)人駕駛、人臉識(shí)別、智能監(jiān)控等都有廣泛的應(yīng)用。它是以圖象分類技術(shù)為基礎(chǔ),檢測(cè)圖像中的目標(biāo)對(duì)象并進(jìn)行分類,并且在目標(biāo)對(duì)象周圍繪制適當(dāng)大小的邊框?qū)δ繕?biāo)對(duì)象進(jìn)行定位實(shí)現(xiàn)的[5]。傳統(tǒng)顯著性目標(biāo)檢測(cè)方法常假設(shè)只有單個(gè)顯著性目標(biāo),其效果依賴顯著性閾值的選取,并不符合實(shí)際應(yīng)用需求。近來(lái)利用目標(biāo)檢測(cè)方法得到顯著性目標(biāo)檢測(cè)框成為一種新的解決思路[6]。選取SSD模型可以同時(shí)精確檢測(cè)多個(gè)不同尺度的目標(biāo)對(duì)象,其對(duì)小尺度目標(biāo)檢測(cè)精度不佳的問(wèn)題在船舶駕駛員行為檢測(cè)中影響較小,因此,采用SSD模型實(shí)現(xiàn)對(duì)船舶駕駛員行為的檢測(cè)是可行的。
本文將首先介紹整個(gè)船載危險(xiǎn)駕駛行為檢測(cè)系統(tǒng)的整體設(shè)計(jì),并且闡述使用SSD模型實(shí)現(xiàn)目標(biāo)檢測(cè)功能的原理,并選取典型的目標(biāo)檢測(cè)數(shù)據(jù),制作用于目標(biāo)檢測(cè)模型的圖像數(shù)據(jù)集,結(jié)合SSD_MobileNet預(yù)訓(xùn)練模型,在具有安裝NVIDIA顯卡的主機(jī)上訓(xùn)練危險(xiǎn)駕駛行為檢測(cè)模型,最后將訓(xùn)練好的模型集成到安裝好特定環(huán)境并帶有NVIDIA顯卡的主機(jī)上,實(shí)現(xiàn)危險(xiǎn)駕駛行為檢測(cè)的功能,并且分析這些行為檢測(cè)的準(zhǔn)確度并且得出相應(yīng)結(jié)論。
整個(gè)船載危險(xiǎn)駕駛行為檢測(cè)系統(tǒng)的主機(jī)為惠普i5-9400F,其內(nèi)存容量為8GB,硬盤容量為1TB,顯卡型號(hào)為NVIDIA GetForce GTX1660,滿足作為訓(xùn)練主機(jī)和正式環(huán)境的要求。在訓(xùn)練模型時(shí),我們可以使用該主機(jī)對(duì)SSD模型在增加數(shù)據(jù)集的基礎(chǔ)上進(jìn)行訓(xùn)練;在實(shí)際船舶環(huán)境中,我們可以將該主機(jī)放置在船長(zhǎng)駕駛室內(nèi),配置相關(guān)程序供電之后即可使用。
該行為檢測(cè)系統(tǒng)硬件框圖如圖1所示。首先,船舶一般配置一臺(tái)路由器和一臺(tái)交換機(jī),安裝在船員駕駛艙前面的??禂z像頭通過(guò)連接到交換機(jī)通過(guò)配置相關(guān)參數(shù)即可使該攝像頭具有靜態(tài)的IP,搭載檢測(cè)模型的主機(jī)通過(guò)連接到交換機(jī)與該攝像頭同處一個(gè)局域網(wǎng)下,就能通過(guò)攝像頭固定的本地地址實(shí)現(xiàn)通信。主機(jī)上的檢測(cè)程序主要是通過(guò)實(shí)時(shí)流傳輸協(xié)議RTSP(Real Time Streaming Protocol)將駕駛員的實(shí)時(shí)監(jiān)控視頻流獲取到,然后將該視頻流輸入到船載危險(xiǎn)駕駛行為檢測(cè)的深度學(xué)習(xí)模型中,模型根據(jù)視頻流會(huì)進(jìn)行幾種駕駛行為的檢測(cè),如果發(fā)現(xiàn)檢測(cè)到危險(xiǎn)駕駛行為,則會(huì)通過(guò)報(bào)警模塊將該行為信息通過(guò)聲音播報(bào)出來(lái)并且會(huì)通過(guò)MQTT協(xié)議的數(shù)據(jù)消息發(fā)送到遠(yuǎn)程后臺(tái)管理平臺(tái),后臺(tái)管理平臺(tái)可以將這些信息保存到數(shù)據(jù)庫(kù)并且通過(guò)界面展示出來(lái)。
船載主機(jī)可以設(shè)置掉電自動(dòng)重啟功能,每次船舶開(kāi)始啟動(dòng)通電時(shí)主機(jī)能夠自動(dòng)開(kāi)機(jī),檢測(cè)程序隨之能夠?qū)崟r(shí)地檢測(cè)船員的危險(xiǎn)駕駛行為,非常方便,不需要人工干預(yù)。
圖1 硬件系統(tǒng)設(shè)計(jì)示意圖
放置在船上的主機(jī)里面集成了危險(xiǎn)駕駛行為的檢測(cè)程序,其主要的流程如圖2所示。首先,當(dāng)主機(jī)通電時(shí),檢測(cè)程序自動(dòng)開(kāi)始運(yùn)行,首先會(huì)進(jìn)行系統(tǒng)初始化,根據(jù)主機(jī)、端口和主題等配置向MQTT服務(wù)器發(fā)起訂閱,訂閱成功則開(kāi)始檢查TTS模塊是否正常啟動(dòng),其次,加載危險(xiǎn)駕駛行為檢測(cè)模型,然后開(kāi)始讀取視頻流,讀取每幀的圖片進(jìn)行檢測(cè),如果檢測(cè)到危險(xiǎn)駕駛行為則通知TTS模塊播放對(duì)應(yīng)的提示語(yǔ)音并且通過(guò)MQTT向遠(yuǎn)程平臺(tái)發(fā)送MQTT數(shù)據(jù)包。
圖2 檢測(cè)程序執(zhí)行流程圖
MQTT協(xié)議[9]特別適合應(yīng)用在物聯(lián)網(wǎng)領(lǐng)域,本系統(tǒng)中,我們就是采用MQTT協(xié)議發(fā)送數(shù)據(jù)包。MQTT協(xié)議是一種基于Publish/Subscribe模式的協(xié)議,它的主題支持通配符格式,一般常用的是“+”和“#”。本系統(tǒng)設(shè)計(jì)的主題格式主要是根據(jù)公司代碼還有船舶九位碼來(lái)區(qū)別不同的船舶發(fā)送過(guò)來(lái)的駕駛行為的數(shù)據(jù),主要形式為/ship/+/+/alert/publish,其中第一個(gè)“+”匹配的是公司代碼,第二個(gè)加號(hào)匹配的是船舶九位碼,這樣設(shè)計(jì)的目的是可以根據(jù)主題的層級(jí)關(guān)系每個(gè)公司可以只訂閱自己管理的船舶的主題,便于后續(xù)需要。MQTT的數(shù)據(jù)格式采用json格式,各字段含義主要如表1所示。
系統(tǒng)的后臺(tái)管理平臺(tái)主要使用的語(yǔ)言為java,主要的架構(gòu)為Springboot+mybatis+JSP實(shí)現(xiàn),將項(xiàng)目打包成war直接使用docker部署。平臺(tái)主要使用的是postgresql關(guān)系型數(shù)據(jù)庫(kù),整個(gè)架構(gòu)如圖3所示。
表1 MQTT數(shù)據(jù)包字段說(shuō)明
圖3 網(wǎng)絡(luò)模型結(jié)構(gòu)圖
SSD模型是由WeiLiu,Dragon Anguelov等[7]提出的使用單個(gè)深層神經(jīng)網(wǎng)絡(luò)檢測(cè)圖像中對(duì)象的方法。其結(jié)構(gòu)示意圖4所示:SSD模型的前五層為VGG-16網(wǎng)絡(luò)的卷積層,第六和第七層全連接層轉(zhuǎn)化為兩個(gè)卷積層,之后再加上三個(gè)卷積層和一個(gè)平均池化層。SSD模型的主要特征就是采取VGG-16卷積神經(jīng)網(wǎng)絡(luò)作為基礎(chǔ),然后連接多層卷積層和池外層來(lái)提供額外提取特征的效果。SSD模型獲取目標(biāo)對(duì)象位置和類別的方法雖然也是回歸方法,但是主要去除了候選框的操作,使用候選對(duì)象位置周圍的特征,采用的是Anchor機(jī)制。在使用SSD模型進(jìn)行對(duì)象的檢測(cè)時(shí),各個(gè)卷積層會(huì)將特征圖分割為若干稱為feature map cell的大小相同的網(wǎng)格,針對(duì)每個(gè)網(wǎng)格使用固定大小的Default boxes對(duì)目標(biāo)對(duì)象進(jìn)行包圍,預(yù)測(cè)這些Default boxes的偏移和類別得分,最后采用非極大值抑制方法獲取目標(biāo)檢測(cè)的結(jié)果。Default boxes可以作用于不同層次的多個(gè)特征圖上,幫助我們以最合適的尺度來(lái)匹配目標(biāo)對(duì)象的實(shí)際區(qū)域范圍。
圖4 VGG結(jié)構(gòu)圖
SSD_MobileNet模型是將MobileNet網(wǎng)絡(luò)替換VGG網(wǎng)絡(luò)成為該模型的基礎(chǔ)網(wǎng)絡(luò)結(jié)構(gòu)的。MobileNet的設(shè)計(jì)之初是為了應(yīng)用于嵌入式視覺(jué),它十分高效,主要的特點(diǎn)就是將標(biāo)準(zhǔn)卷積核進(jìn)行分解計(jì)算,引入寬度乘數(shù)和分辨率乘數(shù)兩個(gè)超參數(shù)減少計(jì)算量。Andrew G.Howard等人針對(duì)COCO數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),得出了使用基于SSD框架下的這兩種模型的訓(xùn)練及測(cè)試的結(jié)果[8],如表2所示。綜合這實(shí)驗(yàn)結(jié)果可以得出,SSD框架使用MobileNet網(wǎng)絡(luò)結(jié)構(gòu)作為基礎(chǔ)網(wǎng)絡(luò)結(jié)構(gòu),雖然在檢測(cè)的準(zhǔn)確率上面會(huì)有些許下降,但是在圖像處理時(shí)的計(jì)算量和參數(shù)量會(huì)大幅度下降。在嵌入式應(yīng)用中,硬件資源一般都是有限的,機(jī)器的性能也不是很高,減少計(jì)算量,提高目標(biāo)檢測(cè)實(shí)時(shí)性非常關(guān)鍵,而使用MobileNet這種輕量級(jí)、延遲性低的檢測(cè)模型能夠顯著地提高目標(biāo)檢測(cè)的速度。
表2 VGG和MobileNet對(duì)比實(shí)驗(yàn)結(jié)果對(duì)比
危險(xiǎn)駕駛行為模型的數(shù)據(jù)集使用全新的數(shù)據(jù)集,數(shù)據(jù)集取自鎮(zhèn)江市新區(qū)大港汽渡公司。通過(guò)船舶上面對(duì)駕駛員的監(jiān)控視頻處理得到的圖片,采用專門的圖形標(biāo)注軟件對(duì)各種危險(xiǎn)駕駛行為進(jìn)行目標(biāo)對(duì)象標(biāo)注,并且轉(zhuǎn)化為標(biāo)準(zhǔn)的目標(biāo)檢測(cè)數(shù)據(jù)集格式。一般數(shù)據(jù)集格式包含Annotations、ImageSets和JPEGImages三個(gè)文件夾,Annotations文件夾保存了圖片的標(biāo)注信息,一般是xml格式;用于訓(xùn)練、驗(yàn)證和測(cè)試的樣本名稱記錄在ImmageSets文件夾,一般是txt格式;而JPEGImages文件夾保存了所有圖片,圖片的格式為JPG格式。經(jīng)過(guò)人工的篩選和標(biāo)注,我們最后搜集的圖片每類圖片各1000張,共6000張。通過(guò)水平翻轉(zhuǎn)、調(diào)節(jié)圖片對(duì)比度、多角度旋轉(zhuǎn)圖片、放大裁剪等多種方法擴(kuò)充數(shù)據(jù)集數(shù)量至10000張,其中圖片標(biāo)注文件也需隨圖片變換做相應(yīng)的坐標(biāo)變換。
危險(xiǎn)駕駛行為檢測(cè)模型在SSD模型的基礎(chǔ)上,訓(xùn)練模型的服務(wù)器GPU為GTX1060,訓(xùn)練參數(shù)如下:模型識(shí)別種類數(shù)為6;每次訓(xùn)練更新參數(shù)時(shí),批處理圖片的數(shù)量為24,即batch_size值為24;載入模型的訓(xùn)練圖片大小為300*300;初始學(xué)習(xí)率為0.004,每訓(xùn)練1000次學(xué)習(xí)率變?yōu)樯洗螌W(xué)習(xí)率的0.99倍,使用不斷減小的學(xué)習(xí)率提高模型權(quán)重值的準(zhǔn)確度,由此提高整個(gè)模型的識(shí)別精度;momentum動(dòng)量?jī)?yōu)化值為0.9;模型采用l2正則化,如式(1)所示,其作用為對(duì)最優(yōu)的元素進(jìn)行不同比例縮放;計(jì)人計(jì)車模型的總訓(xùn)練次數(shù)為20萬(wàn)次,即epoch值為200000。
本系統(tǒng)采用docker部署,docker現(xiàn)在在業(yè)界應(yīng)用越來(lái)越廣泛,而且docker運(yùn)行相當(dāng)于在一個(gè)容器里面,不會(huì)與主機(jī)中其他依賴產(chǎn)生沖突,啟動(dòng)、重啟和關(guān)閉都比較方便。根據(jù)制作的數(shù)據(jù)集和訓(xùn)練過(guò)之后的模型,我們對(duì)真實(shí)視頻進(jìn)行處理。視頻為真實(shí)室內(nèi)環(huán)境,視頻幀尺寸為450×450像素,視頻處理幀率為15fps,實(shí)現(xiàn)了實(shí)時(shí)處理。針對(duì)每種危險(xiǎn)駕駛行為,我們對(duì)檢測(cè)模型的結(jié)果和實(shí)際的情況進(jìn)行統(tǒng)計(jì),主要結(jié)果如表3所示。
表3 檢測(cè)結(jié)果
測(cè)試效果如圖5所示。針對(duì)駕駛員的低頭、閉眼、打哈欠、打電話、抽煙、轉(zhuǎn)頭這些危險(xiǎn)駕駛行為,訓(xùn)練好的危險(xiǎn)行為檢測(cè)模型都能很好地檢測(cè)出來(lái)。
圖5 測(cè)試效果圖
本文提出了一種基于SSD模型的船載危險(xiǎn)駕駛行為檢測(cè)系統(tǒng)。該系統(tǒng)主要是通過(guò)檢測(cè)模型讀取監(jiān)控視頻的實(shí)時(shí)RTSP流進(jìn)行分析,檢測(cè)到有危險(xiǎn)駕駛行為出現(xiàn)的話,就會(huì)有語(yǔ)音報(bào)警,并且檢測(cè)程序會(huì)通過(guò)MQTT數(shù)據(jù)包將該行為檢測(cè)的信息發(fā)送到遠(yuǎn)程后臺(tái)管理平臺(tái)。后臺(tái)管理平臺(tái)可以接收到這些消息并且保存到數(shù)據(jù)庫(kù)當(dāng)中并且通過(guò)界面展示,這極大地方便了管理部門查看船員的駕駛情況,也能夠避免江河流域上面交通事故的發(fā)生。從實(shí)驗(yàn)結(jié)果來(lái)看,采用SSD模型經(jīng)過(guò)數(shù)據(jù)集的訓(xùn)練之后,準(zhǔn)確度識(shí)別度為95.76%,視頻處理平均幀率為15fps。由此可見(jiàn),該船載危險(xiǎn)駕駛行為檢測(cè)系統(tǒng)檢測(cè)效果明顯,具有非常廣泛的應(yīng)用價(jià)值,如果應(yīng)用到水上交通安全上將會(huì)規(guī)避很多不必要的事故發(fā)生,保障生命安全,減少人民財(cái)產(chǎn)損失。