【Yolov5+Deepsort】训练自己的数据集(1)| 目标检测&追踪 | 轨迹绘制

这篇具有很好参考价值的文章主要介绍了【Yolov5+Deepsort】训练自己的数据集(1)| 目标检测&追踪 | 轨迹绘制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

📢前言:本篇是关于如何使用YoloV5+Deepsort训练自己的数据集,从而实现目标检测与目标追踪,并绘制出物体的运动轨迹。本章讲解的为第一个内容:简单介绍YoloV5+Deepsort中所用到的目标检测,追踪及sort&Deppsort算法。本文中用到的数据集均为自采,实验动物为斑马鱼。文尾附Deepsort原论文。

💬源码如下:

GitHub - mikel-brostrom/yolo_tracking: A collection of SOTA real-time, multi-object tracking algorithms for object detectors

GitHub - Sharpiless/Yolov5-Deepsort: 最新版本yolov5+deepsort目标检测和追踪,能够显示目标类别,支持5.0版本可训练自己数据集

【Yolov5+Deepsort】训练自己的数据集(1)| 目标检测&追踪 | 轨迹绘制,目标追踪&目标检测,YOLO,目标跟踪,目标检测,机器学习,人工智能,计算机视觉

目录

Ⅰ简述目标检测

0x00 什么是目标检测

0x01 一般步骤

0x02 常用算法

Ⅱ 简述目标追踪

0x00 什么是目标追踪

0x01 一般步骤

0x02 常用算法

Ⅲ sort算法

0x00 卡尔曼滤波

0x01 匈牙利算法

Ⅳ Deepsort

0x00 算法的一般流程


Ⅰ简述目标检测

0x00 什么是目标检测

目标检测是计算机视觉领域的一个重要任务,它旨在识别图像或视频中的特定对象,并通过在目标周围绘制边界框(bounding box)来标记它们的位置。

这种技术在许多实际应用中都有广泛的应用,如自动驾驶、安防监控、智能交通、人脸识别、工业质检等。

【Yolov5+Deepsort】训练自己的数据集(1)| 目标检测&追踪 | 轨迹绘制,目标追踪&目标检测,YOLO,目标跟踪,目标检测,机器学习,人工智能,计算机视觉

0x01 一般步骤

1. 输入图像:

  • 首先,目标检测算法会接收一个输入图像或视频帧。

2. 特征提取

  • 然后,算法会通过卷积神经网络(CNN)等方法对图像进行特征提取。这些特征可以是边缘、纹理、颜色等图像的局部或全局特征。

3. 候选区域生成

  • 接下来,目标检测算法会根据特征图选择一些可能包含目标的候选区域,通常称为区域提议(Region Proposals)。常用的方法包括Selective Search、R-CNN等。

4. 目标分类与定位:

  • 在得到候选区域后,算法会对每个区域进行目标分类和边界框的回归。目标分类是指确定区域中是否包含目标(如车、人、动物等),而边界框回归则是调整候选框的位置和大小以更准确地围绕目标。

5. 后处理:

  • 最后,算法会进行一些后处理步骤,例如非极大值抑制(NMS),以剔除重叠的边界框并保留最可信的检测结果。

目标检测有许多不同的算法和架构,其中一些著名的方法包括Faster R-CNN、YOLO、SSD(SINGLE SHOT MULTIBOX DETECTOR)、RetinaNet等。每种方法都有其优缺点和适用场景,取决于应用需求和计算资源。

0x02 常用算法

RCNN系列:

  • RCNN(Region-based Convolutional Neural Networks): 首先通过选择性搜索(Selective Search)算法提取候选区域,然后对每个候选区域进行卷积神经网络(CNN)特征提取和目标分类。

【Yolov5+Deepsort】训练自己的数据集(1)| 目标检测&追踪 | 轨迹绘制,目标追踪&目标检测,YOLO,目标跟踪,目标检测,机器学习,人工智能,计算机视觉

  • Fast R-CNN: 在RCNN的基础上引入ROI池化(ROI Pooling)层,使得特征提取更高效。

【Yolov5+Deepsort】训练自己的数据集(1)| 目标检测&追踪 | 轨迹绘制,目标追踪&目标检测,YOLO,目标跟踪,目标检测,机器学习,人工智能,计算机视觉

  • Faster R-CNN: 引入RPN(Region Proposal Network),将候选区域的提取和目标分类合并为一个端到端的网络,大大加快了检测速度。

【Yolov5+Deepsort】训练自己的数据集(1)| 目标检测&追踪 | 轨迹绘制,目标追踪&目标检测,YOLO,目标跟踪,目标检测,机器学习,人工智能,计算机视觉

YOLO系列

  • YOLOv1:将目标检测看作回归问题,通过一个CNN直接预测目标的边界框和类别概率。
  • YOLOv2 / YOLO9000:在YOLOv1基础上改进,引入Darknet-19网络和多尺度预测,提高检测精度。YOLO9000是在YOLOv2的基础上通过联合训练多个数据集实现了多标签分类和检测。
  • YOLOv3:进一步改进YOLOv2,采用更深的Darknet-53网络和FPN,提高小目标检测性能。

【Yolov5+Deepsort】训练自己的数据集(1)| 目标检测&追踪 | 轨迹绘制,目标追踪&目标检测,YOLO,目标跟踪,目标检测,机器学习,人工智能,计算机视觉

SSD(Single Shot Multibox Detector):一种单阶段目标检测算法,通过在不同尺度的特征图上预测边界框和类别概率来实现目标检测。

【Yolov5+Deepsort】训练自己的数据集(1)| 目标检测&追踪 | 轨迹绘制,目标追踪&目标检测,YOLO,目标跟踪,目标检测,机器学习,人工智能,计算机视觉

RetinaNet:结合了Focal Loss和FPN,用于解决目标检测中类别不平衡问题,提高了检测性能。 

EfficientDet:高效的目标检测算法,通过改进网络结构和优化目标函数,实现高精度和高效率的目标检测。

Ⅱ 简述目标追踪

0x00 什么是目标追踪

目标追踪是计算机视觉领域的一项任务,旨在从视频序列中连续地跟踪特定目标的运动轨迹。与目标检测不同,目标追踪要在时间上保持目标的一致性,而不仅仅是在单个图像中检测目标的存在。

【Yolov5+Deepsort】训练自己的数据集(1)| 目标检测&追踪 | 轨迹绘制,目标追踪&目标检测,YOLO,目标跟踪,目标检测,机器学习,人工智能,计算机视觉

0x01 一般步骤

1. 目标初始化: 首先,目标追踪算法会在视频序列的第一帧中检测和识别目标,并为目标分配唯一的ID。这个过程称为目标初始化。

2. 目标预测: 在之后的视频帧中,目标追踪算法会使用目标在上一帧中的位置和运动信息,对目标在当前帧的位置进行预测。通常,预测可以基于一些简单的运动模型或者基于目标的历史运动轨迹。

3. 目标更新: 接下来,算法会使用目标检测或特征匹配等技术来确定当前帧中目标的准确位置。这个过程可以使用像素级的区域匹配、相关滤波器、深度学习特征提取等方法。

4. 目标关联: 一旦目标在当前帧中被确定,算法需要将其与之前帧中的目标进行关联,以保持目标的一致性。这可能涉及到目标ID的跟踪,确保目标的唯一标识在整个视频序列中保持一致。

5. 后处理: 最后,目标追踪算法会进行一些后处理步骤,例如滤波或者平滑处理,以减少噪声或者不稳定性,并提高追踪的准确性和稳定性。

目标追踪在许多实际应用中都有广泛的应用,例如视频监控、自动驾驶、视频分析、虚拟现实等。

0x02 常用算法

卡尔曼滤波器(Kalman Filter): 卡尔曼滤波是一种递归的状态估计算法,通常用于目标运动预测和位置估计。它结合了观测数据和系统动力学模型,对目标的状态进行预测和更新。

粒子滤波器(Particle Filter): 粒子滤波是一种蒙特卡洛方法,它使用一组随机粒子来估计目标的状态。粒子滤波在非线性系统和非高斯噪声下表现较好。

单目标跟踪器:

  • MedianFlow: 基于KLT(Kanade-Lucas-Tomasi)光流和匹配的简单单目标跟踪器。
  • KCF(Kernelized Correlation Filters): 使用核相关滤波器来实现快速的单目标跟踪。
  • TLD(Tracking-Learning-Detection): 结合目标检测和跟踪,能够在目标丢失时重新检测目标。
  • MIL(Multi Instance Learning): 采用多实例学习方法跟踪目标。

多目标跟踪器:

  • SORT(Simple Online and Real Time Tracking): 在多目标跟踪中,通过卡尔曼滤波和匈牙利算法进行目标关联。
  • DeepSORT: 在SORT的基础上加入深度学习特征,提高目标关联的准确性和鲁棒性。
  • IOU Tracker: 使用目标边界框的IoU(Intersection over Union)来进行目标关联的简单方法。

深度学习方法:

  • Siamese网络: 使用孪生网络进行目标匹配,常用于目标跟踪任务。
  • SiamRPN、SiamFC、SiamMask: 基于Siam网络的不同变种,用于目标跟踪和目标分割。

在线学习方法:

  • 在线提升: 在线增强学习器,不断地更新模型来适应目标外观的变化。
  • Online SVM(Support Vector Machine): 在线学习SVM,用于目标分类和跟踪。

Ⅲ sort算法

SORT(Simple Online and Realtime Tracking)是一种用于多目标跟踪的简单而有效的算法,它在实时场景下能够进行在线目标追踪。

SORT算法基于卡尔曼滤波匈牙利算法的多目标跟踪器。

0x00 卡尔曼滤波

【Yolov5+Deepsort】训练自己的数据集(1)| 目标检测&追踪 | 轨迹绘制,目标追踪&目标检测,YOLO,目标跟踪,目标检测,机器学习,人工智能,计算机视觉

卡尔曼滤波是一种递归状态估计算法,主要用于估计目标在时间上的运动状态,例如位置和速度。

  • 在SORT算法中,卡尔曼滤波的作用是用于对目标的状态进行预测和更新
  • 在目标追踪过程中,卡尔曼滤波能够对目标的运动轨迹进行预测,并根据实际的检测结果对目标状态进行更新。

卡尔曼滤波的作用可分为两个主要方面:

1.目标预测

  • 在目标追踪过程中,目标在每一帧中都会进行位置预测。卡尔曼滤波通过使用之前帧中的目标状态和运动信息,预测目标在下一帧中的位置和速度。这样能够使得目标跟踪器对目标的未来位置有一个较好的估计。

2.状态更新

  • 在进行目标关联时,SORT算法会使用匈牙利算法将当前帧的检测结果与之前帧中的目标进行关联。关联的结果可能会包含一些噪声或误匹配,而卡尔曼滤波可以在一定程度上消除这些误差。通过将检测结果与卡尔曼滤波预测的状态进行融合,得到目标的最终位置和速度,并对目标状态进行更新。

0x01 匈牙利算法

【Yolov5+Deepsort】训练自己的数据集(1)| 目标检测&追踪 | 轨迹绘制,目标追踪&目标检测,YOLO,目标跟踪,目标检测,机器学习,人工智能,计算机视觉

匈牙利算法是用于解决二分图最优匹配问题的经典算法,它能够在多个候选匹配中找到最佳的匹配组合,以最小化总匹配成本。  

  • 在SORT算法中,匈牙利算法的作用是将当前帧的目标检测结果与之前帧中的跟踪目标进行关联,以确定目标在连续帧中的唯一ID。

SORT中的匈牙利算法的具体作用如下:

1.目标关联

  • 在每一帧中,进行目标检测,得到新的目标边界框。同时,之前帧中的每个已跟踪目标也有一个预测位置。
  • SORT算法会使用匈牙利算法,将当前帧的检测结果与之前帧中的目标进行关联。将目标检测与预测的目标进行匹配,得到最佳的匹配组合。

2.成本计算

  • 匈牙利算法会计算目标检测与预测目标之间的成本,成本通常由目标边界框之间的IoU(Intersection over Union)计算得出。IoU度量了两个边界框的重叠程度,可以用来评估目标检测与预测目标的相似程度。

3.最优匹配

  • 匈牙利算法的目标是找到一种最佳匹配,使得总成本最小。通过最小化目标检测与预测目标之间的成本,找到最佳的匹配组合,确定目标在连续帧中的唯一ID。

4.目标ID更新

  • 在完成匈牙利算法后,已跟踪目标的ID会随着匹配的结果进行更新。如果一个目标检测与之前的某个目标匹配,该目标将被赋予相应的ID,从而在多个连续帧中保持一致的跟踪。

🚩简单来说:

在sort算法中,

卡尔曼滤波的主要作用是利用当前时刻的运动变量来预测下一时刻的运动变量,同时第一次的检测结果用于初始化卡尔曼滤波的运动状态

匈牙利算法主要作用是将一组检测框和卡尔曼预测的框进行匹配,以找到卡尔曼预测的框与其最匹配的检测框,从而实现目标的追踪

Ⅳ Deepsort算法

DeepSORT(Deep Learning-based SORT)是基于深度学习的多目标跟踪算法,是SORT的改进版。

0x00 算法的一般流程

1.目标检测

  • 在每一帧中,使用目标检测算法(如YOLO、Faster R-CNN、SSD等)来检测图像中的目标,并得到目标的边界框(bounding box)和类别信息。

2.深度特征提取

  • 对于每个检测到的目标,使用预训练的深度学习模型(如ResNet、MobileNet等)来提取目标区域的特征向量。这些特征向量能够表示目标的语义信息和视觉特征。

3.目标关联

  • 利用匈牙利算法将当前帧的检测结果与之前帧中的跟踪目标进行关联。匈牙利算法通过最小化匹配的总成本来找到最佳的匹配,成本通常由目标检测与预测目标之间的外观相似性和运动一致性计算得出。

4.卡尔曼滤波预测

  • 对于每个已跟踪的目标,使用卡尔曼滤波来预测其下一帧的位置。卡尔曼滤波利用目标的历史运动信息和观测数据,预测目标在下一帧中的位置和速度。

5.特征匹配

  • 将当前帧的检测结果与之前帧中的跟踪目标进行特征匹配。采用余弦相似度或欧氏距离等度量方法,比较特征向量之间的相似性。

6.外观相似性分数计算

  • 计算目标检测结果与跟踪目标之间的外观相似性分数。综合考虑特征匹配和运动一致性,为每个匹配组合分配相似性分数。

7.最终关联

  • 根据外观相似性分数,选择最佳的目标关联组合。这样能够确定目标在连续帧中的唯一ID,实现多目标的连续跟踪。

8.卡尔曼滤波更新

  • 对于成功匹配的目标,使用卡尔曼滤波来更新其状态。通过融合检测结果和卡尔曼滤波预测的信息,得到目标的最终位置和速度,并对目标状态进行更新。

9.状态估计不确定性更新

  • 根据卡尔曼滤波的结果,更新目标的状态估计不确定性。这样可以根据目标的可信度来调整匹配的权重。

10.目标确认和删除

  • 对于一些没有成功匹配到检测结果的目标,或者匹配结果置信度较低的目标,进行确认和删除操作。可以根据跟踪器的置信度阈值来决定是否保留目标。

11.轨迹维护

  • 对于成功匹配的目标,更新目标的运动轨迹。

12.重复

  • 对于下一帧,重复上述过程,进行目标检测、特征提取、目标关联、更新等操作。

【Yolov5+Deepsort】训练自己的数据集(1)| 目标检测&追踪 | 轨迹绘制,目标追踪&目标检测,YOLO,目标跟踪,目标检测,机器学习,人工智能,计算机视觉

END


📝因为作者的能力有限,所以文章可能会存在一些错误和不准确之处,恳请大家指出!

 📃参考文献:

[1] Simple Online and Realtime Tracking with a Deep Association Metric

[1703.07402] Simple Online and Realtime Tracking with a Deep Association Metric (arxiv.org)文章来源地址https://www.toymoban.com/news/detail-628593.html

到了这里,关于【Yolov5+Deepsort】训练自己的数据集(1)| 目标检测&追踪 | 轨迹绘制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • YOLOv5入门实践(5)——从零开始,手把手教你训练自己的目标检测模型(包含pyqt5界面)

      通过前几篇文章,相信大家已经学会训练自己的数据集了。本篇是YOLOv5入门实践系列的最后一篇,也是一篇总结,我们再来一起按着 配置环境--标注数据集--划分数据集--训练模型--测试模型--推理模型 的步骤,从零开始,一起实现自己的目标检测模型吧! 前期回顾: YOLO

    2023年04月26日
    浏览(63)
  • 使用YOLOv8训练自己的【目标检测】数据集

    随着深度学习技术在计算机视觉领域的广泛应用,行人检测和车辆检测等任务已成为热门研究领域。然而,实际应用中,可用的预训练模型可能并不适用于所有应用场景。 例如,虽然预先训练的模型可以检测出行人,但它无法区分“好人”和“坏人”,因为它没有接受相关的

    2024年04月10日
    浏览(54)
  • 手把手教你用YOLOv5算法训练数据和检测目标(不会你捶我)

    本人从一个小白,一路走来,已能够熟练使用YOLOv5算法来帮助自己解决一些问题,早就想分析一下自己的学习心得,一直没有时间,最近工作暂时告一段落,今天抽空写点东西,一是为自己积累一些学习笔记,二是可以为一些刚接触YOLOv5算法的小白们提供一些参考,希望大家

    2024年02月01日
    浏览(69)
  • 【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

    云服务器训练YOLOv8-新手教程-哔哩哔哩 🍀2023.11.20 更新了划分数据集的脚本 在自定义数据上训练 YOLOv8 目标检测模型的步骤可以总结如下 6 步: 🌟收集数据集 🌟标注数据集 🌟划分数据集 🌟配置训练环境 🌟训练模型 🌟评估模型 随着深度学习技术在计算机视觉领域的广泛

    2023年04月15日
    浏览(85)
  • 目标检测 YOLOv5 预训练模型下载方法

    目标检测 YOLOv5 预训练模型下载方法 flyfish https://github.com/ultralytics/yolov5 https://github.com/ultralytics/yolov5/releases 可以选择自己需要的版本和不同任务类型的模型 后缀名是pt

    2024年02月08日
    浏览(58)
  • 【目标检测】YOLOv5算法实现(七):模型训练

      本系列文章记录本人硕士阶段YOLO系列目标检测算法自学及其代码实现的过程。其中算法具体实现借鉴于ultralytics YOLO源码Github,删减了源码中部分内容,满足个人科研需求。   本系列文章主要以YOLOv5为例完成算法的实现,后续修改、增加相关模块即可实现其他版本的

    2024年01月22日
    浏览(60)
  • 基于YOLOv5 来训练头盔目标检测-附源码

    建筑工地头部头盔检测,基于目标检测工地安全帽和禁入危险区域识别系统,🚀😆附YOLOv5训练自己的数据集超详细教程!!! 目录 指标 yolov5s 为基础训练,epoch = 50 yolov5m 为基础训练,epoch = 100

    2024年02月13日
    浏览(48)
  • YoloV5+ECVBlock:基于YoloV5-ECVBlock的小目标检测训练

    目录 1、前言 2、数据集 3、添加ECVBlock  4、BackBone+ECVBlock 5、Head+ECVBlock 6、训练结果 6.1 Backbone 6.2 Head   视觉特征金字塔在广泛的应用中显示出其有效性和效率的优越性。然而,现有的方法过分地集中于层间特征交互,而忽略了层内特征规则,这是经验证明是有益的。尽管一些

    2024年02月05日
    浏览(51)
  • YOLOv5+DeepSort实现目标跟踪

    本文将展示如何将YOLOv5和Deepsort相结合,实现目标跟踪计数等功能。由于水平有限,本文将更多着眼于如何实现,原理部分我会推荐几篇博客供大家学习参考。 推荐下面这篇博客,讲的很细致: Yolov5_DeepSort_Pytorch代码学习与修改记录__helen_520的博客 YOLOv5具备目标检测的功能,

    2024年02月03日
    浏览(52)
  • yolov5汽车检测linux字符界面操作全流程,适合上手(含数据集近700张图片8000多个目标+训练好的模型)

    随着自动驾驶技术的不断发展,汽车目标检测成为了研究的热点。本文将介绍公开+自定义的yolov5汽车目标检测数据集以及用linux操作系统训练yolov5。 先展示一下推理结果:  GPU在13.2ms每帧,基本满足项目需要。 前段时间跟朋友一起整理了一个汽车目标的数据集,主要包括

    2024年02月03日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包