应用YOLOV4 - DeepSort 实现目标跟踪
转载自 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 实现目标跟踪相关推荐
- Jetson Xavier NX使用yolov5+deepsort实现CSI摄像头的目标跟踪
文章目录 安装过程 运行效果 用python代码来打开CSI摄像头 实现CSI摄像头目标跟踪 报错: AttributeError: 'NoneType' object has no attribut ...
- 简单粗暴的多对象目标跟踪神器 – DeepSort
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 DeepSort 对象跟踪问题一直是计算机视觉的热点任务之一,简单 ...
- 目标跟踪初探(DeepSORT)
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|AI算法与图像处理 简述 本文首先将介绍在目标跟踪任务中常 ...
- 多摄像头实时目标跟踪和计数,使用YOLOv4,Deep SORT和Flask
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:LeonLok 编译:ronghuaiyang 本文转自:A ...
- 【目标跟踪】------deepsort
目前主流的目标跟踪算法都是基于Tracking-by-Detecton策略,即基于目标检测的结果来进行目标跟踪.DeepSORT运用的就是这个策略,上面的视频是DeepSORT对人群进行跟踪的结果,每 ...
- 目标跟踪实战deepsort+yolov5(上)
文章目录 前言 算法简介 sort算法 deepsort 项目结构 前言 今天的主要目的还是快速上手目标跟踪,先前的话我是简单说了一下卡尔曼滤波,然后由于博客的问题,没有说完.本来是想做一个系列的,但 ...
- 【目标跟踪】一图看懂DeepSORT大流程
目录 系列文章 简介 DeepSORT流程图 名词解释 整体流程 重点节点解释 系列文章 [目标跟踪]卡尔曼滤波器(Kalman Filter) 含源码 [目标跟踪]一图看懂DeepSORT大流程 [ ...
- DeepSort目标跟踪算法
DeepSort目标跟踪算法是在Sort算法基础上改进的. 首先介绍一下Sort算法 Sort算法的核心便是卡尔曼滤波与匈牙利匹配算法 卡尔曼滤波是一种通过运动特征来预测目标运动轨迹的算法 其核心为五 ...
- YOLOV4+DeepSort车流量检测基础版
YOLOV4+DeepSort车流量检测基础版 资源下载: 链接:https://pan.baidu.com/s/1Mv1VI1Wa5MUaHuKz9hlniQ 提取码:lmpk 复制这段内容后打开百 ...
最新文章
- 【C++】STL队列和栈的使用
- Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem G. k-palindrome dp
- Fastq-dump:我的日常命令
- out和ref之间的区别
- 【迁移学习(Transfer L)全面指南】基于迁移学习完成图像分类任务(Pytorch)
- 风险案例-25期-与有过合作经历客户在新合同约定中过于简单、范围不明确,导致客户对新需求工作量不认可...
- Win7 下面 用easybcd 引导 安装 ubuntu 14.04
- 对10个元素进行快速排序,在最好情况下,元素间的比较次数为( )次。
- oracle 11g release2版本jdbc,Oracle发布JDeveloper11gRelease2更新版
- python编程:从入门到实践学习笔记-文件和异常
- Linux PS 命令详解
- 三分钟学会使用Pytorch.scatter函数
- VSCode配置cpp环境
- 中华文本库c语言题答案,大学计算机基础试题题库及答案(精编).doc
- Docker技术之容器与外部相连
- 解决:tomcat部署遇到问题:One or more Filters failed to start. Full details will be found in the appro
- css3动画 魔方 无限滚动
- Airtest IDE 连接 夜游神模拟器 自动化UI测试
- 访问学者美国访学必须知道十大注意事项
- Axure RP 9 基础教程
热门文章
- 感受hook里useEffect的执行顺序,hook倒计时
- java 匿名内部类
- Manifest merger failed : Attribute application@allowBackup value=(false) 解决方法
- No cached version of com.android.tools.build:gradle:2.0.0 available for offline mode.
- Error:Could not download guava.jar (com.google.guava:guava:19.0): No cached version available for of
- springboot日志logback配置
- MyBatis if标签的用法
- 函数小知识点(文档字符串,闭包等)
- 取消Eclipse等号、分号、空格代码自动补全
- Android实战技巧之六:PreferenceActivity使用详解