張魯江
(濱州學院 信息工程學院,濱州 256600)
當今世界每天都有大量的交通事故發生[1],其中碰撞事故占交通事故總量的90%左右[2].當碰撞事故發生時,如果車輛能夠自動發出報警,則有助于降低事故的死亡率,這種技術稱為車輛緊急呼叫(Automatic Crash Notification)系統,調查表明該技術能有效的降低車禍的死亡率[3,4].因為如果急救部門能夠在第一時間收到報警信息,則可以迅速出動進行搶救,從而避免因延誤造成的死亡.實現車輛自動報警的前提是車輛碰撞的自動檢測,這種技術對于社會上的一些行業也很有價值.例如,保險公司為車險業務推出了雙免服務,但騙保導致的理賠風險增大,因此希望能夠自動檢驗車輛事故的真偽,而出租車公司和物流公司等擁有大量車輛的企業需要實時監控車輛的運行狀況.
車輛碰撞的自動檢測可分為兩大類:一類是碰撞的預警檢測,也就是預測行駛中的車輛可能發生的碰撞[5-7],從而提前發出警告;另一類是碰撞事件的檢測[8],也就是碰撞發生后的實時檢測.本文的研究屬于后者.目前此類研究多集中于車輛被動式安全系統的碰撞檢測,文獻[8]綜述了該領域常用的碰撞檢測算法,由于主要應用于安全氣囊等被動式防護系統的碰撞觸發,必須在極短的時間內完成碰撞的識別,以便給防護系統的點火啟動留下足夠的時間,因此只能進行簡單的計算,如速度和加速度的變化率、位移和變形、信號的能量與功率等.當計算結果超過某個閾值時,則認為發生碰撞,經驗公式的色彩濃厚.而且只能判斷是否發生碰撞,而無法判斷車輛的損傷程度.
本文提出了一種基于機器學習的車輛碰撞檢測方法.該方法用于車輛的遠程監控,而非車輛被動式安全系統.不但能檢測碰撞是否發生,還能同時檢測車輛的損傷程度.由于使用機器學習方法[9]對車輛的信號進行分析,因此具有更好的適應性.
車輛碰撞時產生的信號明顯異于正常行駛狀態下信號[10].圖1是車輛的加速度信號曲線圖,其中脈沖部分是車輛發生碰撞時的信號,而相對平坦的部分則是正常行駛時的信號,由圖中可以看出,兩類信號的區別比較明顯.檢測碰撞事件就是從采集到的信號中識別出碰撞信號,但是碰撞類型不同,碰撞信號也會有所變化.圖1(a)和圖1(b)分別是不同碰撞場景下產生的信號,具有明顯的差異.簡單的計算難以將各類碰撞信號都識別出來,應當使用機器學習算法進行分類.
系統實時的采集速度和加速度信號.X 方向的加速度信號和Y 方向的加速度信號分別采集,X 方向是車輛行駛的方向,Y 方向是與車輛行駛方向垂直的方向.速度信號不考慮方向,只考慮大小.采集信號時,將時間劃分為均勻的段,每一段是一個采樣窗口,窗口尺寸根據經驗值設定.每采集滿一個窗口,就分析判斷該窗口內的信號是正常信號還是碰撞信號.
如果是碰撞信號,則進一步判斷車輛的損傷程度.直接判斷整車的損傷程度比較困難,而判斷車輛各部件的損傷程度則相對容易.此外,要獲得關于車輛損傷的完整信息,需要知道各部件的損傷程度.車輛發生時碰撞時,沖擊力會作用至各個部件,對不同的部件造成不同程度的損傷,判斷部件的損傷程度本質上是將沖擊信號映射至部件損傷程度的過程.機器學習中的核方法具有強大的非線性映射能力,建立在核方法基礎上的支持向量機具有出色的分類能力[11].先使用支持向量機判斷各部件的損傷程度,然后將各部件的損傷程度作為支持向量機的輸入特征,判斷整車的損傷程度.

圖1 轎車碰撞的橫向加速度信號曲線
如圖2所示,在每輛汽車上安裝一部前端設備,通過車載無線網絡[12]和一個后臺服務器相聯.前端設備的處理流程如圖3所示:實時的采集車輛的速度和加速度信號,每采集滿一個窗口,就從信號中抽取特征,然后用簡單的算法初步判斷是否發生碰撞,將可能的碰撞信號發送給后臺服務器.這相當于對所有信號先做個過濾,留下候選的碰撞信號.前端設備因為有實時性的要求,因此只能進行簡單的計算,并且不對信號做濾波處理.

圖2 系統架構示意圖
后臺服務器的處理流程如圖4所示:接收前端設備發來的信號,對信號進行濾波并抽取特征,然后使用機器學習算法確認是否發生碰撞;如果發生則進一步判斷各部件的損傷程度,并在此基礎上判斷整車的損傷程度.

圖4 后臺服務器的處理流程
在碰撞的過程中,加速度的信號變化劇烈,包含了噪聲成分(如圖1所示),需要對加速度信號進行濾波,以便從中提取穩定的特征.在實驗的基礎上,確定使用切比雪夫I 型低通濾波器[13].速度信號不需要濾波,取窗口中的速度最大值作為特征.
從車輛的速度和加速度信號中提取兩類特征,一類用于判斷碰撞是否發生,另一類用于判斷部件的損傷程度.X 方向的加速度信號和Y 方向的加速度信號各自提取一組相同的特征,然后合并成一個向量.在前端設備上提取特征不需要濾波,而在后臺服務器上提取特征要先進行濾波.
設系統從t0時刻開始采集信號,ti時刻的采樣信號為sti,i=0,1,2···,采樣窗口尺寸為h,Δt=sti?sti?1為采樣時間間隔.信號流 (st0,st1,st2,···)的第1 個采樣窗口為w1=(st0,st1,···,sth?1),第k個采樣窗口為wk=(st(k?1)h,st(k?1)h+1,···,stkh?1),k=1,2,···.
判斷車輛碰撞所使用的特征用V表示,V=[Vx,Vy],是X 方向加速度信號的特征,是Y 方向加速度信號的特征.具體包括:加速度絕對值的最大值加速度最大值與最小值的差值加速度的平均能量加速度曲線上各點斜率的絕對值的平均值
判斷各零件損傷程度所使用的特征用U表示,是X 方向的加速度信號的特征,是Y 方向的加速度信號的特征.具體包括:速度值(u0)、加速度絕對值的最大值加速度最大值和最小值的差值加速度最大值到最小值之間的平均能量加速度最大值到最小值的連線的斜率絕對值加速度最大值到最小值的橫坐標距離加速度曲線上各點斜率的絕對值的平均值加速度信號離散傅里葉變換的0 到38 頻譜的各頻率幅值
不失一般性,設X 方向加速度信號的當前采樣窗口為wx=(st1,st2,···,sth),則X 方向的特征計算公式為:

各特征的量綱或取值范圍不同,需要進行歸一化處理,使用Z-score 方法,歸一化后各特征的取值范圍均為[-1,+1]
在前端設備初步判斷車輛是否發生碰撞,對實時性要求比較高,因此使用計算簡單的邏輯回歸[14].將碰撞信號錯分為非碰撞信號的代價要遠高于把非碰撞信號錯分為碰撞信號的代價,在前端設備寧愿將非碰撞信號誤分為碰撞信號,而在后臺服務器準確判別時排除掉,也不愿將碰撞信號誤分為非碰撞信號,從而造成碰撞事件的漏報.這屬于代價敏感學習問題,在使用邏輯回歸分類器時,可以通過提高碰撞類別的樣本權重,而降低非碰撞類別的樣本權重來加以解決[15].由于希望碰撞信號的查全率盡可能高,因此還需要調低邏輯回歸的分類閾值,以便盡量不遺漏碰撞信號.
在后臺服務器判斷接收到的信號是否為碰撞信號,不存在迫切的實時性要求,而對準確率的要求更高,因此使用支持向量機對碰撞信號進行分類.判斷各部件的損傷程度同樣使用支持向量機,這是個非線性分類問題,借助核方法將信號從輸入空間映射到高維的特征空間,從而提高該問題的線性可分性.將各部件的損傷程度作為支持向量機的輸入特征,可以判斷出整車的損傷程度.不管是仿真碰撞還是實車碰撞,想獲得足夠多的碰撞樣例來訓練深度神經網絡,在時間、成本以及計算力上都是很困難的,因此沒有使用目前流行的深度學習[16],而選擇非常適合于中小樣本的支持向量機.
訓練數據包括正常信號(非碰撞樣例) 和碰撞信號(碰撞樣例).每個碰撞樣例都由專業鑒定師判定各部件的損傷程度和整車的損傷程度.汽車上的部件很多,只考慮對車輛損傷起重要作用的部件.部件的損傷程度分為4 級,分別是1、2、3、4 級.從1 級到4 級損傷程度逐級加重,1 級表示沒有損傷,4 級表示損傷嚴重.整車的損傷級別與部件的相同,也是分為4 級.
給每個樣例標上1 或0 的標簽,1 表示碰撞樣例,0 表示非碰撞樣例,并標注各個部件的損傷級別和整車的損傷級別.然后從每個樣例中都抽取用于判斷碰撞是否發生的特征和用于判斷部件損傷程度的特征.判斷部件的損傷程度時,需要為每個部件單獨訓練一個分類器,訓練每個分類器都要復用所有的碰撞樣例,根據對某個部件造成的損傷級別,將每個樣例歸為4 類之一,如圖5所示.

圖5 判斷部件損傷程度的訓練樣例復用示意圖
將一個碰撞樣例造成的各個部件的損傷級別作為支持向量機的輸入特征,可以判斷這個碰撞樣例對整車造成損傷程度.由于部件的損傷級別是有序的離散值,因此需要先使用Z-score 方法進行歸一化處理.
實驗數據來自實車的碰撞實驗.在實驗中,選擇了有限方形剛性壁、防護欄、防撞桶、柱狀體、路緣石這5 種典型的碰撞物構建5 種測試工況.每種工況生成160 個實驗樣例,其中80 個為非碰撞樣例,80 個為碰撞樣例.在訓練時,使用k-折交叉驗證調優超參數,k的值取4.
在前端設備把碰撞信號誤分為非碰撞信號的代價要高于把非碰撞信號誤分為碰撞信號的代價,因此要盡量做到不遺漏碰撞信號.這屬于代價敏感學習問題,可以通過調整類別權重來解決,在使用邏輯回歸分類時,將碰撞類別的權重設為0.6,而非碰撞類別的權重設為0.4.同時,為了提高碰撞信號的查全率,將分類閾值降低為0.4.將每種工況的實驗樣例按照3:1 的比例分裂為訓練樣例和測試樣例,將所有的訓練樣例合在一起組成訓練集,而各個工況的測試樣例單獨組成測試集,以便觀察各個工況的測試結果.
測試結果如表1所示,提供碰撞類別的查全率和查準率兩個性能指標.從表中可以看出,碰撞類別的查全率在4 個工況上達到100%,查準率也都超過了90%.由于碰撞信號和非碰撞信號的區別明顯,因此即使邏輯回歸這種簡單的分類器也能以較高的準確率進行區分.

表1 在前端設備檢測碰撞信號的測試結果(%)
當前端設備檢測出可能的碰撞信號后,將信號發送給后臺服務器,使用準確率更高的支持向量機判斷該信號是否是碰撞信號.后臺服務器使用的訓練數據和前端設備的訓練數據相同,而將前端設備在測試過程中發送給后臺服務器的信號作為測試數據.實驗結果如表2所示,多數工況達到了100%的準確率.由于實驗數據有限,這并不意味著分類器具有100%的泛化性能,有待使用更多的實驗數據進行測試.

表2 在后臺服務器確認碰撞信號的測試結果(%)
當后臺服務器確認發生碰撞后,接下來判斷各部件的損傷程度.將各個工況的碰撞樣例合在一起,按照3:1 的比例分裂為訓練集和測試集,然后按照2.3 節所述的方式(見圖5)為各個部件組織訓練集,為每個部件訓練一個支持向量機分類器.總共有100 個測試樣例,其中每個測試樣例都要分別用每個部件的分類器測試一下.測試結果如表3所示,大多數部件的準確率較高,少數部件的準確率低于80%.從測試結果來看,對于部件損傷程度的判斷還有待改進提高.
當判斷出車輛各部件的損傷程度后,接下來使用支持向量機判斷整車的損傷程度.訓練集與3.3 節的相同,而測試數據則由3.3 節的100 個測試樣例的輸出結果構成,也就是將每個碰撞樣例造成的各部件的損傷級別作為輸入特征.測試結果如表4所示,分類準確率不高.由于將3.3 節的測試結果作為輸入特征,因此3.3 節的分類錯誤會影響本階段的分類準確率.但測試結果表明該方法是有效的,遠高于隨機猜測的準確率.

表3 在后臺服務器判斷各部件損傷程度的測試結果(%)

表4 后臺服務器判斷整車損傷程度的測試結果(%)
提出了一種基于機器學習技術的碰撞檢測方法,用于車輛的遠程監控,可以實時的檢測車輛的碰撞事件.以往的碰撞檢測算法多用于車輛被動安全系統的觸發,難以用于車輛的在線監控,且只能檢測碰撞是否發生.本文提出的方法除了能檢測碰撞是否發生,還能檢測車輛的損傷程度,從而提供更全面的信息.從實驗結果來看,該方法對于碰撞事件的檢測達到了較高的準確率,對于碰撞損傷的檢測也是有效的.