DeepSort:基于檢測的目標跟蹤的經典

本文來自公眾號“AI大道理”


DeepSORT在SORT的基礎上引入了深度學習的特征表示和更強大的目標關聯方式,有效地減少了身份切換的數量,緩解了重識別問題。

?

1、DeepSORT簡介

DeepSORT的主要思想是將目標檢測和目標跟蹤兩個任務相結合。

首先使用目標檢測算法(Faster R-CNN等)在每一幀中檢測出目標物體的位置和邊界框。然后,通過深度學習模型(如CNN)提取目標的特征表示,將每個目標與先前幀中已跟蹤的目標進行匹配。

匹配過程中會考慮目標的特征相似度、運動一致性等因素,以確定目標的身份和軌跡。

DeepSORT的關鍵貢獻之一是使用了一個強大的外觀特征描述符,可以準確地區分不同目標之間的相似度。

DeepSORT還通過處理目標的消失和重新出現等復雜情況,實現了對長期跟蹤的支持。

主要技術特點:

  • 級聯匹配

  • ReID?網絡

  • 馬氏距離

  • 余弦距離

2、級聯匹配

原因:

當一個目標長時間被遮擋之后,kalman濾波預測的不確定性就會大大增加,狀態空間內的可觀察性就會大大降低。

假如此時兩個追蹤器競爭同一個檢測結果的匹配權,往往遮擋時間較長的那條軌跡的馬氏距離更小,使得檢測結果更可能和遮擋時間較長的那條軌跡相關聯,這種不理想的效果往往會破壞追蹤的持續性。

這么理解吧,假設本來協方差矩陣是一個正態分布,那么連續的預測不更新就會導致這個正態分布的方差越來越大,那么離均值歐氏距離遠的點可能和之前分布中離得較近的點獲得同樣的馬氏距離值。所以,作者使用了級聯匹配來對更加頻繁出現的目標賦予優先權。

匹配:

為什么叫級聯匹配,主要是它的匹配過程是一個循環。

即從missing age=0的軌跡,每一幀都匹配上,沒有丟失過的軌跡到missing age=30的軌跡,丟失軌跡的最大時間30幀的軌跡,挨個的和檢測結果進行匹配。

也就是說,對于沒有丟失過的軌跡賦予優先匹配的權利,而丟失的最久的軌跡最后匹配。

這里丟失30幀了還給機會匹配,就是對遮擋目標的再跟蹤。

級聯匹配的距離度量是馬氏距離和余弦距離的融合,設置了兩個距離的閾值,先過濾一遍。

然后利用這個融合的距離進行匈牙利算法的匹配,匹配是對檢測框和預測框的匹配。

而且匹配有優先級的,那些歷史上一直有匹配上的軌跡優先匹配,而歷史上已經已經很久沒有匹配上的軌跡則最后匹配。

也就是說遮擋的可能性比較小,大部分沒有匹配上的軌跡可能就是目標消失了。

匹配流程圖:

(藍字只對藍線有效)

情況1:確定的軌跡,一級匹配成功

流程:

(1)軌跡(上一時刻的檢測框)經過kalman濾波預測后,會對當前幀預測出一組檢測框。

(2)目標檢測算法對當前幀進行目標檢測,產生檢測框。

(3)對于確定的軌跡來說與目標檢測的檢測框進行級聯匹配,也就是利用馬氏距離和圖像特征相似度余弦距離進行匈牙利算法的數據關聯。

(4)軌跡(上一時刻的檢測框)成功與檢測框匹配。

(5)進行卡爾曼濾波的融合,是檢測框與預測框的融合,融合完后更新到軌跡中。

情況2:確定的軌跡,一級匹配失敗,二級匹配成功

匹配失敗分為軌跡匹配失敗和檢測框匹配失敗兩種。

軌跡匹配失敗:

有些軌跡沒有檢測框與之匹配,原因是檢測可能發生了漏檢,某時刻,預測的軌跡tracks還在,但是檢測器沒有檢測到與之對應的目標;也可能是這個目標消失不見了,或者被遮擋了,沒有檢測框了。

檢測框匹配失敗:

有些檢測框匹配不上軌跡,原因可能是某一時刻有一個物體是新進入的鏡頭,就會發生檢測框匹配不到tracks的情況,因為這個物體是新來的,在這之前并沒有它的軌跡;也可能是物體長時間被遮擋后的檢測,導致檢測到的物體沒有可以與之匹配的軌跡(長時間遮擋超過閾值軌跡被刪除)。

流程:

(1)對于確定的軌跡來說與目標檢測的檢測框進行級聯匹配,也就是利用馬氏距離和圖像特征相似度余弦距離進行匈牙利算法的數據關聯。

(2)軌跡沒有與檢測框匹配,則對這些軌跡進行與檢測框的IOU匹配,匹配成功。

(IOU匹配可以有效匹配靜態場景幾何體的部分遮擋的情況,提高匹配成功率。這里相當于進行多次匹配,第一次匹配成功那就成功,匹配不上再給一次機會,進行IOU匹配,這次匹配上也算匹配上。)

(3)檢測框沒有與軌跡匹配上,則對這些檢測框進行與軌跡的IOU匹配,匹配成功。

(4)進行卡爾曼濾波的融合,是檢測框與預測框的融合,融合完后更新到軌跡中。

情況3:確定的軌跡,一級匹配失敗,二級匹配也失敗。

流程:

(1)對于二級匹配失敗的檢測框,建立一個新的不確定的軌跡。因為匹配失敗可能是視野中出現新目標了,也可能就是檢測器的誤檢測,對這個檢測框要不要建立真實軌跡是不一定的,也就是unconfirmed軌跡。

(2)這個新不確定的軌跡要經過一個考驗才能成為真實軌跡,那就是要連續三幀都要有檢測框對其進行成功匹配,那就確定是一個真實軌跡了。

(3)對于考核期的軌跡(3幀考核,unconfirmed軌跡),直接進行IOU匹配,匹配成功,計數加1,連續三次匹配成功,則變更為確定的軌跡。確認的軌跡接下來就會保存外觀特征100幀。考察期間的軌跡在3幀內匹配失敗,則直接刪除,判定為偶然的誤報。

(4)對于再次匹配失敗的軌跡來說,如果這個軌跡是待確定的軌跡,則刪除,如果是確定的軌跡,則判斷接下來幾幀(max age幀,30幀)是否還能匹配上,超過30幀了還不能匹配上,放棄了,這個軌跡終止了。可能是真的終止了,也可能是長時間遮擋,這個就是這個閾值max age的容忍程度了,遮擋太久就沒辦法了,只能認為是新目標了,也就是跟丟了。

如果在30幀內,那繼續給你機會進行IOU匹配,這時候即使匹配成功了,也要進行三幀考察。

3、ReID?網絡

DeepSORT中采用了一個簡單的CNN來提取被檢測物體的外觀特征,在每次檢測追蹤后,進行一次物體外觀特征的提取并保存,最多保存100幀。

后面每執行一步時,都要執行一次當前幀被檢測物體外觀特征與之前存儲的外觀特征的相似度計算,這個相似度將作為一個重要的判別依據。

Deep Sort 采用了經過大規模人員重新識別數據集訓練的 Cosine 深度特征網絡,該數據集包含 1,261 位行人的 1,100,000 多張圖像,使其非常適合在人員跟蹤環境中進行深度度量學習。

Cosine 深度特征網絡使用了寬殘差網絡,該網絡具有 2 個卷積層和 6 個殘差塊,L2 歸一化層能夠計算不同行人間的相似性,以與余弦外觀度量兼容。通過計算行人間的余弦距離,余弦距離越小,兩行人圖像越相似。Cosine 深度特征網絡結構如下圖所示。

使用 Cosine 深度特征網絡參數,將每個檢測框內圖片壓縮為最能表征圖片特異信息的128維向量,并歸一化后得到外觀描述向量。

4、馬氏距離

DeepSort使用馬氏距離表示檢測框到軌跡的距離,馬氏距離就是“加強版的歐氏距離”。

馬氏距離規避了歐氏距離中對于數據特征方差不同的風險,在計算中添加了協方差矩陣,其目的就是進行方差歸一化,從而使所謂的“距離”更加符合數據特征以及實際意義。

馬氏距離是旋轉變換縮放后的歐氏距離,它將樣本的協方差矩陣納入距離度量計算,相當于對歐式距離的修正。

馬氏距離完成正交,解決了特征間相關性的問題,內含標準化,解決了特征間尺度不一致的問題。

馬氏距離可用于判斷點到某個分布的距離。

馬氏距離是表示數據的協方差距離,計算兩個未知樣本集的相似度的方法。

公式:

馬氏距離是旋轉變換縮放后的歐氏距離,所以馬氏距離的計算公式可以由歐式距離推導而來。

如果協方差矩陣為單位矩陣,馬氏距離就簡化為歐式距離。

歐式距離兩個分量的權值都是1,而馬氏距離可以是其他值。

等距線:??

旋轉橢圓

馬氏距離,將變量按照主成分進行旋轉,讓維度間相互獨立,然后進行標準化,讓維度同分布。

5、余弦距離

由于馬氏距離在遮擋后的度量有些問題,因此DeepSort加入了圖像特征相似度度來進行綜合判斷。

余弦距離則是一種相似度度量方式。

馬氏距離是針對于位置進行區分,而余弦距離則是針對于方向和特征。

余弦相似度是一種常用的衡量向量之間相似度的方法,它可以用于計算兩個向量之間的夾角的余弦值。

在圖像相似度計算中,可以將圖像轉換為特征向量,在DeepSort中就是使用了ReID網絡,然后使用余弦相似度來比較這些特征向量的相似程度。

余弦相似度的計算公式如下:

其中,A和B分別表示兩個向量,·表示向量的點積,||A||和||B||表示向量的范數(即向量的長度)。

余弦相似度的取值范圍在 -1 到 1 之間,值越接近 1 表示兩個向量越相似,越接近 -1 表示兩個向量越不相似,接近 0 表示兩個向量之間沒有明顯的相似性或差異。

在圖像相似度計算中,可以將圖像轉換為特征向量(如使用卷積神經網絡提取的特征向量),然后計算這些特征向量之間的余弦相似度來衡量圖像的相似性。

6、總結

DeepSort著重要解決的一個問題就是遮擋后的ID切換的問題,在遮擋一段時間后不管是IOU距離還是馬氏距離,其實效果都不是很理想。

因此要想建立這種遠程聯系就要進行特征比對。

這個很像孿生網絡的思想,建立一個歷史目標庫,檢測框與目標庫一一比對,相似度高的就是同一個目標,進行軌跡關聯。

因此這里的ReID網絡自然也可以用孿生網絡來做。

孿生網絡的應用有兩種思路,一種就是當做ReID網絡來用,下一幀使用檢測器檢測出來,然后對框內的目標進行相似度比對,這是判別式的思想。

另一種是當做生成式來用,對上一幀的檢測框里面的目標進行特征提取,然后下一幀就不用檢測器了,而是直接去所搜區域,逐一進行相似度比對找到目標。

?——————

淺談則止,細致入微AI大道理

掃描下方“AI大道理”,選擇“關注”公眾號

—————————————————————

?

—————————————————————

投稿吧?? |?留言吧

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/43395.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/43395.shtml
英文地址,請注明出處:http://en.pswp.cn/news/43395.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

排序算法分析——什么時候 用 什么排序

排序算法 & 分析 排序算法歷史排序算法分析很快的排序較快的排序中等的排序很慢的排序 分析的結果0.沒有要求1.對速度有要求2.邊排序邊操作3.條件1&條件24.在有序數中操作5.條件1&條件4 了解各種排序,詳見排序專欄 排序算法歷史 縱觀排序算法的歷史&a…

硬件產品經理:從入門到精通(新書發布)

目錄 簡介 新書 框架內容 相關課程 簡介 在完成多款硬件產品從設計到推向市場的過程后。 筆者于2020年開始在產品領域平臺輸出硬件相關的內容。 在這個過程中經常會收到很多讀者的留言,希望能推薦一些硬件相關的書籍或資料。 其實,筆者剛開始做硬…

10. 實現業務功能--退出登錄

目錄 1. 實現 Controller 2. 單體測試 3. 實現前端界面 退出的具體實現邏輯如下: 1. 用戶訪問退出接口 2. 服務器注銷 Session( 在 Controller 中可以直接進行處理 ) 3. 返回成功或失敗 4. 如果返回成功瀏覽器跳轉到相應頁面 5. 結束 一般來說&#…

使用VS2015打開.pro文件后,編譯報錯

編譯報錯內容: MSB8036 找不到 Windows SDK 版本10.0.18362.0。請安裝所需的版本的 Windows SDK 或者在項目屬性頁中或通過右鍵單擊解決方案并選擇“重定解決方案目標”來更改 SD 方法: 1.右鍵點擊 Solution上,在彈出的框中點擊“Retarget…

調整數組使奇數全部都位于偶數前面

題目內容: 輸入一個整數數組,實現一個函數, 來調整該數組中數字的順序使得數組中所有的奇數位于數組的前半部分, 所有偶數位于數組的后半部分。 題目思路: 將奇數部分放在前半部分,偶數部分放在后半部分&am…

學習筆記230804---restful風格的接口,delete的傳參方式問題

如果后端提供的刪除接口是restful風格,那么使用地址欄拼接的方式發送請求,數據放在主體中,后端接受不到,當然也還有一種可能,后端在這個接口的接參設置上是req.query接參。 問題描述 今天遇到的問題是,de…

新榜 | CityWalk本地生活商業價值洞察報告

如果說現在有人問,最新的網絡熱詞是什么? “CityWalk”,這可能是大多數人的答案。 近段時間,“CityWalk”刷屏了各種社交媒體,給網友們帶來了一場“城市漫步”之旅。 脫離群體狂歡,這個在社交媒體引發熱議的詞匯背后又…

首發 | FOSS分布式全閃對象存儲系統白皮書

一、 產品概述 1. 當前存儲的挑戰 隨著云計算、物聯網、5G、大數據、人工智能等新技術的飛速發展,數據呈現爆發式增長,預計到2025年中國數據量將增長到48.6ZB,超過80%為非結構化數據。 同時,數字經濟正在成為我國經濟發展的新…

RabbitMQ安裝配置,筆記整理 RabbitMQ3.12.2版本安裝配置

官網下載 RabbitMQ 官方地址:RabbitMQ: easy to use, flexible messaging and streaming — RabbitMQ 下載時需注意Erlang Versions的版本 這里下載的是3.12.2 2.安裝依賴環境 在線安裝依賴環境: yum install build-essential openssl openssl-dev…

銳捷無線產品運維(Web登錄、 命令行登錄)

目錄 登錄AP產品 Console登錄(只可以現場登錄) Web/Telnet/SSH登錄(可以現場、遠程登錄) 配置AP的管理地址 通過Web界面遠程登錄 通過Telnet、SSH等命令行的方式登錄 登錄AC產品 Console登錄(只可以現場登錄&a…

[bug] 記錄version `GLIBCXX_3.4.29‘ not found 解決方法

在使用mediapipe 這個庫的時候,首次使用出現 GLIBCXX_3.4.29’ not found 錯誤, 看起來是安裝mediapipe 的時候自動升級了 matplotlib 這個庫,導致依賴的 libstd.so 版本不滿足了,GLIBCXX_3.4.29 is an object from libstdc.so.…

【c語言】字符函數與字符串函數(上)

大家好呀,今天給大家分享一下字符函數和字符串函數,說起字符函數和字符串函數大家會想到哪些呢??我想到的只有求字符串長度的strlen,拷貝字符串的strcpy,字符串比較相同的strcmp,今天,我要分享給大家的是我們一些其他的…

Photoshop制作漂亮光澤感3D按鈕

原文鏈接(https://img-blog.csdnimg.cn/45472c07f29944458570b59fe1f9a0e0.png)

CentOS gcc介紹及快速升級

1.gcc介紹 GCC(GNU Compiler Collection)是一個開源的編譯器套件,由 GNU(GNUs Not Unix!的遞歸縮寫) 項目開發和維護。它是一個功能強大且廣泛使用的編譯器,支持多種編程語言,包括 C、C、Objective-C、Fortran、Ada 和…

性能測試技術之基礎篇(精華)

目錄 一、什么是性能? 二、什么是性能測試? 三、性能測試結果需要記錄哪些參數? 四、如何做性能測試(性能測試流程)? 1、指標建模 2、診斷調優 五、常見性能測試工具 一、什么是性能? …

【C語言】字符函數和字符串函數

目錄 1.求字符串長度strlen 2.長度不受限制的字符串函數 字符串拷貝strcpy 字符串追加strcat 字符串比較strcmp 3.長度受限制的字符串函數介紹strncpy strncat ?編輯strncmp 4.字符串查找strstr 5.字符串分割strtok 6.錯誤信息報告 strerror perror 7.字符分類函…

【算法挨揍日記】day03——雙指針算法_有效三角形的個數、和為s的兩個數字

611. 有效三角形的個數 611. 有效三角形的個數https://leetcode.cn/problems/valid-triangle-number/ 題目描述: 給定一個包含非負整數的數組 nums ,返回其中可以組成三角形三條邊的三元組個數。 解題思路: 本題是一個關于三角形是否能成立…

淺談Fetch API

什么是Fetch API Fetch API 是一種現代的 JavaScript API,用于進行網絡請求和處理響應數據。它提供了一種更簡單和更靈活的方式來執行網絡請求,取代了傳統的 XMLHttpRequest(XHR)。 Fetch API 具有以下特點: Promise…

概述、搭建Redis服務器、部署LNP+Redis、創建Redis集群、連接集群、集群工作原理

Top NSD DBA DAY09 案例1:搭建redis服務器案例2:常用命令限案例3:部署LNPRedis案例4:創建redis集群 1 案例1:搭建redis服務器 1.1 具體要求如下 在主機redis64運行redis服務修改服務運行參數 ip 地址192.168.88.6…

【問題整理】Ubuntu 執行 apt-get install xxx 報錯

Ubuntu 執行 apt-get install xxx 報錯 一、問題描述: 執行apt-get install fcitx時,報如下錯誤 grub-pc E: Sub-process /usr/bin/dpkg returned an error code (1)二、解決方法: 嘗試修復依賴問題: sudo apt-get -f install這個命令會嘗試修復系統…