王康威,葉前程,蔣麗珍
(浙江工商大學(xué) 信息與電子工程學(xué)院,浙江 杭州 310018)
據(jù)統(tǒng)計(jì),我國(guó)汽車保有量已突破2.81億輛,且該數(shù)據(jù)還在不斷增加。與此同時(shí),因疲勞駕駛、抽煙、打電話等違規(guī)駕駛行為引發(fā)的交通事故也在不斷增多,駕駛員突發(fā)疾病因救助不及時(shí)導(dǎo)致的悲劇也常有報(bào)道。如何規(guī)范駕駛以及駕駛過程中遇到突發(fā)疾病如何求救一直是熱議話題,市場(chǎng)急需研發(fā)一款針對(duì)駕駛員危險(xiǎn)駕駛行為的預(yù)警與求救系統(tǒng)。目前市場(chǎng)上已有的相關(guān)產(chǎn)品,如疲勞駕駛檢測(cè)儀、耳夾式檢測(cè)儀等,不僅功能單一、檢測(cè)精度不高,而且價(jià)格較為昂貴,很難做到大規(guī)模地應(yīng)用推廣。目前,在輪船上有關(guān)于危險(xiǎn)駕駛行為檢測(cè)和報(bào)警系統(tǒng)的應(yīng)用,但這種檢測(cè)系統(tǒng)沒有在汽車上大規(guī)模地推廣。因此,本文設(shè)計(jì)了一款操作簡(jiǎn)單、功能豐富,且兼具危險(xiǎn)駕駛行為預(yù)警與自動(dòng)求救雙重功能的系統(tǒng),不僅實(shí)用性強(qiáng),而且成本較低,適合市場(chǎng)推廣。
本系統(tǒng)主要包括駕駛員危險(xiǎn)駕駛行為檢測(cè)、語音提醒、駕駛員突發(fā)疾病的檢測(cè)和自動(dòng)求救等功能。本系統(tǒng)包括兩種工作模式:第一種工作模式,當(dāng)駕駛員在正常駕駛過程中出現(xiàn)如抽煙、打電話、打哈欠等行為時(shí),攝像頭實(shí)時(shí)采集駕駛員的肢體動(dòng)作,并將數(shù)據(jù)存儲(chǔ)在樹莓派的存儲(chǔ)區(qū)域,樹莓派的主控單元對(duì)獲取的數(shù)據(jù)進(jìn)行分析判斷,從而判別出駕駛員是否存在違規(guī)駕駛行為,并根據(jù)判斷結(jié)果決定執(zhí)行相應(yīng)的語音提醒功能;第二種工作模式,當(dāng)駕駛員在行駛過程中出現(xiàn)如心梗等突發(fā)疾病時(shí),可按下求救按鈕,系統(tǒng)將啟動(dòng)報(bào)警求救模塊,發(fā)送求救信息和駕駛員的空間位置給事先設(shè)定的緊急聯(lián)系人,語音反復(fù)呼喊“我突發(fā)疾病遇到危險(xiǎn)了,請(qǐng)幫忙撥打120”,同時(shí)LED屏顯示求救信息。啟動(dòng)報(bào)警求救模塊的同時(shí)系統(tǒng)也啟動(dòng)了防碰撞模塊,超聲波傳感器開始實(shí)時(shí)檢測(cè)汽車與前方障礙物之間的距離,以便及時(shí)制動(dòng),減少二次傷害的發(fā)生。如果駕駛員突發(fā)疾病無法按下求救按鈕,攝像頭通過采集駕駛員的面部表情和肢體動(dòng)作,樹莓派進(jìn)行數(shù)據(jù)分析處理,判斷出駕駛員是否具有按下求救按鈕的能力。若駕駛員此時(shí)不具備該能力,系統(tǒng)將會(huì)自動(dòng)啟動(dòng)報(bào)警求救模塊和防碰撞模塊。在此基礎(chǔ)上,考慮到可能出現(xiàn)系統(tǒng)誤判的情況,增加取消報(bào)警的功能,一旦出現(xiàn)誤斷,駕駛員可按下取消按鈕,系統(tǒng)將發(fā)送相應(yīng)的取消信息給事先設(shè)定的緊急聯(lián)系人,停止語音播放和LED屏顯示,同時(shí)系統(tǒng)停止防碰撞模塊的運(yùn)行。功能設(shè)計(jì)流程如圖1所示,實(shí)驗(yàn)室產(chǎn)品實(shí)物照片如圖2所示,實(shí)驗(yàn)室產(chǎn)品經(jīng)測(cè)試已經(jīng)實(shí)現(xiàn)全部預(yù)設(shè)的功能。
圖1 系統(tǒng)功能設(shè)計(jì)流程
圖2 實(shí)驗(yàn)室產(chǎn)品圖
根據(jù)功能實(shí)現(xiàn)的流程設(shè)計(jì)系統(tǒng)的硬件架構(gòu)。系統(tǒng)硬件主要由樹莓派開發(fā)板、攝像頭、揚(yáng)聲器、GPS定位器、超聲波傳感器、求救和取消按鈕、LED顯示屏等組成,其框架如圖3所示。接通電源后,攝像頭和樹莓派同時(shí)開始工作,攝像頭將采集到的數(shù)據(jù)進(jìn)行模數(shù)轉(zhuǎn)換(A/D)傳送至樹莓派,樹莓派根據(jù)輸入的數(shù)據(jù)輸出相應(yīng)的信號(hào)。若輸出語音提醒信號(hào),該信號(hào)則會(huì)驅(qū)動(dòng)揚(yáng)聲器執(zhí)行相應(yīng)的程序;若輸出求救信號(hào),LED求救燈將會(huì)被點(diǎn)亮,經(jīng)過按鈕的選擇之后,向超聲波傳感器發(fā)送防碰撞信號(hào)和向GPS定位器發(fā)送報(bào)警信號(hào),驅(qū)動(dòng)超聲波傳感器和GPS定位器執(zhí)行相應(yīng)的程序。
圖3 系統(tǒng)硬件框架
GPS定位模塊選用的傳感器型號(hào)是微雪L76X GPS Module。傳感器像收音機(jī)一樣接收、解調(diào)衛(wèi)星的廣播C/A碼信號(hào),中心頻率為1 575.42 MHz。GPS模塊并不播發(fā)信號(hào),屬于被動(dòng)定位。由于衛(wèi)星的位置精確可知,在GPS觀測(cè)中,可得到衛(wèi)星到接收機(jī)的距離。利用三維坐標(biāo)中的距離公式,就可以組成3個(gè)方程式,解出觀測(cè)點(diǎn)的位置(,,)??紤]到衛(wèi)星的時(shí)鐘與接收機(jī)時(shí)鐘之間的鐘差,為了得到更精確的位置,引入了第4顆衛(wèi)星,形成4個(gè)方程式進(jìn)行求解,通過運(yùn)算與每個(gè)衛(wèi)星的偽距離,采用距離交會(huì)法求出接收機(jī)的經(jīng)度、緯度、高度和時(shí)間修正量這四個(gè)參數(shù)。該型號(hào)傳感器支持GPS、北斗(BDS)和QZSS多重衛(wèi)星,具有定位快、定位準(zhǔn)確和低功耗等優(yōu)點(diǎn);且該傳感器體積較小,不會(huì)阻礙駕駛員的視線。其內(nèi)部原理如圖4所示,連接方式如圖5所示。
圖4 GPS傳感器內(nèi)部原理圖
圖5 GPS模塊連接方式
系統(tǒng)采用的HC-SR04超聲波傳感器可以測(cè)量3~4 m的距離,精確度可以達(dá)到3 mm。該傳感器包括超聲波發(fā)射器、超聲波接收器和控制電路三部分,有4個(gè)引腳,連接電路如圖6所示。本系統(tǒng)向超聲波傳感器的Trig引腳發(fā)送一個(gè)10 μs的脈沖,傳感器接收到這個(gè)脈沖后發(fā)射出超聲波,同時(shí)把Echo置為高電平(在發(fā)射之前,Echo引腳一直為低電平)。通過編寫代碼記錄超聲波發(fā)射時(shí)間pulse_start和返回時(shí)間pulse_end,運(yùn)用公式可計(jì)算出障礙物與汽車的實(shí)時(shí)距離,為汽車制動(dòng)及其他模塊提供數(shù)據(jù)。
圖6 超聲波傳感器電路連接圖
將樹莓派連接攝像頭、按鈕、LED屏和揚(yáng)聲器、超聲波傳感器等器件,通過樹莓派控制各個(gè)模塊以實(shí)現(xiàn)其特定的功能。LED顯示屏一端接地,另一端接GPIO14,為其提供電源以及控制信號(hào)。GPS模塊有四個(gè)引腳,考慮到GPS模塊與樹莓派之間的串口通信,將傳感器的RX引腳連接至TXD引腳,TX引腳連接至RXD引腳。求救按鈕和取消按鈕共有三個(gè)引腳,除VCC接電源、GND接地外,求救按鈕OUT引腳接GPIO17,取消按鈕OUT引腳接GPIO16。揚(yáng)聲器通過3.5 mm口連接至樹莓派。超聲波傳感器的Trig端口接GPIO2腳,GPIO3腳接Echo。樹莓派的VCC和GND接口分別與HC-SR04的VCC和GND接口相連。1 kΩ和2 kΩ電阻組成了一個(gè)分壓電路,正極接到Echo引腳,負(fù)極與GND口相連。本電路將所有模塊整合在一起最終實(shí)現(xiàn)危險(xiǎn)駕駛預(yù)警功能和突發(fā)危險(xiǎn)報(bào)警功能。樹莓派控制電路如圖7所示。
圖7 樹莓派控制電路
在實(shí)際情況下,樹莓派不僅要處理攝像頭傳送的信息,還要根據(jù)相關(guān)的信息做出相應(yīng)的應(yīng)答,這對(duì)于樹莓派而言是一個(gè)極其復(fù)雜的過程,因此針對(duì)軟件方面做出相應(yīng)算法上的改進(jìn),以解決姿勢(shì)識(shí)別不準(zhǔn)確和圖像處理速度過慢等問題。
考慮到目前使用的Dlib68特征點(diǎn)和OpenCV膚色動(dòng)態(tài)追蹤圖像處理達(dá)不到理想效果。為獲得更好的效果,精確識(shí)別違規(guī)駕駛動(dòng)作,決定獲取臉部和手部的關(guān)鍵點(diǎn)信息。為此,本項(xiàng)目引入了機(jī)器視覺中一個(gè)經(jīng)典開源模型—OpenPose(人體姿態(tài)識(shí)別模型),如圖8所示。輸入一張圖片,經(jīng)過一個(gè) backbone(比如 vgg、resnet、mobilenet),再經(jīng)過 6個(gè)stage,每個(gè)stage有兩個(gè)branch:一個(gè)用來檢測(cè)heatmap;另一個(gè)用來檢測(cè)vectmap。通過heatmap和vectmap就可以知道圖片中所有關(guān)鍵點(diǎn),再通過PAFs把點(diǎn)對(duì)應(yīng)到每個(gè)人身上。OpenPose人體姿態(tài)識(shí)別技術(shù)基于卷積神經(jīng)網(wǎng)絡(luò)和監(jiān)督學(xué)習(xí)的方法,并包含以Caffe為框架開發(fā)的開源庫,可以實(shí)現(xiàn)對(duì)人體動(dòng)作、面部表情、手指運(yùn)動(dòng)等姿態(tài)的識(shí)別,適用于單人和多人,具有極好的魯棒性。
圖8 OpenPose模型
姿勢(shì)識(shí)別模塊主要是直接用OpenCV中的dnn.readNetFromCaffe()來調(diào)用模型,利用如圖9中的模型關(guān)鍵點(diǎn)位置圖,把人體關(guān)鍵點(diǎn)提取出來;再將當(dāng)前關(guān)節(jié)的位置和對(duì)應(yīng)的置信度提取出來,比對(duì)所有點(diǎn)的置信度和設(shè)置好的閾值,從而確定圖片上真正存在的關(guān)節(jié)點(diǎn)。
圖9 COCO模型關(guān)鍵點(diǎn)位圖
圖像處理時(shí)采用神經(jīng)網(wǎng)絡(luò)算法通過卷積神經(jīng)對(duì)圖片進(jìn)行降維處理,然后進(jìn)行分層、展開、連接,最后卷積形成2D矢量圖。該算法包含以下四個(gè)步驟:
(1)神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)
神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖10所示。首先通過VGG-19進(jìn)行特征提取,然后利用兩分支的多階段CNN,第一分支用來預(yù)測(cè) confidence map St,第二分支用來預(yù)測(cè)PAFSLT。在每個(gè)階段之后,來自兩個(gè)分支的預(yù)測(cè)以及圖像特征被連接用于下一階段。為了既增加感受野,同時(shí)局部不能模糊,原始圖像以四個(gè)固定的scale縮放后進(jìn)入神經(jīng)網(wǎng)絡(luò),將四個(gè)預(yù)測(cè)值求平均即為最后的結(jié)果。
圖10 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
(2)找到關(guān)節(jié)
通過第一步,獲得了關(guān)節(jié)的 heatmap。如圖11所示,第二步要從heatmap提取關(guān)節(jié)的具體位置。應(yīng)用非最大抑制(NMS)算法來獲得heatmap中的峰值,以此值的置信度作為當(dāng)前part的score,算法輸出值為:第一個(gè)part的所有值等于[(,,, 0), (,,, 1), ...];第二個(gè)part的所有值等于[(h,w,s,), (h,w,s,+1), ...]。
圖11 關(guān)節(jié)的heatmap圖
(3)找到肢體連接
通過第二步,獲得了關(guān)節(jié)的信息(位置和分?jǐn)?shù));接下來,用關(guān)節(jié)信息和PAF來獲得肢體連接。模型包含19個(gè)肢體,確定每一肢體所對(duì)應(yīng)的兩個(gè)part和PAF,將兩個(gè)part之間的PAF信息進(jìn)行積分所得結(jié)果作為該肢體的置信度。例如,要尋找所有的左上臂,已經(jīng)有左肩和左肘part信息以及左上臂的PAF信息,將左肩中的所有part與左肘的所有part進(jìn)行匹配,計(jì)算兩個(gè)part間的PAF信息的積分,作為當(dāng)前part相連的score。最后將所有score排序來確定part之間是否相連。這樣就獲得了所有的連接信息,每一個(gè)連接都可以看作是一個(gè)肢體。
(4)拼接肢體構(gòu)成人
在獲得了所有肢體后,將擁有相同關(guān)節(jié)的肢體看作是同一個(gè)人的肢體,構(gòu)成一個(gè)完整的人。區(qū)別于以往的OpenCV,本系統(tǒng)的識(shí)別功能采用了最新的OpenPose模型,相比之前的CPN和PoseNet來說算法精度更高、算法速度也會(huì)更快。OpenPose模型能夠更為精確地獲取臉部和手部關(guān)鍵點(diǎn)信息,精確識(shí)別打電話、抽煙、打哈欠等動(dòng)作,相較之前的模型降低了誤判的可能性。除此之外,OpenPose模型可以做到更快地識(shí)別動(dòng)作,提高動(dòng)作識(shí)別效率。
在緊急求救功能中,設(shè)計(jì)了短信發(fā)送模塊。該模塊在駕駛員出現(xiàn)突發(fā)疾病按下求救按鈕時(shí),會(huì)發(fā)送駕駛員空間位置和求救信息給駕駛員的緊急聯(lián)系人,以便駕駛員及時(shí)得到救助。該模塊的流程如圖12所示。
圖12 短信發(fā)送模塊流程
短信發(fā)送模塊的主要功能是提供一個(gè)虛擬號(hào)碼向事先設(shè)定好的緊急聯(lián)系人發(fā)送信息。本模塊是在Twilio庫的基礎(chǔ)上進(jìn)行編寫的。短信發(fā)送原理如圖13所示,在Twilio網(wǎng)站完成基本信息的注冊(cè),從賬戶界面獲取ACCOUNT SID和AUTH TOKEN以及Phone Number,并且在網(wǎng)站完成緊急聯(lián)系人的保存;之后Client函數(shù)調(diào)用在Twilio網(wǎng)站申請(qǐng)的SID和TOKEN,從而獲得個(gè)人信息;再通過編輯短信內(nèi)容以及收信人和發(fā)信人號(hào)碼,并結(jié)合其他模塊來實(shí)現(xiàn)短信發(fā)送。
圖13 短信發(fā)送原理圖
本文對(duì)危險(xiǎn)駕駛行為檢測(cè)與求救系統(tǒng)進(jìn)行了全面、規(guī)范的分析,從軟件與硬件兩個(gè)角度對(duì)系統(tǒng)進(jìn)行了設(shè)計(jì)與制作,實(shí)驗(yàn)室已實(shí)現(xiàn)產(chǎn)品設(shè)計(jì)的全部功能。與現(xiàn)有產(chǎn)品相比,該系統(tǒng)提高了對(duì)危險(xiǎn)駕駛行為的檢測(cè)精度,并在此基礎(chǔ)上設(shè)計(jì)并實(shí)現(xiàn)了針對(duì)駕駛員突發(fā)疾病時(shí)的緊急求救功能,為駕駛員的生命安全增添了一道有力的保障。后續(xù)將進(jìn)一步完善系統(tǒng),將系統(tǒng)與駕駛車輛進(jìn)行深度融合,并在不同的使用場(chǎng)景下進(jìn)行相關(guān)的實(shí)驗(yàn)測(cè)試,以適應(yīng)市場(chǎng)的需要并加以推廣。