[AI开发]目标跟踪之行为分析
基于視頻結(jié)構(gòu)化的應(yīng)用中,目標(biāo)在經(jīng)過跟蹤算法后,會(huì)得到一個(gè)唯一標(biāo)識(shí)和它對應(yīng)的運(yùn)動(dòng)軌跡,利用這兩個(gè)數(shù)據(jù)我們可以做一些后續(xù)工作:測速(交通類應(yīng)用場景)、計(jì)數(shù)(交通類應(yīng)用場景、安防類應(yīng)用場景)以及行為檢測(交通類應(yīng)用場景、安防類應(yīng)用場景)。我會(huì)寫三篇文章依次介紹這三個(gè)主題。
(1)目標(biāo)跟蹤之速度計(jì)算
(2)目標(biāo)跟蹤之計(jì)數(shù)
(3)目標(biāo)跟蹤之行為檢測
至此,三個(gè)主題都結(jié)束了。
本篇文章以交通類應(yīng)用場景為例,介紹車輛異常行為分析方法。車輛異常行為通常又稱“車輛異常交通事件”,指車輛在行駛道路上出現(xiàn)的違法行為,一般包括 停車、逆行(倒車)、占用應(yīng)急車道、擁堵等等。本篇文章分別介紹這四種車輛異常交通事件的分析方法。
注意:高速交通中,通常異常交通事件還包括行人闖入、拋灑物、煙火等,由于這些跟車輛沒有直接關(guān)聯(lián),本文不涉及此類事件。
(停車事件)
?
定位目標(biāo)軌跡點(diǎn)
前面系列文章已經(jīng)提到過,目標(biāo)檢測算法會(huì)輸出目標(biāo)的位置,一個(gè)四元組(Left、Top、Width、Height),代表一個(gè)矩形框,該矩形框住的范圍就是圖像中目標(biāo)的位置。我們在進(jìn)行目標(biāo)行為分析時(shí),需要先找到一個(gè)二維點(diǎn)(X,Y),使它最能代表目標(biāo)在地面上的位置,原因很簡單,因?yàn)楫嬅嬷械哪繕?biāo)實(shí)際是在三維世界中的地面上移動(dòng)。大家可能第一反應(yīng)應(yīng)該選擇矩形框的中心點(diǎn)(Left + Width / 2, Top + Height /2),雖然這個(gè)點(diǎn)非常好計(jì)算,但是實(shí)際應(yīng)用中該點(diǎn)并不非常準(zhǔn)確,通過它并不能準(zhǔn)確地反映目標(biāo)在地面上的實(shí)際位置。
如上圖所示,黃色矩形框代表貨車在畫面中的位置,如果選取矩形框中心點(diǎn)來定位車輛在路面上的位置,那么貨車應(yīng)該在行車道(右側(cè)車道)上行駛,而實(shí)際情況貨車正在超車道(左側(cè)車道)上。顯然用這種方式去判斷車輛在路面上的位置非常不準(zhǔn)確。
另外一種方式是選取矩形底邊的中心點(diǎn)(Left + Width/2, Top + Height),這種方式比前一種更準(zhǔn)確,但是當(dāng)車道方向與攝像夾角非常大時(shí),定位誤差非常明顯。
如上圖,黃色矩形框代表客車在畫面中的位置,如果選取矩形框底邊中心點(diǎn)來定位車輛在路面上的位置,那么客車應(yīng)該壓線了,而實(shí)際情況客車行駛正常。
實(shí)際經(jīng)驗(yàn)得到,只取矩形框底邊中心點(diǎn)還不夠,還需要根據(jù)車輛行駛方向與垂直方向的夾角大小來動(dòng)態(tài)調(diào)整該點(diǎn)的X指,也就是說,最終選取的點(diǎn)應(yīng)該是 (Left + Width/2 + delta, Top + Height),其中delta可正可負(fù),最終的效果如下:
?
停車
停車時(shí),目標(biāo)靜止不動(dòng),理論上目標(biāo)軌跡點(diǎn)不變,我們只需要判斷軌跡點(diǎn)在連續(xù)若干幀之內(nèi)都沒發(fā)生變化即可(Xm == Xn && Ym == Yn)。但現(xiàn)實(shí)場景中,由于目標(biāo)檢測算法的準(zhǔn)確性,同一個(gè)目標(biāo)即使靜止不動(dòng),每一幀檢測到的矩形框也有可能不一樣(位置不同、大小不同等),最后得到的軌跡點(diǎn)也不會(huì)重合。因此更好的判斷方式是:目標(biāo)軌跡點(diǎn)連續(xù)若干幀之內(nèi)歐氏距離(平面直線距離)不大于某值,比如50像素,那么我們即可認(rèn)為車輛靜止不動(dòng)(停車事件發(fā)生)。
?
?
逆行(倒車)
逆行時(shí),目標(biāo)第M幀軌跡點(diǎn)和第N幀軌跡點(diǎn)的射線與道路方向之間的夾角如果大于某值,比如大于90°,那么判定為逆行。其中M<N
占用應(yīng)急車道
當(dāng)車輛行駛時(shí),判斷目標(biāo)軌跡點(diǎn)在連續(xù)若干幀內(nèi)是否都在應(yīng)急車道中,若是,則為占用應(yīng)急車道,其他類似的區(qū)域事件判定邏輯與這個(gè)一樣
?
擁堵 和 緩行
連續(xù)若干幀內(nèi)靜止車輛數(shù)大于某值,車輛靜止的邏輯可以參照前面停車的邏輯。當(dāng)路面多輛車靜止不動(dòng)時(shí),判定道路發(fā)生擁堵。該方式很簡單,但是通常情況下,除了這種堵死的情況外,我們更需要知道是否出現(xiàn)緩行(提前應(yīng)對擁堵發(fā)生)。
緩行有兩種方式去判斷:
(1)結(jié)合前幾篇文章提到的測速,如果發(fā)現(xiàn)多輛行駛車輛的速度都小于某值(可以分級定義),那么判定道路緩行;
(2)很多情況下,車速測不出來(前面文章中有提到,沒有參照物的道路測不出車速),那么我們需要使用其他方式先判斷單個(gè)車輛是否緩行:在連續(xù)若干幀中,車輛軌跡點(diǎn)直線距離小于某值,但是大于另外一個(gè)值(保證車輛沒有停止)。如果連續(xù)多幀中出現(xiàn)緩行的車輛數(shù)大于某值,那么判定整個(gè)道路進(jìn)入緩行狀態(tài)。
?
目標(biāo)行為分析難點(diǎn)
前面所有的行為邏輯判斷全部基于理想狀態(tài)下:檢測算法比較準(zhǔn)確,矩形方框鎖定目標(biāo)比較穩(wěn)定,不會(huì)出現(xiàn)丟幀、矩形框抖動(dòng)嚴(yán)重(位置、大小跳躍厲害)。實(shí)際應(yīng)用場景中,由于各種各樣的因素,目標(biāo)鎖定不夠準(zhǔn)確,會(huì)對目標(biāo)行為分析造成非常大的負(fù)面影響。
另外,上面所有判斷邏輯全部基于像素單位(圖像二維坐標(biāo)系),這個(gè)判斷依據(jù)存在一定缺陷,檢測算法能檢測到很遠(yuǎn)的車輛,雖然這時(shí)候車輛一直處于運(yùn)動(dòng)狀態(tài),但是它反應(yīng)到平面二維畫面上時(shí),車輛幾乎靜止不動(dòng),根據(jù)前面的判斷邏輯,這種情況會(huì)出現(xiàn)停車、擁堵等誤報(bào)。避免這種誤報(bào)的方式之一是盡量將攝像頭斜對行車道,而不是剛好在車道的正前方/正后方。
除此之外,還有其他一些局限性,比如上面提到的各種閾值的調(diào)整,也是非常考驗(yàn)人的一項(xiàng)工作。一般視頻分析應(yīng)用很難同時(shí)滿足多個(gè)場景,針對不同的需求最好做一些特定的優(yōu)化。
?
轉(zhuǎn)載于:https://www.cnblogs.com/xiaozhi_5638/p/11178029.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的[AI开发]目标跟踪之行为分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从尾到头打印单向链表
- 下一篇: 常考的js笔试语句