【多目标追踪算法】Deepsort追踪实战

一、项目克隆与环境配置

1. 下载源码

从GitHub官网下载源码:mikel-brostrom/Yolov5_StrongSORT_OSNet

在这里插入图片描述
在这里插入图片描述
将下载的与deepsort配套的yolov5代码导入对应文件夹。

2. 安装依赖包

在pycharm终端输入:

pip install -r requirements.txt

在deep_sort文件夹下deep_sort.py文件下会有torchreid包未导入的错误。
在这里插入图片描述
可以根据路径提示:deep_sort–>deep–>reid是一个空文件。
打开GitHub下作者下的目录,发现还有一个链接文件,继续下载放到本地文件中。
在这里插入图片描述
即可配置我们的torchreid依赖包。
方法一:
在pycharm中输入:

cd C:\Users\三木今天学习了吗\Desktop\Yolov5_deepsort\deep_sort\deep\reid

执行上面语句进入reid目录,运行

python setup.py develop

再安装依赖包:

pip install -r requirements.txt

方法二: 根据deep-person-reid的作者写的Installation,在conda中安装。
在这里插入图片描述

二、获取预训练权重

在这里插入图片描述
在Model zoo里下载权重文件,放到deep_sort–>deep–>checkpoint目录下。

感兴趣的话可以搜索并阅读:OSNet:Omni-Scale Feature Learning for Person Re-Identification

在Model zoo中可以看到权重文件的参数和运算速度
在这里插入图片描述
滑动下滑条,还可以看见距离结算的使用公式。有的是欧氏距离,有的是余弦距离。

这里我决定使用osnet_ain_x1_0,并放到deep_sort–>deep–>checkpoint目录下。

三、修改配置文件deep_sort.yaml

Yolov5_DeepSort_Pytorch–>deep_sort–>configs–>deep_sort.yaml

DEEPSORT:
  MODEL_TYPE: "osnet_ain_x1_0"    
  REID_CKPT:  '~/Yolov5_DeepSort_Pytorch/deep_sort/deep/checkpoint/osnet_ain_x1_0_imagenet.pth'
  MAX_DIST: 0.1 # 0.2 The matching threshold. Samples with larger distance are considered an invalid match
  MAX_IOU_DISTANCE: 0.7 # 0.7 Gating threshold. Associations with cost larger than this value are disregarded.
  MAX_AGE: 90 # 30 Maximum number of missed misses before a track is deleted
  N_INIT: 3 # 3  Number of frames that a track remains in initialization phase
  NN_BUDGET: 100 # 100 Maximum size of the appearance descriptors gallery
  MIN_CONFIDENCE: 0.75
  NMS_MAX_OVERLAP: 1.0

四、数据集的导入

MOT16-02 Raw Sequence 下载完这个数据集后放在Yolov5_DeepSort_Pytorch的同级文件夹下。

五、修改track.py中模型参数

    parser.add_argument('--yolo_model', nargs='+', type=str, default='yolov5/weights/yolov5s.pt', help='model.pt path(s)')
    parser.add_argument('--deep_sort_model', type=str, default='deep_sort/deep/checkpoint/osnet_ain_x1_0_imagenet.pth')
    parser.add_argument('--source', type=str, default='MOT16-02-raw.mp4', help='source')  # file/folder, 0 for webcam

在跑跟踪的track.py时,若要验证追踪的结果(txt和视频),需要设置保存TXT文本,最后添加:default=True

    parser.add_argument('--show-vid', action='store_true', help='display tracking video results', default=True)
    parser.add_argument('--save-vid', action='store_true', help='save video tracking results', default=True)
    parser.add_argument('--save-txt', action='store_true', help='save MOT compliant results to *.txt', default=True)

在运行track.py时,提示缺少什么包就装什么包。

训练结束会在同级目录Yolov5_DeepSort_Pytorch下生成run和inference。

在runs\track\yolov5\weights\yolov5s_osnet_x1_0_imagenet3中会生成网络的txt文件和一个打好框的视频文件。

在这里插入图片描述
做到这的话,我们可以看到自己的视频中IDSW的现象还是很严重的。下面我们对网路检测的结果进行评价。

六、对预测结果进行评估

在
实现pycharm运行.sh文件——本地运行和打开服务器终端

就是在该文件下,下载我们的评价代码TrackEval和“正确答案”。
在这里插入图片描述
评价代码:/Yolov5_DeepSort_Pytorch/MOT16_eval/TrackEval
正确答案:/Yolov5_DeepSort_Pytorch/data.zip

将下载的答案data放入评价代码TrackEval同级目录下。
data目录如下:
在这里插入图片描述

1、不同的文件夹对应不同的数据集,感兴趣的小伙伴可以搜一下。
2、在data/gt/mot_challenge/下文件内容都是官方给出的数据,对视频中行人进行标定,可以理解为标准答案,不需要改动。
3、在data/trackers/mot_challenge/MOT16-train/data/下存放你跑MOT-16训练集视频得到的跟踪TXT文本。

  • 将得到的txt文件放在data/trackers/mot_challenge/MOT16-train/data/下。
  • 打开scripys/run_mot_challenge.py,直接运行即可。

传送门:【多目标追踪算法】多目标跟踪评价指标

猜你喜欢

转载自blog.csdn.net/weixin_45751396/article/details/126775565