基於視頻結構化的應用中,目標在通過跟蹤算法後,會獲得一個惟一標識和它對應的運動軌跡,利用這兩個數據咱們能夠作一些後續工做:測速(交通類應用場景)、計數(交通類應用場景、安防類應用場景)以及行爲檢測(交通類應用場景、安防類應用場景)。我會寫三篇文章依次介紹這三個主題。html
(1)目標跟蹤之速度計算算法
(2)目標跟蹤之計數優化
(3)目標跟蹤之行爲檢測spa
至此,三個主題都結束了。視頻
本篇文章以交通類應用場景爲例,介紹車輛異常行爲分析方法。車輛異常行爲一般又稱「車輛異常交通事件」,指車輛在行駛道路上出現的違法行爲,通常包括 停車、逆行(倒車)、佔用應急車道、擁堵等等。本篇文章分別介紹這四種車輛異常交通事件的分析方法。htm
注意:高速交通中,一般異常交通事件還包括行人闖入、拋灑物、煙火等,因爲這些跟車輛沒有直接關聯,本文不涉及此類事件。blog
(停車事件)事件
定位目標軌跡點get
前面系列文章已經提到過,目標檢測算法會輸出目標的位置,一個四元組(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)不少狀況下,車速測不出來(前面文章中有提到,沒有參照物的道路測不出車速),那麼咱們須要使用其餘方式先判斷單個車輛是否緩行:在連續若干幀中,車輛軌跡點直線距離小於某值,可是大於另一個值(保證車輛沒有中止)。若是連續多幀中出現緩行的車輛數大於某值,那麼斷定整個道路進入緩行狀態。
目標行爲分析難點
前面全部的行爲邏輯判斷所有基於理想狀態下:檢測算法比較準確,矩形方框鎖定目標比較穩定,不會出現丟幀、矩形框抖動嚴重(位置、大小跳躍厲害)。實際應用場景中,因爲各類各樣的因素,目標鎖定不夠準確,會對目標行爲分析形成很是大的負面影響。
另外,上面全部判斷邏輯所有基於像素單位(圖像二維座標系),這個判斷依據存在必定缺陷,檢測算法能檢測到很遠的車輛,雖然這時候車輛一直處於運動狀態,可是它反應到平面二維畫面上時,車輛幾乎靜止不動,根據前面的判斷邏輯,這種狀況會出現停車、擁堵等誤報。避免這種誤報的方式之一是儘可能將攝像頭斜對行車道,而不是恰好在車道的正前方/正後方。
除此以外,還有其餘一些侷限性,好比上面提到的各類閾值的調整,也是很是考驗人的一項工做。通常視頻分析應用很難同時知足多個場景,針對不一樣的需求最好作一些特定的優化。