起飞 | 应用YOLOV4 - DeepSort 实现目标跟踪

点击上方AI算法与图像处理”,选择加"星标"或“置顶”html

重磅干货,第一时间送达python

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


所以,我想个人分享的价值就在于感觉视觉魅力的“最后一千米”。github

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


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


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

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

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

demo效果展现:app


开始实操

一、克隆项目

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

二、环境配置

从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

三、预训练模型下载

咱们的目标跟踪器使用 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



下载1:OpenCV黑魔法


AI算法与图像处公众号后台回复:OpenCV黑魔法,即可下载小编精心编写整理的计算机视觉趣味实战教程


下载2 CVPR2020

AI算法与图像处公众号后台回复: CVPR2020 便可下载1467篇CVPR 2020论文
 
     
     
     
      
      
               
      
 
     
我的微信(若是没有备注不拉群!
请注明: 地区+学校/企业+研究方向+昵称


以为有趣就点亮在看吧




本文分享自微信公众号 - AI算法与图像处理(AI_study)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索