当前位置: 首页 > news >正文

Deepsort项目详解

一、目标追踪整体代码

        代码目录如下图所示:

追踪相关代码:

检测相关代码和权重

调用  检测   和 追踪的代码:

首先代码分为三个部分:

  1. 目标追踪的相关代码和权重
  2. 目标检测相关代码和权重,这里用的是yolov5.5目标检测算法
  3. 调用检测和追踪代码相关py文件

二 ,追踪部分代码讲解

YOLOv5完成了项目的检测部分,这里就不再展开

2.1 Configs文件目录下:

 deep_sort.yaml:这个yaml文件主要是保存一些参数。

(1)里面有特征提取权重的目录路径;

(2)最大余弦距离,用于级联匹配,如果大于该阈值,则忽略。

(3)检测结果置信度阈值

(4)非极大抑制阈值,设置为1代表不进行抑制

(5)最大IOU阈值

(6)最大寿命,也就是经过MAX_AGE帧没有追踪到该物体,就将该轨迹变为删除态。

(7)最高击中次数,如果击中该次数,就由不确定态转为确定态。

(8)最大保存特征帧数,如果超过该帧数,将进行滚动保存。
 

2.2  deep目录下

ckpt.t7:这是一个特征提取网络的权重文件,特征提取网络训练好了以后会生成这个权重文件,方便在目标追踪的时候提取目标框中的特征,在目标追踪的时候避免ID switch。
evaluate.py:计算特征提取模型精确度。

feature_extractor.py:提取对应bounding box中的特征, 得到一个固定维度的特征,作为该bounding box的代表,供计算相似度时使用。

model.py:特征提取网络模型,该模型用来提取训练特征提取网络权重。

train.py:训练特征提取网络的python文件

test.py:测试训练好的特征提取网络的性能

2.3  sort目录下

detection.py:保存通过目标检测的一个检测框框,以及该框的置信度和获取的特征;同时还提供了框框的各种格式的转化方法。

iou_matching.py:计算两个框框之间的IOU。

kalman_filter.py:卡尔曼滤波器的相关代码,主要是利用卡尔曼滤波来预测检测框的轨迹信息。

linear_assignment.py:利用匈牙利算法匹配预测的轨迹框和检测框最佳匹配效果。

nn_matching.py:通过计算欧氏距离、余弦距离等距离来计算最近领距离。

preprocessing.py:非极大抑制代码,利用非极大抑制算法将最优的检测框输出。

track.py:主要储存的是轨迹信息,其中包括轨迹框的位置和速度信息,轨迹框的ID和状态,其中状态包括三种,一种是确定态、不确定态、删除态三种状态。

tracker.py:保存了所有的轨迹信息,负责初始化第一帧,卡尔曼滤波的预测和更新,负责级联匹配,IOU匹配


2.4  模型的对象跟踪器

三 ,检测  和 追踪的调用

检测器  :AIDetector_pytorch.py

追踪器 : tracker.py

调用上述两个,实现  针对读取的视频进行目标追踪  :demo.py

四 ,实现原理流程

  1. 准备数据:将经过 YOLOv5 目标检测得到的目标位置信息以及其对应的类别标签作为输入。这些数据将作为 DeepSORT 算法的输入。

  2. 安装 DeepSORT:首先需要安装并配置 DeepSORT 算法。你可以在其官方文档中找到安装和配置的指南。

  3. 建立轨迹:使用 DeepSORT 算法对每个目标进行跟踪,并将它们关联成轨迹。DeepSORT 会根据目标的运动特征和外观特征来进行匹配和关联。

  4. 处理匹配问题:在实际应用中,可能会遇到匹配过程中的问题,比如遮挡、目标消失、新目标出现等。需要在算法中实现相应的逻辑来处理这些问题,确保跟踪的准确性和鲁棒性。

  5. 结合检测和跟踪:将经过 DeepSORT 跟踪后的结果与 YOLOv5 的目标检测结果结合起来,从而实现完整的目标检测和跟踪系统。

  6. 评估和调优:在实施完整的检测和跟踪系统后,需要对系统进行评估和调优。利用测试数据集来评估系统的性能,根据评估结果来调整参数或改进算法。

总的来说,实现目标跟踪需要将不同模块(如目标检测和目标跟踪)进行有效整合,同时考虑实际场景中可能遇到的各种问题。因此,在整个实现过程中,需要综合考虑算法的性能、稳定性和实时性,以实现一个准确、高效的目标跟踪系统。

相关文章:

Deepsort项目详解

一、目标追踪整体代码 代码目录如下图所示: 、 追踪相关代码: 检测相关代码和权重 调用 检测 和 追踪的代码: 首先代码分为三个部分: 目标追踪的相关代码和权重目标检测相关代码和权重,这里用的是yolov5.5目标检…...

C语言证明一个偶数总能表示为两个素数之和。输入一个偶数并将其分解为两个素数

完整代码&#xff1a; // 一个偶数总能表示为两个素数之和。输入一个偶数并将其分解为两个素数#include<stdio.h>//判断一个数n是否为素数 int isPrimeNumber(int n){//1不是素数if (n1){return 0;}for (int i 2; i <(n/2); i){//当有n能被整除时&#xff0c;不是素…...

Python 的 datetime 模块

目录 简介 一、date类 &#xff08;一&#xff09;date 类属性 &#xff08;二&#xff09;date 类方法 &#xff08;三&#xff09;实例属性 &#xff08;四&#xff09;实例的方法 二、time类 &#xff08;一&#xff09;time 类属性 &#xff08;二&#xff09;tim…...

Termius for Mac:掌控您的云端世界,安全高效的SSH客户端

你是否曾经在Mac上苦苦寻找一个好用的SSH客户端&#xff0c;让你能够远程连接到Linux服务器&#xff0c;轻松管理你的云端世界&#xff1f;现在&#xff0c;我们向你介绍一款强大而高效的SSH客户端——Termius。 Termius是一款专为Mac用户设计的SSH客户端&#xff0c;它提供了…...

Ubuntu 下监控并自动重启网卡

很多时候网站服务器挂掉也可能是因为网卡挂掉了&#xff0c;如果你网站不能访问时 SSH 也无效了一般都是这个问题。这时可以通过一个定时脚本监控网络并进行自动重启。 1 创建脚本 auto_restart_network.sh 4 5 6 7 8 9 #!/bin/bash ping www.baidu.com -c 1 >/dev/null i…...

377. 组合总和 Ⅳ

给你一个由 不同 整数组成的数组 nums &#xff0c;和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3], target 4 输出&#xff1a;7 解释&#…...

【OpenCV】计算视频的光流并跟踪物体calcOpticalFlowPyrLK

一、介绍 计算光流可以使用OpenCV的calcOpticalFlowPyrLK方法&#xff0c;cv2.calcOpticalFlowPyrLK是OpenCV库中的一个函数&#xff0c;用于计算稀疏光流。它实现的是Lucas-Kanade方法&#xff0c;这是一种常用的光流计算方法。 光流是图像中物体运动的近似表示&#…...

C语言进阶

数组 在基础篇说过&#xff0c;数组实际上是构造类型之一&#xff0c;是连续存放的。 一维数组 定义 定义格式&#xff1a;[存储类型] 数据类型 数组名标识符[下标]; 下面分模块来介绍一下数组的定义部分的内容。 1、初始化和元素引用&#xff1a; 可以看到数组是连续存储…...

Linux之gdb

gdb就是一个Linux的调试工具&#xff0c;类似与vs里面的调试 可执行程序也有格式&#xff0c;不是简单的二进制堆砌...

100天精通风控建模(原理+Python实现)——第3天:风控建模中如何处理缺失值?

风控模型已在各大银行和公司都实际运用于业务,用于营销和风险控制等。    之前已经阐述了100天精通风控建模(原理+Python实现)——第1天:什么是风控建模?    100天精通风控建模(原理+Python实现)——第2天:风控建模有什么目的?    接下来看下100天精通风控建模(原理…...

Leetcode—680.验证回文串II【简单】

2023每日刷题&#xff08;二十七&#xff09; Leetcode—680.验证回文串II 实现代码 class Solution { public:bool judgeFunc(string s, int left, int right) {while(left < right) {if(s[left] ! s[right]) {return false;}left;right--;}return true;}bool validPalin…...

Redis五种数据类型及命令操作(二)

&#x1f388;个人公众号:&#x1f388; :✨✨✨ 可为编程✨ &#x1f35f;&#x1f35f; &#x1f511;个人信条:&#x1f511; 知足知不足 有为有不为 为与不为皆为可为&#x1f335; &#x1f349;本篇简介:&#x1f349; 本篇记录Redis五种数据类型及命令操作&#xff0c;如…...

低代码信创开发核心技术(三):MDA模型驱动架构及元数据系统设计

前言 写最后一篇文章的时候&#xff0c;我本人其实犹豫了半年&#xff0c;在想是否发布出这篇文章&#xff0c;因为可能会动了很多人的利益。所以这篇文章既是整个低代码信创开发的高度总结&#xff0c;也是最为精华的一部分&#xff0c;它点明了低代码中最为核心的技术。虽然…...

HslCommunication模拟西门子读写数据

导入HslCommunication C#端代码&#xff08;上位机&#xff09; 这里要注意的是上位机IP用的当前电脑的IP。 using HslCommunication; using HslCommunication.Profinet.Siemens; using System; using System.Collections.Generic; using System.ComponentModel; using Syste…...

多测师肖sir_高级金牌讲师_ui自动化po框架版本02

ui自动化po框架版本02 一、 pages下的BasePage.py模块 此模块是封装所有用例的基类 比如说&#xff1a;所有用例要用到的元素定位&#xff0c;以及输入框输入&#xff0c;点击&#xff0c;下拉等等公共方法import unittest #导入unittest 框架 from time import *# 调试代码…...

线性判别分析(Linear Discriminant Analysis,LDA)

Linear Discriminant Analysis&#xff08;LDA&#xff09; 输入&#xff1a; 原始数据$D((x_1,y_1),(x_2,y_2),...,(x_m,y_m)$ 、​ 类别标签$Y[y_1,y_2,...,y_n]$、​ 降维到的维度d输出&#xff1a; 投影矩阵W、投影后的样本$Z$、算法步骤&#xff1a; 1.计算类内散度…...

git的分支及标签使用及情景演示

目录 一. 环境讲述 二.分支 1.1 命令 1.2情景演练 三、标签 3.1 命令 3.2 情景演示 ​编辑 一. 环境讲述 当软件从开发到正式环境部署的过程中&#xff0c;不同环境的作用如下&#xff1a; 开发环境&#xff1a;用于开发人员进行软件开发、测试和调试。在这个环境中…...

深度解析找不到msvcp120.dll相关问题以及解决方法

​在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“msvcp120.dll丢失”。这个错误通常会导致某些应用程序无法正常运行&#xff0c;给用户带来很大的困扰。那么&#xff0c;如何解决msvcp120.dll丢失的问题呢&#xff1f;本文将为大家介绍…...

SQL Server 2022 安装步骤——SQL Server设置身份验证教程

目录 前言: 安装详细步骤: 第一步: 第二步: 第三步: 第四步: SQL Server 连接的方式: Window验证: SQL Server验证: 两者之间区别: 总结: SQL Server身份验证登录配置教程:​ 第一步: 第二步: 第三步: 番外篇: 前言: 本文讲解&#xff0c;如何安装SQL Server安…...

Maven各方面配置好了却无法显示版本

今天配置了maven环境&#xff0c;各方面都配置好了命令行却一直没办法显示maven的版本&#xff0c;原因 竟是两个JDK导致maven无法选择&#xff0c;因为maven依赖于JDK&#xff0c;导致在选择JDK的时候差生了二义 性&#xff0c;在环境变量里面删除不常用的JDK&#xff0c;只…...

ChatterUI:突破移动端AI聊天限制,重构本地与云端智能对话体验

ChatterUI&#xff1a;突破移动端AI聊天限制&#xff0c;重构本地与云端智能对话体验 【免费下载链接】ChatterUI Simple frontend for LLMs built in react-native. 项目地址: https://gitcode.com/gh_mirrors/ch/ChatterUI ChatterUI是一款基于React Native构建的移动…...

构建高可用CephFS NFS网关:NFS-Ganesha与RADOS集群的深度整合

1. 为什么需要CephFS的NFS网关&#xff1f; 想象一下你有个超大的仓库&#xff08;CephFS&#xff09;&#xff0c;里面堆满了各种宝贝文件。但每次取东西都得用专门的叉车&#xff08;Ceph客户端&#xff09;&#xff0c;而大多数工人&#xff08;普通服务器&#xff09;只会开…...

Java程序设计(第3版)第二章——java的数据类型:字符 char

字符 char 关键字:char 字节数:2B 编码:Unicode字符集(万国码) 字面值方式&#xff1a; ①字符赋值&#xff1a;用单引号(&#xff07;&#xff07;&#xff09;引起来的一个字符&#xff0c; char c&#xff1d;’A’; char c1&#xff1d;&#xff07;中&#xff07;; ②数值…...

SamloaderKotlin 完全指南:跨平台三星固件下载工具的免费终极解决方案

SamloaderKotlin 完全指南&#xff1a;跨平台三星固件下载工具的免费终极解决方案 【免费下载链接】SamloaderKotlin 项目地址: https://gitcode.com/gh_mirrors/sa/SamloaderKotlin 你是否曾经为了下载三星官方固件而四处寻找工具&#xff1f;是否厌倦了那些复杂的命令…...

跳表(Skip List):思想、优劣与应用场景完全解读

一、为什么需要跳表&#xff1f;在计算机科学中&#xff0c;我们经常需要一种数据结构&#xff0c;既能快速查找&#xff0c;又能高效插入和删除。数组的二分查找虽然快&#xff08;O(log n)&#xff09;&#xff0c;但插入删除却需要移动大量元素&#xff08;O(n)&#xff09;…...

2026年,跨端框架到底怎么选?

跨平台开发长期面临“一次编码、多端运行”的理想与现实落差。开发者常陷入取舍困境&#xff1a;既要兼顾性能与体验&#xff0c;又要控制包体与维护成本&#xff0c;更要在 Android、iOS、HarmonyOS 甚至 Web 和小程序间保持一致。实际项目中&#xff0c;常见坑包括启动延迟、…...

高效直链文件分享平台深度评测(二)

1. 为什么你需要一个高效直链文件分享平台&#xff1f; 在日常工作和学习中&#xff0c;我们经常需要快速分享文件给同事、朋友或客户。传统的网盘虽然功能丰富&#xff0c;但往往需要对方注册账号、下载客户端&#xff0c;甚至忍受漫长的广告等待时间。而直链文件分享平台则提…...

3分钟解锁B站缓存视频:m4s-converter无损转换指南

3分钟解锁B站缓存视频&#xff1a;m4s-converter无损转换指南 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾为B站下架的视频感到惋惜&…...

MPL3115A2传感器驱动开发与嵌入式高度气压测量实战

1. MPL3115A2 压力/高度/温度传感器深度技术解析 MPL3115A2 是 NXP&#xff08;现为恩智浦半导体&#xff09;推出的一款高精度、低功耗、IC 接口的绝对压力传感器&#xff0c;集成温度测量与气压高度计算引擎。该器件并非简单的模拟信号采集芯片&#xff0c;而是一个具备完整数…...

5个高效技巧:掌握EmojiOne彩色表情字体完全指南

5个高效技巧&#xff1a;掌握EmojiOne彩色表情字体完全指南 【免费下载链接】emojione-color OpenType-SVG font of EmojiOne 2.3 项目地址: https://gitcode.com/gh_mirrors/em/emojione-color EmojiOne Color是一款由Adobe开发的开源彩色字体&#xff0c;采用OpenType…...