转载自 https://cloud.tencent.com/developer/article/1706259

本文分享利用yolov4+deepsort实现目标跟踪,主要是讲解如何使用,具体原理可以根据文中的参考资料更加深入学习。目前主流的趋势是将算法更加易用,让更多人感受到视觉的魅力,也能让更多有意向从事这个领域的人才进入。但受限于某些客观的限制,比如github下载容易失败,谷歌网盘无法下载等,让部分人不得不退却。

因此,我想我的分享的价值就在于感受视觉魅力的“最后一公里”。

完整的权重文件和项目都放在后台了,回复“yolov4” 即可获取。

欢迎分享,帮助更多的小伙伴!

使用YOLOv4、DeepSort和TensorFlow实现的目标跟踪。YOLOv4是一种非常优秀的算法,它使用深卷积神经网络来执行目标检测。更详细的介绍可以参考之前文章。

吊打一切的YOLOv4的tricks汇总!附参考论文下载

今天分享的内容是将YOLOv4的输出输入到Deep-SORT(Simple Online and Realtime Tracking with a Deep Association Metric),以创建一个高精度的目标跟踪器。

demo效果展示:


开始实操

1、克隆项目

git clone https://github.com/theAIGuysCode/yolov4-deepsort.git

2、环境配置

从github项目的requirements-gpu.txt 文件我们可以知道所需要的依赖文件内容(这里以GPU版本为例,也可以选择安装requirements.txt ):

tensorflow-gpu==2.3.0rc0
opencv-python==4.1.1.26
lxml
tqdm
absl-py
matplotlib
easydict
pillow

强烈建议使用conda 创建虚拟环境避免污染其他环境

# 创建虚拟环境
conda create xxx
# 激活虚拟环境# 安装依赖,这里使用的TensorFlow 2
pip install -r requirements-gpu.txt

PS:建议使用的 cuda 版本是 10.1

可能存在的问题,tensorflow和opencv下载太慢

# 通过指定源来下载https://www.cnblogs.com/whw1314/p/11748096.html
# 以pip 安装 tensorflow-gpu==2.3.0rc0 为例:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --upgrade tensorflow-gpu==2.3.0rc0

3、预训练模型下载

我们的目标跟踪器使用 YOLOv4 进行目标检测,然后使用 deep sort 进行跟踪。这里提供官方的 YOLOv4 目标检测模型 作为预训练模型,该模型能够检测 80 类物体。

为了便于演示,我们将使用预训练的权重作为我们的跟踪器。下载预训练的yolov4.weights文件:

https://drive.google.com/open?id=1cewMfusmPjYWbrnuJRuKhPMwRe_b9PaT

将下载好的权重文件复制到 data 文件夹下。

PS:如果你向使用 yolov4-tiny.weights,一个更小的模型,运行更快但精度略低一些,可以在这里下载

https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v4_pre/yolov4-tiny.weights

使用 YOLOv4 运行跟踪器

为了将 YOLOv4 应用到目标跟踪上,首先我们需要将权重文件转换 成对应的TensorFlow 模型,并将保存到 checkpoints 文件夹中。然后我们需要运行 object_tracker.py 来实现目标跟踪。

# Convert darknet weights to tensorflow model
python save_model.py --model yolov4 # Run yolov4 deep sort object tracker on video
python object_tracker.py --video ./data/video/test.mp4 --output ./outputs/demo.avi --model yolov4# Run yolov4 deep sort object tracker on webcam (set video flag to 0)
python object_tracker.py --video 0 --output ./outputs/webcam.avi --model yolov4

--output 后面接的是目标跟踪输出结果视频文件的存储路径。

当然如果你希望使用YOLOv4-Tiny 可以参考下面的操作

使用 YOLOv4-Tiny 运行跟踪器

下面的命令将可以运行yolov4-tiny模型。Yolov4-tiny允许你获得一个更高的速度(FPS)的跟踪器,但可能在精度上有一点损失。确保你已经下载了权重文件,并将其添加到“data”文件夹中。

# save yolov4-tiny model
python save_model.py --weights ./data/yolov4-tiny.weights --output ./checkpoints/yolov4-tiny-416 --model yolov4 --tiny# Run yolov4-tiny object tracker
python object_tracker.py --weights ./checkpoints/yolov4-tiny-416 --model yolov4 --video ./data/video/test.mp4 --output ./outputs/tiny.avi --tiny

输出结果

如上所述,生成的视频将保存到设置 --output 命令行标志路径的位置。这里把它设置为保存到‘output’文件夹。你也可以通过调整--output_format标志来改变保存的视频类型,默认情况下它被设置为AVI编解码器,也就是XVID。

示例视频显示跟踪所有coco数据集类:

目标跟踪器跟踪的类别

默认情况下,代码被设置为跟踪coco数据集中的所有80个类,这是预先训练好的YOLOv4模型所使用的。但是,可以简单地调整几行代码,以跟踪80个类中的任意一个或任意一个组合。只选择最常见的person类或car类非常容易。

要自定义选择的类,所需要做的就是注释掉object_tracker.py的第159行和第162行allowed_classes列表,并需要添加想要跟踪的任何类。这些类可以是模型训练的80个类中的任何一个,可以在data/classes/ cocoa .names文件中看有那些跟踪类

这个示例将允许跟踪person和car的类。

目标跟踪demo将跟踪的类别设置为“person”

目标跟踪demo将跟踪的类别设置为“car”

命令行参数参考

save_model.py:--weights: path to weights file(default: './data/yolov4.weights')--output: path to output(default: './checkpoints/yolov4-416')--[no]tiny: yolov4 or yolov4-tiny(default: 'False')--input_size: define input size of export model(default: 416)--framework: what framework to use (tf, trt, tflite)(default: tf)--model: yolov3 or yolov4(default: yolov4)object_tracker.py:--video: path to input video (use 0 for webcam)(default: './data/video/test.mp4')--output: path to output video (remember to set right codec for given format. e.g. XVID for .avi)(default: None)--output_format: codec used in VideoWriter when saving video to file(default: 'XVID)--[no]tiny: yolov4 or yolov4-tiny(default: 'false')--weights: path to weights file(default: './checkpoints/yolov4-416')--framework: what framework to use (tf, trt, tflite)(default: tf)--model: yolov3 or yolov4(default: yolov4)--size: resize images to(default: 416)--iou: iou threshold(default: 0.45)--score: confidence threshold(default: 0.50)--dont_show: dont show video output(default: False)--info: print detailed info about tracked objects(default: False)

参考资料

  • tensorflow-yolov4-tflite:https://github.com/hunglc007/tensorflow-yolov4-tflite
  • Deep SORT Repository: https://github.com/nwojke/deep_sort

https://github.com/theAIGuysCode/yolov4-deepsort

应用YOLOV4 - DeepSort 实现目标跟踪相关推荐

  1. Jetson Xavier NX使用yolov5+deepsort实现CSI摄像头的目标跟踪

    文章目录 安装过程 运行效果 用python代码来打开CSI摄像头 实现CSI摄像头目标跟踪 报错: AttributeError: 'NoneType' object has no attribut ...

  2. 简单粗暴的多对象目标跟踪神器 – DeepSort

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 DeepSort 对象跟踪问题一直是计算机视觉的热点任务之一,简单 ...

  3. 目标跟踪初探(DeepSORT)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|AI算法与图像处理 简述 本文首先将介绍在目标跟踪任务中常 ...

  4. 多摄像头实时目标跟踪和计数,使用YOLOv4,Deep SORT和Flask

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:LeonLok 编译:ronghuaiyang 本文转自:A ...

  5. 【目标跟踪】------deepsort

    目前主流的目标跟踪算法都是基于Tracking-by-Detecton策略,即基于目标检测的结果来进行目标跟踪.DeepSORT运用的就是这个策略,上面的视频是DeepSORT对人群进行跟踪的结果,每 ...

  6. 目标跟踪实战deepsort+yolov5(上)

    文章目录 前言 算法简介 sort算法 deepsort 项目结构 前言 今天的主要目的还是快速上手目标跟踪,先前的话我是简单说了一下卡尔曼滤波,然后由于博客的问题,没有说完.本来是想做一个系列的,但 ...

  7. 【目标跟踪】一图看懂DeepSORT大流程

    目录 系列文章 简介 DeepSORT流程图 名词解释 整体流程 重点节点解释 系列文章 [目标跟踪]卡尔曼滤波器(Kalman Filter) 含源码 [目标跟踪]一图看懂DeepSORT大流程 [ ...

  8. DeepSort目标跟踪算法

    DeepSort目标跟踪算法是在Sort算法基础上改进的. 首先介绍一下Sort算法 Sort算法的核心便是卡尔曼滤波与匈牙利匹配算法 卡尔曼滤波是一种通过运动特征来预测目标运动轨迹的算法 其核心为五 ...

  9. YOLOV4+DeepSort车流量检测基础版

    YOLOV4+DeepSort车流量检测基础版 资源下载: 链接:https://pan.baidu.com/s/1Mv1VI1Wa5MUaHuKz9hlniQ 提取码:lmpk 复制这段内容后打开百 ...

最新文章

  1. 【C++】STL队列和栈的使用
  2. Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem G. k-palindrome dp
  3. Fastq-dump:我的日常命令
  4. out和ref之间的区别
  5. 【迁移学习(Transfer L)全面指南】基于迁移学习完成图像分类任务(Pytorch)
  6. 风险案例-25期-与有过合作经历客户在新合同约定中过于简单、范围不明确,导致客户对新需求工作量不认可...
  7. Win7 下面 用easybcd 引导 安装 ubuntu 14.04
  8. 对10个元素进行快速排序,在最好情况下,元素间的比较次数为( )次。
  9. oracle 11g release2版本jdbc,Oracle发布JDeveloper11gRelease2更新版
  10. python编程:从入门到实践学习笔记-文件和异常
  11. Linux PS 命令详解
  12. 三分钟学会使用Pytorch.scatter函数
  13. VSCode配置cpp环境
  14. 中华文本库c语言题答案,大学计算机基础试题题库及答案(精编).doc
  15. Docker技术之容器与外部相连
  16. 解决:tomcat部署遇到问题:One or more Filters failed to start. Full details will be found in the appro
  17. css3动画 魔方 无限滚动
  18. Airtest IDE 连接 夜游神模拟器 自动化UI测试
  19. 访问学者美国访学必须知道十大注意事项
  20. Axure RP 9 基础教程

热门文章

  1. 感受hook里useEffect的执行顺序,hook倒计时
  2. java 匿名内部类
  3. Manifest merger failed : Attribute application@allowBackup value=(false) 解决方法
  4. No cached version of com.android.tools.build:gradle:2.0.0 available for offline mode.
  5. Error:Could not download guava.jar (com.google.guava:guava:19.0): No cached version available for of
  6. springboot日志logback配置
  7. MyBatis if标签的用法
  8. 函数小知识点(文档字符串,闭包等)
  9. 取消Eclipse等号、分号、空格代码自动补全
  10. Android实战技巧之六:PreferenceActivity使用详解