计算机视觉中的对象跟踪(完整指南)
計算機視覺中的對象跟蹤(完整指南)
目標跟蹤是計算機視覺中的一項重要任務。 對象跟蹤器是許多處理攝像機視頻流的計算機視覺應用程序的組成部分。 在本文中,我們將討論最先進的對象跟蹤算法、不同的方法、應用程序和對象跟蹤軟件。
如果您希望為商業項目開發帶有對象跟蹤的視頻分析,請查看我們的企業計算機視覺平臺 Viso Suite 。 全世界的大型組織都使用它來構建、部署和擴展具有深度學習的對象跟蹤系統。 作為無代碼平臺,Viso 提供模塊化構建塊和可視化開發工具。
特別是,本文將涵蓋以下內容:
- 什么是對象跟蹤,它是如何使用的?
- 視頻跟蹤和圖像跟蹤
- 跟蹤對象的挑戰
- 單目標和多目標跟蹤
- 你需要知道的目標跟蹤算法
- 最先進的方法(OpenCV 對象跟蹤、Matlab 跟蹤、MdNet 和 DeepSort 對象跟蹤)
什么是對象跟蹤?
對象跟蹤是深度學習的一種應用,程序獲取一組初始對象檢測并為每個初始檢測開發一個唯一標識,然后在檢測到的對象在視頻中的幀周圍移動時跟蹤它們。
換句話說,對象跟蹤是自動識別視頻中的對象并將它們解釋為一組高精度的軌跡的任務。
通常,被跟蹤的對象周圍有一個指示,例如,跟隨對象的周圍正方形,向用戶顯示對象在屏幕上的位置。
對象跟蹤的用途和類型
對象跟蹤用于涉及不同類型輸入素材的各種用例。 無論預期輸入是圖像還是視頻,還是實時視頻還是預先錄制的視頻,都會影響用于創建對象跟蹤應用程序的算法。
輸入的類型也會影響對象跟蹤的類別、用例和應用。 在這里,我們將簡要介紹幾種流行的對象跟蹤用途和類型,例如視頻跟蹤、視覺跟蹤和圖像跟蹤。
視頻跟蹤
視頻跟蹤是對象跟蹤的一種應用,其中移動對象位于視頻信息中。 因此,視頻跟蹤系統能夠處理實況、實時鏡頭以及錄制的視頻文件。
用于執行視頻跟蹤任務的進程因目標視頻輸入類型而異。 當我們在本文后面比較批處理和在線跟蹤方法時,將對此進行更深入的討論。
不同的視頻跟蹤應用程序在視頻分析、安全、軍事、交通和其他行業的場景理解中發揮著重要作用。 今天,廣泛的實時計算機視覺和深度學習應用程序使用視頻跟蹤方法。 我建議您查看我們 最流行的計算機視覺應用程序 的廣泛列表。
視覺追蹤
視覺跟蹤或視覺目標跟蹤是計算機視覺中的一個研究課題,應用于大量的日常場景。 視覺跟蹤的目標是估計在沒有視頻其余部分可用的情況下初始化的視覺目標的未來位置。
圖像追蹤
圖像跟蹤旨在檢測給定輸入中感興趣的二維圖像。 然后,當他們在設置中移動時,會持續跟蹤該圖像。 因此,圖像跟蹤 非常適合 具有高對比度圖像(例如黑白)、不對稱、少量圖案以及感興趣圖像與圖像集中其他圖像之間存在多個可識別差異的數據集。
圖像跟蹤依賴于計算機視覺在圖像目標被預先確定后檢測和增強圖像。 探索我們關于 圖像增強 的文章。
物體跟蹤相機
現代對象跟蹤方法可以應用于基本上任何攝像機的實時視頻流。 因此,USB 攝像機或 IP 攝像機的視頻饋送可用于執行對象跟蹤,方法是將各個幀饋送到跟蹤算法。 跳幀或并行處理是通過一個或多個攝像機的實時視頻饋送來提高對象跟蹤性能的常用方法。
是什么讓對象跟蹤變得困難
對象跟蹤的常見挑戰和優勢是什么? 主要挑戰通常源于圖像中的問題,這些問題使對象跟蹤模型難以有效地對圖像執行檢測。
在這里,我們將討論跟蹤對象任務中最常見的幾個問題以及預防或處理這些挑戰的方法。
1. 訓練和跟蹤速度
跟蹤對象的算法不僅應該準確地執行檢測和定位感興趣的對象,而且還應該在盡可能少的時間內完成。 提高跟蹤速度對于實時對象跟蹤模型尤為重要。
為了管理模型執行所需的時間,用于創建對象跟蹤模型的算法需要定制或謹慎選擇。 Fast R-CNN 和 Faster R-CNN 可用于提高最常見的 R-CNN 方法的速度。
由于 CNN(卷積神經網絡) 通常用于對象檢測,因此 CNN 修改可以成為更快的對象跟蹤模型和較慢的對象跟蹤模型之間的區別因素。 除了檢測框架之外的設計選擇也會影響目標檢測模型的速度和準確性之間的平衡。
2. 背景干擾
輸入圖像或用于訓練對象跟蹤模型的圖像的背景也會影響模型的準確性。 要跟蹤的對象的繁忙背景可能會使小對象更難被檢測到。
對于模糊或單一顏色的背景,人工智能系統更容易檢測和跟蹤對象。 太忙、與對象具有相同顏色或太雜亂的背景會使跟蹤小對象或淺色對象的結果變得困難。
3. 多空間尺度
要跟蹤的對象可以有各種大小和縱橫比。 這些比率可能會混淆對象跟蹤算法,使其認為對象的縮放比例大于或小于其實際大小。
尺寸誤解會對檢測或檢測速度產生負面影響。
為了解決空間尺度變化的問題,程序員可以實現特征圖、錨框、圖像金字塔和特征金字塔等技術。
- 錨框 : 錨框 是具有指定高度和寬度的邊界框的匯編。 這些框旨在獲取感興趣對象的比例和縱橫比。
它們是根據給定數據集中對象的平均對象大小選擇的。 錨框允許檢測各種類型的對象, 而無需 在定位期間交替邊界框坐標。 - 特征圖 :特征圖是當 卷積神經網絡 (CNN) 用于捕獲對輸入圖像應用過濾器的結果時層的輸出圖像。 特征圖 可以更深入地了解 CNN 檢測到的特征。 單次檢測器必須考慮多尺度問題,因為它們只需通過 CNN 框架即可檢測對象。 這將發生在小圖像的檢測減少中。 小圖像 在池化層的下采樣 過程中可能會丟失信號,這是當 CNN 在這些較小圖像的一個低子集上訓練時。 即使對象的數量相同,也會發生下采樣,因為 CNN
無法檢測到小圖像并將它們計入樣本大小。 為了防止這種情況,可以使用多個特征圖來允許單次檢測器在 CNN 層中尋找對象——包括具有更高分辨率圖像的早期層。 單次檢測器 (SSD) 仍然不是小物體跟蹤的理想選擇,因為它們在檢測小物體時遇到困難。
緊密的分組可以證明是特別困難的。 例如,使用單次檢測器很難跟蹤一群群動物的頭頂無人機拍攝。 - 圖像和特征金字塔表示 :特征金字塔,因其 金字塔結構 也稱為多級特征圖,是使用對象跟蹤數據集時對象尺度變化的初步解決方案。
因此,特征金字塔以自上而下的表示形式對有關不同大小對象的最有用信息進行建模,因此更容易檢測不同大小的對象。
圖像金字塔和特征金字塔等策略對于防止縮放問題很有用。 特征金字塔基于多尺度特征圖,其使用的計算能量比圖像金字塔少。
這是因為圖像金字塔由一個輸入圖像的一組調整大小的版本組成,然后在測試時發送到檢測器。
4. 遮擋
遮擋有很多定義。 在醫學上,閉塞是由于血管匯合而造成的“血管阻塞”; 在深度學習中,它具有類似的含義。
在使用深度學習的 AI 視覺任務中,當多個對象靠得太近(合并)時會發生遮擋。 這會導致 對象跟蹤系統出現問題,因為被遮擋的對象被視為一個對象,或者只是不正確地跟蹤對象。 系統可能會感到困惑并將最初跟蹤的對象識別為新對象。
遮擋敏感性 通過允許用戶了解圖像的哪些部分對對象跟蹤系統進行分類最重要來防止這種錯誤識別。 遮擋敏感度是指衡量網絡對不同數據區域中遮擋的敏感度。 它是使用原始數據集的小子集完成的。
對象跟蹤級別
對象跟蹤由多個子類型組成,因為它的應用非常廣泛。 對象跟蹤的級別因被跟蹤對象的數量而異。
多目標跟蹤 (MOT)
多對象跟蹤被定義為自動識別視頻中的多個對象并將它們表示為一組高精度的軌跡的問題。
因此,多目標跟蹤旨在跟蹤數字圖像中的多個目標。 它也稱為多目標跟蹤,因為它試圖分析視頻以識別屬于多個預定類別的對象(“目標”)
多目標跟蹤在自動駕駛中非常重要,用于檢測和預測行人或其他車輛的行為。 因此,這些算法通常在 KITTI 跟蹤測試中進行基準測試。 KITTI 是一個具有挑戰性的現實世界計算機視覺基準和圖像數據集,廣泛用于自動駕駛。
2022 年,性能最佳的多目標跟蹤算法是 DEFT(88.95 MOTA,Multiple Object Tracking Accuracy)、CenterTrack(89.44 MOTA)和 SRK ODESA (90.03 MOTA)。
多目標跟蹤 (MOT) 與一般目標檢測
對象檢測通常會產生一組邊界框作為 輸出 。 多目標跟蹤通常幾乎沒有關于目標外觀和數量的事先培訓。 使用它們的高度、寬度、坐標和其他參數來識別邊界框。
同時,MOT 算法還為每個邊界框分配了一個目標 ID。 此目標 ID 稱為檢測,它很重要,因為它允許模型區分類中的對象。
例如,MOT 算法不是將照片中存在多輛汽車的所有汽車都識別為“汽車”,而是嘗試將不同的汽車識別為彼此不同,而不是所有汽車都屬于“汽車”標簽。 有關此隱喻的直觀表示,請參閱下圖。
單個對象跟蹤
單對象跟蹤 (SOT) 邊界框 根據輸入圖像的第一幀創建提供給跟蹤器的 。 單個對象跟蹤有時也稱為視覺對象跟蹤。
SOT 意味著跟蹤一個單一的對象,即使在涉及其他對象的環境中也是如此。 單個對象跟蹤器旨在專注于一個給定的對象,而不是多個。
在第一幀中確定感興趣的對象,這是第一次初始化要跟蹤的對象。 然后跟蹤器的任務是在所有其他給定幀中定位該唯一目標。
SOT 屬于免檢測跟蹤類別,這意味著它需要在第一幀中手動初始化固定數量的對象。 然后將這些對象定位在后續幀中。 免檢測跟蹤的一個 缺點
是它無法處理新對象出現在中間幀中的場景。 SOT 模型應該能夠跟蹤任何給定的對象。
對象跟蹤算法
多目標跟蹤(MOT)算法介紹
大多數多目標跟蹤算法都包含一種稱為檢測跟蹤的方法。
逐檢測跟蹤方法涉及一個獨立的檢測器,該檢測器應用于所有圖像幀以獲得可能的檢測,然后是一個跟蹤器,該跟蹤器在檢測集上運行。 因此,跟蹤器嘗試執行
數據關聯 (例如,鏈接檢測以獲得完整的軌跡)。 從視頻輸入中提取的檢測通過連接它們并將相同的 ID 分配給包含相同目標的邊界框來指導跟蹤過程。
- 批量方法: 批量跟蹤算法在推斷某個幀中對象的身份時使用來自未來視頻幀的信息。 批量跟蹤算法使用關于對象的非本地信息。
這種方法可以提高跟蹤質量。 - 在線方法: 雖然批量跟蹤算法訪問未來幀,但在線跟蹤算法僅使用當前和過去的信息來得出關于某個幀的結論。
用于執行 MOT 的在線跟蹤方法通常比批處理方法執行 得更差 由于在線方法受限于當前框架的限制, 。
但是,由于用例的原因,這種方法有時是必要的。
例如,需要跟蹤對象的實時問題,如導航或自動駕駛,無法訪問未來的視頻幀,這就是為什么在線跟蹤方法仍然是一個可行的選擇。
多目標跟蹤算法階段
大多數多目標跟蹤算法都包含一組基本步驟,這些步驟隨著算法的變化而保持不變。 大多數所謂的多目標跟蹤算法共享以下階段:
- 階段#1:指定或檢測: 在指定階段記錄并突出顯示感興趣的目標。 該算法分析輸入幀以識別屬于目標類的對象。
作為算法的一部分,邊界框用于執行檢測。 - 階段#2:運動: 特征提取算法分析檢測以提取外觀和交互特征。 在大多數情況下,運動預測器用于預測每個跟蹤目標的后續位置。
- 階段#3:召回: 特征預測用于計算檢測對之間的相似度分數。 然后使用這些分數來關聯屬于同一目標的檢測。 ID 分配給相似的檢測,不同的 ID 應用于不屬于對的檢測。
一些對象跟蹤模型是使用這些步驟彼此分開創建的,而另一些則結合并結合使用這些步驟。
算法處理中的這些差異創建了獨特的模型,其中一些模型比其他模型更準確。
流行的對象跟蹤算法
卷積神經網絡 (CNN) 仍然是用于對象跟蹤的最常用和最可靠的網絡。 但是,也正在探索多種架構和算法。 這些算法包括 循環神經網絡 (RNN) 、自動編碼器 (AE)、 生成對抗網絡 (GAN) 、連體神經網絡 (SNN) 和自定義神經網絡。
盡管 對象檢測器 如果逐幀應用 可以用于跟蹤對象,但這是一種計算限制,因此是執行對象跟蹤的一種相當低效的方法。
相反,對象檢測應該應用一次,然后對象跟蹤器可以處理第一幀之后的每一幀。 這是執行對象跟蹤的計算更有效且更簡單的過程。
1. OpenCV 對象跟蹤
OpenCV 對象跟蹤是一種流行的方法,因為 OpenCV 內置了許多算法,專門針對對象或運動跟蹤的需求和目標進行了優化。
特定 的Open CV 對象跟蹤器 包括 BOOSTING、MIL、KCF、CSRT、MedianFlow、TLD、MOSSE 和 GOTURN
跟蹤器。 這些跟蹤器中的每一個都最適合不同的目標。 例如,當用戶需要更高的對象跟蹤精度并且可以容忍較慢的 FPS 吞吐量時,CSRT 是最好的。
OpenCV 對象跟蹤算法的選擇取決于該特定跟蹤器的優缺點和優點:
與 CSRT 相比,KCF 跟蹤器不如 CSRT 準確,但提供了相對較高的 FPS。
MOSSE 跟蹤器非常快,但其準確性甚至低于使用 KCF 跟蹤。 不過,如果您正在尋找最快的目標跟蹤 OpenCV 方法,MOSSE 是一個不錯的選擇。
GOTURN 跟蹤器是 進行基于深度學習的對象跟蹤 使用 OpenCV 的唯一檢測器。 GOTURN 的原始實現是在 Caffe
中,但它已被移植到 OpenCV 跟蹤 API。
2. 深度排序
DeepSORT 是一個很好的目標跟蹤算法選擇,是使用最廣泛的目標跟蹤框架之一。 外觀信息 集成 在算法中,極大地提高了 DeepSORT
的性能。 由于集成,對象可以通過更長的遮擋時間進行跟蹤——減少了身份切換的數量。
有關 DeepSORT 內部工作原理的完整信息以及 DeepSORT 與其他算法之間的具體算法差異,我們建議閱讀 Anushka Dhiman 的
文章 “在 TensorFlow 2 中使用 DeepSORT 進行對象跟蹤”。
3. 對象跟蹤 MATLAB
MATLAB 是一個數值計算平臺,與 DeepSORT 和 OpenCV 相比,它的實現方式有所不同,但它仍然是視覺跟蹤任務的不錯選擇。
MATLAB 中的計算機視覺工具箱提供 視頻跟蹤算法 ,例如連續自適應均值偏移 (CAMShift) 和 Kanade-Lucas-Tomasi(KLT),用于跟蹤單個對象或用作更復雜跟蹤系統中的構建塊。
4.MDNet
MDNet 是一種快速準確的基于 CNN 的視覺跟蹤算法,其靈感來自 R-CNN 對象檢測網絡。 它通過對候選區域進行采樣并將它們傳遞給 CNN
來發揮作用。 CNN 通常在龐大的數據集上進行預訓練,并在輸入視頻的第一幀進行細化。
因此,MDNet 對于實時對象跟蹤用例最有用。 然而,雖然它 。 在速度和空間方面的計算復雜度很高,但它仍然是一個準確的選擇
MDNet 的計算量大的方面可以通過執行 RoI(感興趣區域)池化來最小化,然而,這是一種避免重復觀察和加速推理的相對有效的方法。
下一步是什么?
對象跟蹤用于識別視頻中的對象并將它們解釋為一組高精度的軌跡。 因此,主要挑戰是在計算效率和性能之間取得平衡。
查看我們的文章 人數統計系統:如何在不到 10 分鐘的時間內創建自己的系統 ,我們在實時視頻片段中檢測和跟蹤人員。
如果您喜歡閱讀本文并想閱讀相關主題,請查看以下文章:
- 什么是模式識別? 溫柔的介紹
- 什么是深度學習? 易于理解的指南
- 閱讀有關 卷積神經網絡 (CNN)的更多信息
- 查看 您需要了解的前 5 個深度學習框架
實施對象跟蹤
在 viso.ai,我們為企業提供領先的 AI 視覺平臺,以開發深度學習對象跟蹤應用程序,并通過一個端到端解決方案將它們部署到生產中。 Viso Suite 為 AI 視覺開發提供了一套集成的無代碼和低代碼工具。 下一代技術可幫助 零售 、 智慧城市 、 醫療保健 和 農業 等行業的行業領導者提供真實世界的對象跟蹤系統。
reference
@article{Klingler2022Aug,
author = {Klingler, N.},
title = {{Object Tracking in Computer Vision (Complete Guide) - viso.ai}},
journaltitle = {Viso},
year = {2022},
month = aug,
url = {https://viso.ai/deep-learning/object-tracking},
abstract = {{Object tracking in deep learning for single and multiple object tracking. The most popular algorithms and tools to use in 2022.}}
}
總結
以上是生活随笔為你收集整理的计算机视觉中的对象跟踪(完整指南)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端常用工具网址
- 下一篇: Vscode中Latex语法无法出现高亮