yolov7目标追踪:基于自定义数据集完成检测

多目标追踪

一、项目简介

yolo模型详解,请看博主这篇文章:三万字硬核详解:yolov1、yolov2、yolov3、yolov4、yolov5、yolov7
yolo模型训练,请看博主这篇文章:yolov7目标检测:基于自定义数据集完成检测、训练、测试

目标追踪包含两个阶段:(1)基于自定义数据集,训练yolo目标检测模型;(2)基于检测模型,将实时检测结果传递到StrongSORT追踪算法中,该算法在OSNet基础上结合运动和外观信息,可以跟踪yolo模型检测到的任何物体。

1.1、使用说明

备注:基于COCO数据集训练得到的yolov7目标检测预训练模型,共包括80个目标类别。COCO数据集的介绍和使用

(1)若需要自定义检测目标,则需要更换数据集并重新训练检测模型。 详细请参考
(2)若需要追踪指定目标,则可以指定追踪的目标类别python track.py --source 0 --yolo-weights yolov7.pt --classes 16 17 # tracks cats and dogs, only

在这里插入图片描述

1.2、支持的数据格式

目标追踪支持多种数据格式(详细见官网)
在这里插入图片描述

1.3、详解配置参数

配置参数请看track.py,如下图。
在这里插入图片描述
在这里插入图片描述

举例说明:权重参数('-yolo-weights')是字符串类型(type=str),故在默认值default中输入字符串,并指定权重文件的默认地址(default='yolov7.pt')。help是自定义描述文档。详细用法请参考argparse

二、环境配置 + 文件配置

2.1、环境配置

详细请看博主这篇文章:【深度学习环境配置】详细教程(资源已上传)

2.2、源码下载:sort + yolo

项目环境要求(必须),最终以官网说明为准。
(1)Python >= 3.8
(2)torch >= 1.7

git下载:可以直接将 yolo 目标检测模型也一起下载。
code下载:需要分别对追踪项目、检测项目进行下载。因为追踪项目下载后得到的检测文件夹为空。
备注:项目路径中不可以有中文(否则会异常报错,找原因找到奔溃)

方法一:通过 git 下载

(1)安装软件:Git Bash Here
(2)鼠标右击并打开软件,然后输入:git clone --recurse-submodules https://github.com/mikel-brostrom/Yolov7_StrongSORT_OSNet.git
在这里插入图片描述

方法二:官方下载地址 【GitHub】Real-time multi-object tracking and segmentation using Yolov7 with StrongSORT with OSNet

(1)点击Code,Download ZIP,并进行解压。
在这里插入图片描述
(2)点击网址上的 yolov7(如上图),再次点击Code,Download ZIP,并进行解压。
在这里插入图片描述
(3)将下载好的yolov7解压后,将项目提取并存放到已下载的目标追踪的yolov7文件夹下。
在这里插入图片描述

2.3、相关配置需求下载:requirements.txt

(1)DOS命令行窗口:cd切换到Yolov7_StrongSORT_OSNet-main文件夹下
在这里插入图片描述
(2)DOS命令行窗口输入:pip install -r requirements.txt
在这里插入图片描述

2.4、配置权重文件

需要分别配置目标检测与目标追踪的权重文件(.pt),保存在与track.py同级目录下。
备注:依据个人需求,下载对应的权重文件(权重文件之间会有些不同)。
在这里插入图片描述

2.4.1、下载目标检测权重文件:yolov7.pt

2.4.1.1、运行报错:No module named ‘torchreid.metrics’

(1)输入命令运行程序(官网指令):python track.py --source 0 --yolo-weights yolov7.pt --img 640
在这里插入图片描述

  • 系统报错:ModuleNotFoundError: No module named 'torchreid.metrics'参考文献
  • 原因分析:pycharm中没有对应的torchreid包,而通过使用pip install命令安装也无法成功解决。
  • 解决方案:点击https://github.com/KaiyangZhou/deep-person-reid。下载该项目并提取里面的torchreid文件夹,然后将其复制并黏贴到与track.py同级目录下。

2.4.1.2、运行报错:No such file or directory: ‘yolov7.pt’

(2)再次运行程序,不再有上述BUG问题,但是系统提示报错:FileNotFoundError: [Errno 2] No such file or directory: 'yolov7.pt'

yolov7.pt权重文件下载比较简单:
(方法1)直接通过Official YOLOv7下载。然后在track.py同级目录下新增weights文件夹 ,保存在该文件夹下。
(方法2)输入命令运行程序:python track.py --source test.mp4 --save-vid,然后开始自动下载(耗时较长)。最后,将在track.py同级目录下自动新增weights文件夹,并且预训练模型保存在该文件夹下。

但是又有了新的BUG提示报错,详细看下图。
在这里插入图片描述

2.4.2、下载ReID权重文件:osnet_x0_25_msmt17.pt

总共尝试了三种方法,最终解决问题。

2.4.2.1、运行报错2:No URL associated to the chosen DeepSort weights.

尝试方法一:在路径strong_sort\deep\checkpoint下,已经有多个ReID权重文件(.pth)。而通过指定该路径下的任意一个权重文件给到strong_sort_weights参数,但因为文件格式问题却导致运行失败。原因分析:ReID权重文件有点神秘,需要科学上网才能下载。在这里插入图片描述
运行结果如下:
在这里插入图片描述

2.4.2.2、运行报错2:TimeoutError: [WinError 10060] 由于连接方在一段时间后,没有正确答复或连接的主机没有反应,连接尝试失败。

尝试方法二:通过输入命令下载指定文件(官网指令):python track.py --source 0 --strong-sort-weights osnet_x0_25_market1501.pt
最终系统提示报错:TimeoutError: [WinError 10060] 由于连接方在一段时间后,没有正确答复或连接的主机没有反应,连接尝试失败。
在这里插入图片描述

2.5、运行成功

参考资料:osnet_x0_25_msmt17.pt
尝试方法三: 正如方法一如说,ReID权重文件有点神秘,需要科学上网才能下载。而方法二实验证明,无法自动下载。 故方法三选择网淘一份网盘资料,并将该权重文件存放到weights文件夹下,最终成功。
链接:https://pan.baidu.com/s/1RlB1oeiOQ7Le3XFd_QhmAg?pwd=nlsh 提取码:nlsh

输入命令运行程序:python track.py --source test.mp4 --save-vid。由于ReID权重文件的默认地址不可用,故在运行前需要修改参数地址或在命令行中指定地址。

  • (方法1)修改参数地址:在命令行中不指定ReID权重文件的地址,而修改参数的默认地址:strong_sort_weights=WEIGHTS/osnet_x0_25_msmt17.pt
  • (方法2)命令行指定地址:python track.py --source test.mp4 --strong_sort_weights weights/osnet_x0_25_msmt17.pt
    其中:WEIGHTS是定义的地址参数变量,而weights是文件夹名。

在这里插入图片描述
在这里插入图片描述

三、详解源码中的文件夹与文件

在这里插入图片描述

(1)下载后自带的文件夹及文件

文件夹

  • MOT16_eval:评估MOT16数据的脚本
  • strong_sort:追踪算法
  • yolov7:存放yolov7目标检测整个项目源码

文件

  • .gitignore:该文件是在git提交的时候用来屏蔽某些你不想提交上去的文件。.gitignore的用法
  • .gitmodules:子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。 它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。.gitmodules详解(Git子模块配置)
  • README.md:项目官网介绍
  • requirements.txt:项目运行所需要下载的库
  • track.py:追踪脚本
  • test.mp4:追踪视频文件(更多文件格式详见官网说明)

(2)配置文件夹

  • torchreid:模型所需要的基本配置文件(.py)
  • weights:存放目标检测与目标追踪的权重文件(.pt)

(3)检测后自动生成的文件夹

  • runs/track:存放检测视频

猜你喜欢

转载自blog.csdn.net/shinuone/article/details/129804339