人工智能之目標追蹤DeepSort源碼解讀(yolov5目標檢測,代價矩陣,余弦相似度,馬氏距離,匹配與預測更新)

要想做好目標追蹤,須做好目標檢測,所以這里就是基于yolov5檢測基礎上進行DeepSort,叫它為Yolov5_DeepSort。整體思路是先檢測再追蹤,基于檢測結果進行預測與匹配。

一.參數與演示

這里用到的是coco預訓練人的數據集:

二.針對檢測結果初始化track

對每一幀數據都輸出yolo5的檢測結果(主要是四個坐標值)

上圖是說在第一幀時檢測到8個框,它們每個框的4個坐標值如上圖。

置信度是指每個框是人的可能性是多少。

下面就看它取特征的網絡結構:

最終輸出的特征結果是每個框(一共8個框)對應的128維的向量。

上圖是按置信度過濾掉分值低的,然后再從detections對象出取出過濾后的boxes與置信度值(得分)。

三.對track執行預測操作

?

對上二個張圖中寫的卡曼濾波更正為卡爾曼濾波。按上圖所示下面就實例化Track了,如下圖:

一個track只會保存100個特征,也就保存100幀結果。到此第一幀的追蹤就完成(其實第一幀也只是初始化track,沒做核心內容,從第二幀開始才執行核心內容),

上面二個方法也是卡爾曼濾波的預測與更新兩個核心操作。

下面開始第二幀追蹤了,這里track已經有值了:

四.狀態量預測結果

上圖中mean[3]就是指h的值,因為對人進行跟蹤時,隨著運動,距離越遠h值變得越小,越近h值就會變得越大,其它的x,y值是固定的,a這個長寬比也是固定的,所以說h變化比較大,那么就用基于h來做噪聲矩陣。

按h初始化得到一個噪聲矩陣P:

得到狀態轉移矩陣A:

?

上圖中寫的FX中的F改成A,表示狀態轉移矩陣。

其實上圖中寫的F實際上是A來的,表示狀態轉移矩陣。

做8次后tracker.predict()就結束了,下面將進行tracker.update(detections)方法了。tracker.update(detections)不但完成更新還要完成匹配,是最核心的方法。

五.IOU代價矩陣計算

tracker.update(detections)流程是先匹配再更新操作的。匹配包括級聯匹配,當未匹配上就做IOU。

因為3次確認上才會做級聯匹配,那現在第2幀進來時不會做級聯匹配,就會做IOU匹配:

IOU核心就是把代價矩陣做出來,使它的損失最小(距離最小),其實就是計算track與detection之間的IOU距離值出來。

初始化出一個全是0的8*8的代價矩陣cost_matrix出來。

六.參數更新操作

匈牙利匹配只需要一個代價矩陣cost_matrix參數,輸入代價矩陣返回回來最合適的匹配。上面已經得到這個參數了,所以下面就直接調用這方法:

linear_assignment是scipy中已經實現好的,直接調用返回對應的ID值:

調用的結果如下圖:

有返回ID后就對detection與track中的值進行匹配過濾,如下圖:

返回后得到匹配后的結果,完成IOU代價矩陣計算:

由上圖可見到匹配到8個對,那接下來就要做更新操作:

取前4個值:

將協方差矩陣映射到檢測空間:

上圖最后把均值向量映射到檢測空間的4個值(mean),協方差映射到檢測空間+初始化的噪聲矩陣都返回回去。映射完后就計算卡爾曼增益了,如下圖:

至此卡爾曼增益已算出,預測值與協方差距陣都做了更新。

七.級聯匹配模塊

上圖中假設8個人都連續命中3次那也就是要進行級聯匹配,

為什么先做級聯匹配呢?因為級聯匹配是對確定狀態(連續3幀都匹配上,即比較有把握的匹配了)的匹配。IOU匹配主要是對新的detection的匹配。

八.ReID特征代價矩陣計算

進入級聯匹配方法中,它主要做外觀信息與運動信息的匹配:

它也一樣要構建代價矩陣出來

求上面所說的代價矩陣用到的是余弦相似度計算

這里運用到二個特征向量之間做余弦相似度,取出距離最近的(相似度最大的)出來,值得其它地方運用。

九.匹配結果與總結

返回級聯的代價矩陣后,也要做過濾:

IOU匹配都是每一幀都會去匹配的。追蹤的核心思想是當前幀track是否與檢測值bbox匹配上,其中核心是代價矩陣的求解。

總結:目標檢測得到bbox,第一幀得到track(iou匹配),連續3幀確定的就進行級聯匹配(包括iou匹配)。

本例是對人的目標做追蹤,而如果換成其它物體追蹤就要把ckpt.t7換一下。

.

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

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

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

相關文章

C++藍橋杯基礎篇(四)

片頭 嗨~小伙伴們,大家好!今天我們來學習C藍橋杯基礎篇(四),繼續練習相關習題。準備好了嗎?咱們開始咯~ 題目1 連續整數相加 思路分析: 這道題,我們可以把從鍵盤中讀取n寫在while循…

YOLOv12從入門到入土(含結構圖)

論文鏈接:https://arxiv.org/abs/2502.12524 代碼鏈接:https://github.com/sunsmarterjie/yolov12 文章摘要: 長期以來,增強YOLO框架的網絡架構一直至關重要,但一直專注于基于cnn的改進,盡管注意力機制在建…

SpringSecurity基于配置方法控制訪問權限:MVC匹配器、Ant匹配器

Spring Security 是一個功能強大且高度可定制的身份驗證和訪問控制框架。在 Spring Security 中,可以通過配置方法來控制訪問權限。認證是實現授權的前提和基礎,在執行授權操作前需要明確目標用戶,只有明確目標用戶才能明確它所具備的角色和權…

【iOS】SwiftUI狀態管理

State ObservedObject StateObject 的使用 import SwiftUIclass CountModel: ObservableObject {Published var count: Int 0 // 通過 Published 標記的變量會觸發視圖更新init() {print("TimerModel initialized at \(count)")} }struct ContentView: View {State…

跟著 Lua 5.1 官方參考文檔學習 Lua (3)

文章目錄 2.5 – Expressions2.5.1 – Arithmetic Operators2.5.2 – Relational Operators2.5.3 – Logical Operators2.5.4 – Concatenation2.5.5 – The Length Operator2.5.6 – Precedence2.5.7 – Table Constructors2.5.8 – Function Calls2.5.9 – Function Definiti…

(LLaMa Factory)大模型訓練方法--監督微調(Qwen2-0.5B)

1、準備訓練數據:SFT 的數據格式有多種,例如:Alpaca格式、OpenAI格式等。 #其中Alpaca格式如下:[{"instruction":"human instruction (required)","input":"human input (optional)",&qu…

Sojson高級加密技術科普

1. 引言 什么是Sojson? Sojson是一款用于JavaScript代碼加密與混淆的工具,它能夠有效保護前端代碼的知識產權,避免開發者的心血被隨意竊取。 為什么需要代碼加密? 在當今的互聯網環境下,代碼被輕易復制、篡改或逆向…

自制簡單的圖片查看器(python)

圖片格式:支持常見的圖片格式(JPG、PNG、BMP、GIF)。 import os import tkinter as tk from tkinter import filedialog, messagebox from PIL import Image, ImageTkclass ImageViewer:def __init__(self, root):self.root rootself.root.…

【核心算法篇十三】《DeepSeek自監督學習:圖像補全預訓練方案》

引言:為什么自監督學習成為AI新寵? 在傳統監督學習需要海量標注數據的困境下,自監督學習(Self-Supervised Learning)憑借無需人工標注的特性異軍突起。想象一下,如果AI能像人類一樣通過觀察世界自我學習——這正是DeepSeek圖像補全方案的技術哲學。根據,自監督學習通過…

Nginx下proxy_redirect的三種配置方式

Nginx中的proxy_redirect指令,用于修改代理服務器接收到的后端服務器響應中的重定向URL。在代理環境中,若后端返回的重定向URL不符合客戶端需求,就用它調整。 語法 proxy_redirect default; proxy_redirect redirect replacement; proxy_…

使用DeepSeek+本地知識庫,嘗試從0到1搭建高度定制化工作流(自動化篇)

7.5. 配圖生成 目的:由于小紅書發布文章要求圖文格式,因此在生成文案的基礎上,我們還需要生成圖文搭配文案進行發布。 原實現思路: 起初我打算使用deepseek的文生圖模型Janus進行本地部署生成,參考博客:De…

HBuilderX中,VUE生成隨機數字,vue調用隨機數函數

Vue 中可以使用JavaScript的Math.random() 函數生成隨機數,它會返回 0 到 1 之間的浮點數, 如果需要0到1000之前的隨機數,可以對生成的隨機數乘以1000,再用js的向下取整函數Math.floor() 。 let randNum Math.random(); // 生成…

Redis_基礎

Redis 命令啟動、配置密碼 Redis是綠色軟件,所以直接解壓就能使用 配置文件為:redis.windows.conf 啟動redis 服務: redis-server.exe redis.windows.conf啟動客戶端: redis-cli.exe默認沒有給Redis配置密碼,所以在…

網絡通信基礎:端口、協議和七層模型詳解,網絡安全零基礎入門到精通實戰教程!

一、端口和協議的概念 1.在網絡技術中,端口(Port) 大致有兩種意思: 一是物理意義上的端口,比如,ADSL Modem、集線器、交換機、路由器用于連接其他網絡設備的接口,如RJ-45端口、SC端口等等。 二是邏輯意義上的端口&…

Bug:Goland debug失效詳細解決步驟【合集】

Bug:Goland debug失效詳細解決步驟【合集】 今天用Goland開發時,打斷點,以debug方式運行,發現程序并沒有斷住,程序跳過了斷點,直接運行結束。網上搜尋了大量文章,最后得以解決,特此在…

pycharm社區版有個window和arm64版本,到底下載哪一個?還有pycharm官網

首先pycharm官網是這一個。我是在2025年2月16日9:57進入的網站。如果網站還沒有更新的話,那么就往下滑一下找到 community Edition,這個就是社區版了免費的。PyCharm:適用于數據科學和 Web 開發的 Python IDE 適用于數據科學和 Web 開發的 Python IDE&am…

WordPress Ai插件:支持提示詞生成文章和chat智能對話

源碼介紹 適用于 WordPress 的 AI 助手開源免費插件展開介紹,包含插件功能、使用說明、注意事項等內容,為 WordPress 用戶提供了一個集成多種 AI 模型的工具選擇。 插件概述:插件名稱為小半 WordPress AI 助手,支持多種 AI 模型&…

Spring Boot02(數據庫、Redis)---java八股

數據庫相關 Mybatis的優缺點 優點: 基于 SQL 語句編程,相當靈活,不會對應用程序或者數據庫的現有設計造成任何影響,SQL 寫在 XML 里,解除 sql 與程序代碼的耦合,便于統一管理;提供 XML 標簽&am…

【LeetCode】LCR 139. 訓練計劃 I

題目 教練使用整數數組 actions 記錄一系列核心肌群訓練項目編號。為增強訓練趣味性,需要將所有奇數編號訓練項目調整至偶數編號訓練項目之前。請將調整后的訓練項目編號以 數組 形式返回。 示例 1: 輸入:actions [1,2,3,4,5] 輸出&#…

波導陣列天線 學習筆記9 使用緊湊高效率饋網的寬帶圓極化陣列天線

摘要: 一種寬帶圓極化波導陣列天線在本文中提出。所提出的陣列天線包括四個反向對稱的(antipodally)脊單元和一個有著插入階梯腔體的兩個正交膜片的緊湊型饋網。兩個器件都是寬帶的并且它們能獨立地或者一起工作。所提出的拓撲給出了一種為大規模陣列的基礎的2x2波導…