基于視訊結構化的應用中,目标在經過跟蹤算法後,會得到一個唯一辨別和它對應的運動軌迹,利用這兩個資料我們可以做一些後續工作:測速(交通類應用場景)、計數(交通類應用場景、安防類應用場景)以及行為檢測(交通類應用場景、安防類應用場景)。我會寫三篇文章依次介紹這三個主題。
(1)目标跟蹤之速度計算
(2)目标跟蹤之計數
(3)目标跟蹤之行為檢測
至此,三個主題都結束了。
本篇文章以交通類應用場景為例,介紹車輛異常行為分析方法。車輛異常行為通常又稱“車輛異常交通事件”,指車輛在行駛道路上出現的違法行為,一般包括 停車、逆行(倒車)、占用應急車道、擁堵等等。本篇文章分别介紹這四種車輛異常交通事件的分析方法。
注意:高速交通中,通常異常交通事件還包括行人闖入、抛灑物、煙火等,由于這些跟車輛沒有直接關聯,本文不涉及此類事件。
(停車事件)
定位目标軌迹點
前面系列文章已經提到過,目标檢測算法會輸出目标的位置,一個四元組(Left、Top、Width、Height),代表一個矩形框,該矩形框住的範圍就是圖像中目标的位置。我們在進行目标行為分析時,需要先找到一個二維點(X,Y),使它最能代表目标在地面上的位置,原因很簡單,因為畫面中的目标實際是在三維世界中的地面上移動。大家可能第一反應應該選擇矩形框的中心點(Left + Width / 2, Top + Height /2),雖然這個點非常好計算,但是實際應用中該點并不非常準确,通過它并不能準确地反映目标在地面上的實際位置。
如上圖所示,黃色矩形框代表貨車在畫面中的位置,如果選取矩形框中心點來定位車輛在路面上的位置,那麼貨車應該在行車道(右側車道)上行駛,而實際情況貨車正在超車道(左側車道)上。顯然用這種方式去判斷車輛在路面上的位置非常不準确。
另外一種方式是選取矩形底邊的中心點(Left + Width/2, Top + Height),這種方式比前一種更準确,但是當車道方向與攝像夾角非常大時,定位誤差非常明顯。
如上圖,黃色矩形框代表客車在畫面中的位置,如果選取矩形框底邊中心點來定位車輛在路面上的位置,那麼客車應該壓線了,而實際情況客車行駛正常。
實際經驗得到,隻取矩形框底邊中心點還不夠,還需要根據車輛行駛方向與垂直方向的夾角大小來動态調整該點的X指,也就是說,最終選取的點應該是 (Left + Width/2 + delta, Top + Height),其中delta可正可負,最終的效果如下:
停車
停車時,目标靜止不動,理論上目标軌迹點不變,我們隻需要判斷軌迹點在連續若幹幀之内都沒發生變化即可(Xm == Xn && Ym == Yn)。但現實場景中,由于目标檢測算法的準确性,同一個目标即使靜止不動,每一幀檢測到的矩形框也有可能不一樣(位置不同、大小不同等),最後得到的軌迹點也不會重合。是以更好的判斷方式是:目标軌迹點連續若幹幀之内歐氏距離(平面直線距離)不大于某值,比如50像素,那麼我們即可認為車輛靜止不動(停車事件發生)。
逆行(倒車)
逆行時,目标第M幀軌迹點和第N幀軌迹點的射線與道路方向之間的夾角如果大于某值,比如大于90°,那麼判定為逆行。其中M<N
占用應急車道
當車輛行駛時,判斷目标軌迹點在連續若幹幀内是否都在應急車道中,若是,則為占用應急車道,其他類似的區域事件判定邏輯與這個一樣
擁堵 和 緩行
連續若幹幀内靜止車輛數大于某值,車輛靜止的邏輯可以參照前面停車的邏輯。當路面多輛車靜止不動時,判定道路發生擁堵。該方式很簡單,但是通常情況下,除了這種堵死的情況外,我們更需要知道是否出現緩行(提前應對擁堵發生)。
緩行有兩種方式去判斷:
(1)結合前幾篇文章提到的測速,如果發現多輛行駛車輛的速度都小于某值(可以分級定義),那麼判定道路緩行;
(2)很多情況下,車速測不出來(前面文章中有提到,沒有參照物的道路測不出車速),那麼我們需要使用其他方式先判斷單個車輛是否緩行:在連續若幹幀中,車輛軌迹點直線距離小于某值,但是大于另外一個值(保證車輛沒有停止)。如果連續多幀中出現緩行的車輛數大于某值,那麼判定整個道路進入緩行狀态。
目标行為分析難點
前面所有的行為邏輯判斷全部基于理想狀态下:檢測算法比較準确,矩形方框鎖定目标比較穩定,不會出現丢幀、矩形框抖動嚴重(位置、大小跳躍厲害)。實際應用場景中,由于各種各樣的因素,目标鎖定不夠準确,會對目标行為分析造成非常大的負面影響。
另外,上面所有判斷邏輯全部基于像素機關(圖像二維坐标系),這個判斷依據存在一定缺陷,檢測算法能檢測到很遠的車輛,雖然這時候車輛一直處于運動狀态,但是它反應到平面二維畫面上時,車輛幾乎靜止不動,根據前面的判斷邏輯,這種情況會出現停車、擁堵等誤報。避免這種誤報的方式之一是盡量将攝像頭斜對行車道,而不是剛好在車道的正前方/正後方。
除此之外,還有其他一些局限性,比如上面提到的各種門檻值的調整,也是非常考驗人的一項工作。一般視訊分析應用很難同時滿足多個場景,針對不同的需求最好做一些特定的優化。