作者:ANKIT SACHAN來源:AI公園 -ronghuaiyang
導(dǎo)讀
從目標(biāo)跟蹤的應(yīng)用場景,底層模型,組件,類型和具體算法幾個方面對目標(biāo)跟蹤做了全方面的介紹,非常好的入門文章。
在今天的文章中,我們將深入研究視頻目標(biāo)跟蹤。我們從基礎(chǔ)開始,了解目標(biāo)跟蹤的需求,然后了解視覺目標(biāo)跟蹤的挑戰(zhàn)和算法模型,最后,我們將介紹最流行的基于深度學(xué)習(xí)的目標(biāo)跟蹤方法,包括MDNET, GOTURN, ROLO等。本文希望你了解目標(biāo)檢測。
目標(biāo)跟蹤是在視頻中隨著時間的推移定位移動目標(biāo)的過程。我們可以簡單地問,為什么我們不能在整個視頻的每一幀中使用目標(biāo)檢測,然后我們可以再去跟蹤目標(biāo)。這會有一些問題。如果圖像有多個物體,那么我們就無法將當(dāng)前幀中的物體鏈接到前一幀中。如果你跟蹤的物體有幾幀不在鏡頭里,然后重新又出現(xiàn),我們無法知道它是否是同一物體。本質(zhì)上,在檢測過程中,我們一次只處理一張圖像,我們不知道物體的運(yùn)動和過去的運(yùn)動,所以我們不能在視頻中唯一地跟蹤物體。目標(biāo)跟蹤在計(jì)算機(jī)視覺中有著廣泛的應(yīng)用,如監(jiān)視、人機(jī)交互、醫(yī)學(xué)成像、交通流監(jiān)測、人類活動識別等。比如FBI想用全市的監(jiān)控?cái)z像頭追蹤一名駕車逃跑的罪犯。或者有一個需要分析足球比賽的體育分析軟件?;蛘吣阆朐谫徫?a target="_blank">中心的入口處安裝一個攝像頭,然后計(jì)算每個小時有多少人進(jìn)出,你不僅要對人進(jìn)行跟蹤,還要為每個人創(chuàng)建路徑,如下所示。
當(dāng)檢測失敗的時候,跟蹤可以接替工作
當(dāng)視頻中有一個移動的物體時,在某些情況下,物體的視覺外觀并不清楚。在所有這些情況下,檢測都會失敗而跟蹤會成功,因?yàn)樗灿形矬w的運(yùn)動模型和歷史記錄。下面是一些例子,其中有目標(biāo)跟蹤在工作和目標(biāo)檢測失敗的情況:
- 遮擋:所述目標(biāo)被部分或完全遮擋
- 身份切換:兩個目標(biāo)交叉后,你如何知道哪個是哪個。
- 運(yùn)動模糊:物體由于物體或相機(jī)的運(yùn)動而被模糊。因此,從視覺上看,物體看起來不再一樣了。
- 視點(diǎn)變化:一個物體的不同視點(diǎn)在視覺上可能看起來非常不同,如果沒有上下文,僅使用視覺檢測就很難識別該物體。
- 尺度變化:物體尺度變化過大可能導(dǎo)致檢測失敗。
- 背景雜亂:目標(biāo)附近的背景與目標(biāo)有相似的顏色或紋理。因此,從背景中分離物體會變得更加困難。
- 光照變化:目標(biāo)物體附近的光照顯著改變。因此,從視覺上識別它可能會變得更加困難。
低分辨率:當(dāng)ground truth包圍框內(nèi)的像素點(diǎn)非常少時,可能會在視覺上難以檢測到目標(biāo)。
底層模型
目標(biāo)跟蹤是計(jì)算機(jī)視覺中一個古老而又困難的問題。有各種各樣的技術(shù)和算法試圖用各種不同的方式來解決這個問題。然而,大多數(shù)的技術(shù)依賴于兩個關(guān)鍵的東西:
1. 運(yùn)動模型
一個好的跟蹤器的關(guān)鍵部件之一是理解和建模目標(biāo)的運(yùn)動的能力。因此,一個運(yùn)動模型被開發(fā)來捕捉一個物體的動態(tài)行為。預(yù)測物體在未來幀中的潛在位置,從而減少搜索空間。然而,只有運(yùn)動模型可能會失敗,因?yàn)槲矬w可能會不在視頻中,或者方向和速度發(fā)生突變。早期的一些方法試圖了解物體的運(yùn)動模式并預(yù)測它。然而,這些方法的問題是,他們不能預(yù)測突然的運(yùn)動和方向變化。這些技術(shù)的例子有光流,卡爾曼濾波,kanad-lucas-tomashi (KLT)特征跟蹤,mean shift跟蹤。
2. 視覺外觀模型
大多數(shù)高度精確的跟蹤器需要了解他們正在跟蹤的目標(biāo)的外觀。最重要的是,他們需要學(xué)會從背景中辨別物體。在單目標(biāo)跟蹤器中,僅視覺外觀就足以跨幀跟蹤目標(biāo),而在多目標(biāo)跟蹤器中,僅視覺外觀是不夠的。
跟蹤算法的幾個組件
一般來說,目標(biāo)跟蹤過程由四個模塊組成:
1、目標(biāo)初始化:在此階段,我們需要通過在目標(biāo)周圍繪制一個邊框來定義目標(biāo)的初始狀態(tài)。我們的想法是在視頻的初始幀中繪制目標(biāo)的邊界框,跟蹤器需要估計(jì)目標(biāo)在視頻剩余幀中的位置。
2、外觀建模:現(xiàn)在需要使用學(xué)習(xí)技術(shù)學(xué)習(xí)目標(biāo)的視覺外觀。在這個階段,我們需要建模并了解物體在運(yùn)動時的視覺特征、包括在各種視點(diǎn)、尺度、光照的情況下。
3、運(yùn)動估計(jì):運(yùn)動估計(jì)的目的是學(xué)習(xí)預(yù)測后續(xù)幀中目標(biāo)最有可能出現(xiàn)的區(qū)域。
4、目標(biāo)定位:運(yùn)動估計(jì)給出了目標(biāo)可能出現(xiàn)的區(qū)域,我們使用視覺模型掃描該區(qū)域鎖定目標(biāo)的確切位置。一般來說,跟蹤算法不會嘗試學(xué)習(xí)目標(biāo)的所有變化。因此,大多數(shù)跟蹤算法都比目標(biāo)檢測快得多。
跟蹤算法的類型
1. 基于檢測與不需要檢測的跟蹤器
1.1 基于檢測的跟蹤:將連續(xù)的視頻幀給一個預(yù)先訓(xùn)練好的目標(biāo)檢測器,該檢測器給出檢測假設(shè),然后用檢測假設(shè)形成跟蹤軌跡。它更受歡迎,因?yàn)榭梢詸z測到新的目標(biāo),消失的目標(biāo)會自動終止。在這些方法中,跟蹤器用于目標(biāo)檢測失敗的時候。在另一種方法中,目標(biāo)檢測器對每n幀運(yùn)行,其余的預(yù)測使用跟蹤器完成。這是一種非常適合長時間跟蹤的方法。1.2 不需要檢測的跟蹤:不需要檢測的跟蹤需要手動初始化第一幀中固定數(shù)量的目標(biāo)。然后在后續(xù)的幀中定位這些目標(biāo)。它不能處理新目標(biāo)出現(xiàn)在中間幀中的情況。
2. 單目標(biāo)和多目標(biāo)跟蹤器
2.1 單目標(biāo)跟蹤:即使環(huán)境中有多個目標(biāo),也只跟蹤一個目標(biāo)。要跟蹤的目標(biāo)由第一幀的初始化確定。2.2 多目標(biāo)跟蹤:對環(huán)境中存在的所有目標(biāo)進(jìn)行跟蹤。如果使用基于檢測的跟蹤器,它甚至可以跟蹤視頻中間出現(xiàn)的新目標(biāo)。
3. 在線和離線跟蹤器
3.1 離線跟蹤器:當(dāng)你需要跟蹤已記錄流中的物體時,使用離線跟蹤器。例如,如果你錄制了對手球隊(duì)的足球比賽視頻,需要進(jìn)行戰(zhàn)略分析。在這種情況下,你不僅可以使用過去的幀,還可以使用未來的幀來進(jìn)行更準(zhǔn)確的跟蹤預(yù)測。3.2 在線跟蹤器:在線跟蹤器用于即時預(yù)測,因此,他們不能使用未來幀來改善結(jié)果。
4. 基于學(xué)習(xí)和基于訓(xùn)練的策略
4.1 在線學(xué)習(xí)跟蹤器:這些跟蹤器通常使用初始化幀和少量后續(xù)幀來了解要跟蹤的目標(biāo)。這些跟蹤器更通用因?yàn)槟憧梢栽谌魏文繕?biāo)周圍畫一個框并跟蹤它。例如,如果你想在機(jī)場跟蹤一個穿紅襯衫的人,你可以在一個或幾個幀內(nèi),在這個人周圍畫一個邊界框,跟蹤器通過這些框架了解目標(biāo)物體,并繼續(xù)跟蹤那個人。
在線學(xué)習(xí)跟蹤器的核心思想是:中心的紅色方框由用戶指定,以它為正樣本,所有圍繞著目標(biāo)的方框作為負(fù)樣本,訓(xùn)練一個分類器,學(xué)習(xí)如何將目標(biāo)從背景中區(qū)分出來。
4.2 離線學(xué)習(xí)跟蹤器:這些跟蹤器的訓(xùn)練只在離線進(jìn)行。與在線學(xué)習(xí)跟蹤器不同,這些跟蹤器在運(yùn)行時不學(xué)習(xí)任何東西。這些跟蹤器在線下學(xué)習(xí)完整的概念,也就是說,我們可以訓(xùn)練跟蹤器來識別人。然后這些跟蹤器可以用來連續(xù)跟蹤視頻流中的所有人。
流行的跟蹤算法
OpenCV的跟蹤API中集成了很多傳統(tǒng)的(非深度學(xué)習(xí)的)跟蹤算法。相對而言,大多數(shù)跟蹤器都不是很準(zhǔn)確。但是,有時它們在資源有限的環(huán)境(如嵌入式系統(tǒng))中運(yùn)行會很有用。如果你不得不使用一個,我建議使用核相關(guān)過濾器(KCF)跟蹤器。然而,在實(shí)踐中,基于深度學(xué)習(xí)的跟蹤器在準(zhǔn)確性方面遠(yuǎn)遠(yuǎn)領(lǐng)先于傳統(tǒng)跟蹤器。因此,在這篇文章中,我將討論用于構(gòu)建基于AI的跟蹤器的三種關(guān)鍵方法。
1. 基于卷積神經(jīng)網(wǎng)絡(luò)的離線訓(xùn)練跟蹤器
這是早期的一系列跟蹤器之一,它將卷積神經(jīng)網(wǎng)絡(luò)的識別能力應(yīng)用于視覺目標(biāo)跟蹤任務(wù)。GOTURN就是一種基于卷積神經(jīng)網(wǎng)絡(luò)的離線學(xué)習(xí)跟蹤器,它根本不用在線學(xué)習(xí)。首先,跟蹤器使用成千上萬的視頻訓(xùn)練一般目標(biāo)的跟蹤?,F(xiàn)在,這個跟蹤器可以用來毫無問題地跟蹤大多數(shù)目標(biāo)即使這些目標(biāo)不屬于訓(xùn)練集。
GOTURN可以在GPU驅(qū)動的機(jī)器上運(yùn)行非常快,即100fps。GOTURN已經(jīng)集成到OpenCV跟蹤API(contrib部分)中。在下面的視頻鏈接中,原作者展示了GOTURN的能力。
2. 基于卷積神經(jīng)網(wǎng)絡(luò)的在線訓(xùn)練跟蹤器
這些是使用卷積神經(jīng)網(wǎng)絡(luò)的在線訓(xùn)練跟蹤器。其中一個例子就是多域網(wǎng)絡(luò)(MDNet),它是VOT2015挑戰(zhàn)賽的獲勝者。由于卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練在計(jì)算上非常昂貴,所以這些方法在部署期間必須使用較小的網(wǎng)絡(luò)以快速訓(xùn)練。然而,較小的網(wǎng)絡(luò)并沒有太多的區(qū)分能力。一種選擇是我們訓(xùn)練整個網(wǎng)絡(luò),但在推理過程中,我們使用前幾層作為特征提取器,也就是說,我們只改變在線訓(xùn)練的最后幾層的權(quán)值。因此,我們用CNN作為特征提取器,最后幾層可以快速在線訓(xùn)練。本質(zhì)上,我們的目標(biāo)是訓(xùn)練一個能區(qū)分目標(biāo)和背景的通用多域CNN。然而,這在訓(xùn)練中帶來了一個問題,一個視頻的目標(biāo)可能是另一個視頻的背景,這只會讓我們的卷積神經(jīng)網(wǎng)絡(luò)混淆。因此,MDNet做了一些聰明的事情。它將網(wǎng)絡(luò)重新安排為兩部分:第一部分是共享部分,然后有一部分是獨(dú)立于每個域的。每個域意味著一個獨(dú)立的訓(xùn)練視頻。首先在k個域上迭代訓(xùn)練網(wǎng)絡(luò),每個域都在目標(biāo)和背景之間進(jìn)行分類。這有助于我們提取獨(dú)立于視頻的信息,以便更好地學(xué)習(xí)跟蹤器的通用表示。

經(jīng)過訓(xùn)練,去除領(lǐng)域特定的二分類層,我們得到了一個特征提取器(上文共享網(wǎng)絡(luò)),它可以以通用的方式區(qū)分任何目標(biāo)和背景。在推理(生產(chǎn))過程中,最初的共享部分被用作特征提取器,刪除特定的領(lǐng)域?qū)?,并在特征提取器之上添加二分類層。這個二分類層是在線訓(xùn)練的。在每一步中,通過隨機(jī)抽樣的方式搜索前一個目標(biāo)狀態(tài)周圍的區(qū)域來尋找目標(biāo)。MDNet是一種最精確的基于深度學(xué)習(xí)的在線訓(xùn)練,不需要檢測,單目標(biāo)跟蹤。
3. 基于LSTM+ CNN的基于視頻的目標(biāo)跟蹤器
另一類目標(biāo)跟蹤器非常流行,因?yàn)樗鼈兪褂瞄L短期記憶(LSTM)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)來完成視覺目標(biāo)跟蹤的任。循環(huán)YOLO (ROLO)就是這樣一種單目標(biāo)、在線、基于檢測的跟蹤算法。該算法使用YOLO網(wǎng)絡(luò)進(jìn)行目標(biāo)檢測,使用LSTM網(wǎng)絡(luò)進(jìn)行目標(biāo)軌跡檢測。LSTM與CNN的結(jié)合是厲害的,原因有二。a) LSTM網(wǎng)絡(luò)特別擅長歷史模式的學(xué)習(xí),特別適合于視覺目標(biāo)跟蹤。b) LSTM網(wǎng)絡(luò)的計(jì)算成本不是很高,因此可以構(gòu)建非??焖俚恼鎸?shí)世界跟蹤器。

YOLO INPUT – 原始輸入幀
YOLO OUTPUT– 輸入幀中包圍框坐標(biāo)的特征向量
LSTM INPUT – 拼接(圖像特征,包圍框坐標(biāo))
LSTM OUTPUT– 被跟蹤目標(biāo)的包圍框坐標(biāo)上面的圖我們這樣理解:
- 輸入幀通過YOLO網(wǎng)絡(luò)。
- 從YOLO網(wǎng)絡(luò)得到兩個不同的輸出(圖像特征和邊界框坐標(biāo))
- 這兩個輸出送到LSTM網(wǎng)絡(luò)
LSTM輸出被跟蹤目標(biāo)的軌跡,即包圍框
初步的位置推斷(來自YOLO)幫助LSTM注意某些視覺元素。ROLO探索了時空上的歷史,即除了地理位置的歷史,ROLO還探索了視覺特征的歷史。即使當(dāng)YOLO的檢測是有缺陷的,比如運(yùn)動模糊,ROLO也能保持穩(wěn)定跟蹤。此外,當(dāng)目標(biāo)物體被遮擋時,這樣的跟蹤器不太會失敗。最近,有更多基于LSTM的目標(biāo)跟蹤器,它們通過許多改進(jìn)比ROLO好得多。但是,我們在這里選擇了ROLO,因?yàn)樗唵吻胰菀桌斫?。希望這篇文章能讓你對視覺目標(biāo)跟蹤有一個很好的理解,并對一些成功的關(guān)鍵目標(biāo)跟蹤方法有一些見解。
英文原文:https://cv-tricks.com/object-tracking/quick-guide-mdnet-goturn-rolo/
-
視頻
+關(guān)注
關(guān)注
6文章
1970瀏覽量
73754 -
目標(biāo)跟蹤
+關(guān)注
關(guān)注
2文章
88瀏覽量
15062 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5557瀏覽量
122580
發(fā)布評論請先 登錄
matlab實(shí)現(xiàn)視頻中動態(tài)目標(biāo)跟蹤
視頻跟蹤(目標(biāo)取差器)-基于DM8168實(shí)現(xiàn)的自動視頻跟蹤
基于OPENCV的運(yùn)動目標(biāo)跟蹤實(shí)現(xiàn)
基于QT+OpenCv的目標(biāo)跟蹤算法實(shí)現(xiàn)
廣義合作目標(biāo)跟蹤的誤差空間估計(jì)方法
視頻運(yùn)動目標(biāo)跟蹤系統(tǒng)設(shè)計(jì)

基于KCFSE結(jié)合尺度預(yù)測的目標(biāo)跟蹤方法

基于融合的快速目標(biāo)跟蹤算法

視頻序列中運(yùn)動目標(biāo)檢測與跟蹤的方法有哪些詳細(xì)資料說明

評論