多目標跟蹤 | AI產品經理需要了解的CV通識(三)

https://blog.csdn.net/pA2elX78qaJTADH/article/details/79042736

 

0?wx_fmt=jpeg

 

多目標跟蹤(MOT, Multiple Object Tracking)

多目標跟蹤是CV領域一個熱門方向,廣泛應用於機器人導航、智能監控視頻、工業檢測、航空航天等領域。主要任務是找到圖像序列中運動的物體,並將不同幀的運動物體一一對應,最後給出不同物體的運動軌跡

 

1

 

術語瞭解

1、檢測:定位目標在圖像中的位置。檢測方法很多,例如幀間差分法、背景減除法、光流法等等;另外,檢測常與識別結合。

2、跟蹤:在連續圖像序列中完成對目標的檢測,並把物理意義下同一目標相關聯。

3、軌跡(Trajectory):一條軌跡對於這一目標在一段時間內的位置序列;是多目標跟蹤系統的輸出量。

4、數據關聯:用於解決目標間的匹配問題;是多目標跟蹤的核心問題。

5、跟蹤置信度:跟蹤算法反應每一次跟蹤的可靠程度。

 

2

 

技術流程詳解

 

0?wx_fmt=png

1、圖像採集

多目標跟蹤對於圖像採集要求評估的因素與人臉識別差別不大。詳見上一篇文章《人臉識別 | AI產品經理需要了解的CV通識(二)》。

 

2、圖像預處理

典型的圖像預處理方法是直方圖均衡濾波

1)直方圖均衡

直方圖描述了一副圖像的灰度級內容,而直方圖均衡化的主要目的,是爲了提高對比度和灰度色調的變化,使圖像更加清晰

0?wx_fmt=png

2)濾波

圖像濾波的主要目的是,在保持圖像特徵的情況下進行噪聲消除,具體可以分爲線性濾波非線性濾波。非線性濾波相比線性濾波來說,更能保護圖像細節

0?wx_fmt=png

3、基於深度學習的多目標檢測識別

目標檢測的實質是多目標的定位,即要在圖片中定位多個目標物體

例如下圖,既要定位各個目標,還需要將不同目標用不同顏色的框表示。

0?wx_fmt=png

(By 深思考人工智能)

1)基於深度學習的目標檢測算法:YOLO、YOLOv2、YOLO9000

YOLO(You Only Look Once)是基於深度學習方法的端到端實時目標檢測系統。YOLO的升級版有兩種:YOLOv2和YOLO9000。YOLO9000可以識別超過9000類別。

 

YOLO對圖片的處理步驟主要分爲三個部分:

a.將圖片縮放到448*448大小

b.運行卷積網絡

c.設置模型置信度閾值,輸出結果

 

0?wx_fmt=jpeg

(By 代碼學習者coding)

 

2)基於深度學習的目標檢測算法:SSD

SSD(Single Shot MultiBOX Detector),截止目前是主要的檢測框架之一,相比Fast-RNN速度更快;相比YOLO有明顯的mAP優勢(mAP:平均正確率),但不及YOLO9000。

SSD缺點:

a.調試過程非常依賴經驗

b.檢測小目標的召回率值不是很高

 

3)YOLO和SSD效果比較

 

0?wx_fmt=png

(By 代碼學習者coding)

從圖上可以看出,YOLO漏檢率較高,SSD相對來說表現較好。

 

4)目標檢測識別相關指標

a.精確率:計算方式詳見《人臉識別 | AI產品經理需要了解的CV通識(二)

b.召回率:同上。

c.識別精度:目標檢測中衡量檢測出精度的指標是平均正確率均值mAP(mean average precision)

首先我們瞭解一下AP(平均正確率)

平均正確率:precision/recall曲線下方圍成的曲面面積,如下圖: 

 

0?wx_fmt=png

 

其中橫座標是recall,縱座標是precision。AP是這個曲線下的面積,而mAP就是多個類別AP的平均值,這個值介於0到1之間,且越大越好

d.檢測響應:檢測過程的輸出量。

e.識別效率:識別的速度。相對應選擇效率極大化的迭代算法。

f.交併比(IoU):可以理解爲系統預測出來的框與原來圖中標記框的重合程度,最理想的情況是完全重疊,即比值爲1。

 

0?wx_fmt=png

計算公式:

 

0?wx_fmt=png

 

4、多目標跟蹤

下圖中的曲線是該目標的跟蹤路徑,圖中線條即代表各個目標的軌跡

 

0?wx_fmt=png

 

目前跟蹤的困難點:

a.遮擋、目標消失後再出現,會有丟失目標的現象;

b.相似目標容易被當成同一目標;

由於以上原因,在實際場景裏多目標跟蹤可能會發生人員重複檢測、漏檢、同一目標多條軌跡等情況。如果需求對人員統計非常嚴格,可以考慮由其他方案完成。多目標跟蹤應用於一個區域(一個攝像頭畫面內),計算該區域的目標數以及目標跟蹤這樣的場景會更好。

 

3

 

多目標跟蹤的應用場景

目標識別常用來確定某畫面或視頻中包含什麼物體、各個物體在什麼位置、各個物體的軌跡。因此常用於監控,人機交互和虛擬現實的場景。

 

1)人員檢測:計算畫面中行人的數目,並確定其位置。

0?wx_fmt=png

 

應用場景:

a.可用於計算區域人員密度過高告警

 

0?wx_fmt=png

 

產品功能考慮:在監控畫面對區域進行劃分,並對人員密度(梳理)進行設置。閾值的設置可以考慮和時間結合,在某一段時間內超過某閾值即可告警。

 

利用本算法進行人員計算的缺點是如果發生目標丟失,會將同一人的兩個狀態識別爲兩個人,使得真實數目與檢測數目誤差大。

 

b.可用於範圍監測告警(越界監測):例如闖紅燈、翻牆等事件。

 

0?wx_fmt=png

 

產品功能考慮:在監控地圖裏設置關注區域,當關注區域一旦出現人/車/其他物體,則可立即實現告警。特別適合對入侵行爲需要重點防範的場合,比如展館、監獄、禁區等地。

 

c.異常行爲檢測:目標突然發生劇烈變化,如打架鬥毆等行爲。

 

0?wx_fmt=png

產品功能考慮:對目標設定異常行爲檢測,當出現異常行爲時即可告警。異常行爲檢測適合在對異常行爲有需要重點防範的場合,比如學校、公共區域等地方。

 

2)車輛識別:計算畫面中車輛的數目,並確定其位置。

 

0?wx_fmt=png

 

還可以和車型識別、車顏色識別、車輛逆流檢測等結合。實現對車輛特點的全識別。

應用場景:

a.可用於交通疏散,針對有可能發生擁堵的區域提前進行部署。

b.可用於追蹤黑名單車輛:車輛檢測可識別車輛類型、車輛顏色等等,這些信息均可用來定位目標。

c.防車輛套牌方案:車輛識別和車牌識別結合,防止車輛套牌案件發生

 

3)應用於智能駕駛方案:目標識別和場景分割、SLAM結合,可識別出道路路況,提供智能駕駛所需要的路邊物體信息。

0?wx_fmt=png

 

4

 

多目標跟蹤的應用場景

多目標跟蹤監控類的產品現在已經有不少,拿商湯的軟件產品作爲典型例子:

 

0?wx_fmt=jpeg

1、產品功能分析

產品的功能主要有以下內容:攝像頭個數、行人人次、非機動車車次、機動車車次、告警次數、監控畫面、目標抓拍。

 

我們從大的劃分來看,主要是四塊:設備、統計、監控、抓拍。除了這四塊之外,根據經驗我們還需要考慮到歷史的分析和檢索

 

0?wx_fmt=png

 

1)設備

商湯的產品只體現了設備的數目,而更重要的是設備的篩選功能。其實設備的控制非常複雜,我們常常爲了監控攝像頭的狀態設計一個新的管理系統。在另外一個設備的管理系統中,我們需要跟蹤設備的使用狀態,設備的詳細信息(對應的攝像頭編號位置等),以及攝像頭的定位。

 

2)統計

統計除了上例時間段的統計之外,還可以進行某一時刻某一區域上的目標統計。某一時刻的統計的意義比時間段統計在一些特定需求上更爲重要。特別是某時刻目標數如果超過閾值,跟告警系統匹配,能夠捕捉羣體行爲。某時刻的目標數目是否超過設定閾值,是多目標最常見的需求,也是典型應用之一。

 

3)監控

監控界面結合了多種類別的識別:例如行人的性別、頭髮長短、衣物類型等等。這也是多目標最「酷炫」的一部分,人們常常被系統的自動識別吸引。多目標在前端的表示常常是一個Boxing加一條尾巴,即目標的定位和軌跡。而目標旁的標籤(屬性),則是多目標識別和其他垂直方向識別的結合。

 

產品在這塊有兩部分工作:

a.跟進多目標的漏檢率以及IoU,以及思考同一管道多種屬性識別的結合,以應對不同場景需求。更偏向技術類。

b.關注監控系統的流暢性穩定性。更偏向業務類。

 

4)抓拍

抓拍也是體現多目標價值的典型功能之一。抓拍能將監控中的目標單獨地隔離出來,這是後續檢索目標功能實現的前提。抓拍到的圖片在界面展示時可利用緩存,之後建議存儲至雲端。

 

5)歷史

a.搜索:跟普通搜索系統相比,多目標系統必不可少的一個功能一定是圖片檢索。在系統中利用文字(與多目標的標籤關聯)或圖片進行圖片檢索,能更容易查找到目標。

b.分析:利用大數據技術,對歷史的人流、車流、告警記錄進行分析,有利於目標管控和後期閾值設置。

 

2、產品系統分析

1)實時性

監控系統最重要的一點是實時性,相比於普通監控產品,AI監控系統對設備硬件的要求更高。圖像處理速度和網速需要被綜合評估,監控系統的延時現象需要控制在用戶可接受範圍內。

 

2)耦合性

AI監控系統鏈路長、設計到的子系統衆多,因此在產品架構設計上需要考慮到程序之間的耦合性。耦合程度太高會使系統的升級更新與維護更加困難。

 

3)穩定性

這裏的穩定性不僅包括外界環境的影響,還有系統自身算法更新、程序更新對系統的影響。特別是算法更新,不僅需要在指標上有所提高,還需要具有一定兼容性。算法更新常常導致程序短時間內無法使用,所以每一次算法替換都需要謹慎考慮。