yolo_track复现记录

yolo_track

mikel-brostrom/yolo_tracking: A collection of SOTA real-time, multi-object tracking algorithms for object detectors (github.com)

yolov8

ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite (github.com)

1 创建环境

conda create -n yolotrackold python=3.8
conda activate yolotrackold
#根据cuda版本安装torch
pip install torch==1.10.1+cu111 torchvision==0.11.2+cu111 torchaudio==0.10.1 -f https://download.pytorch.org/whl/cu111/torch_stable.html

2 源码下载

从最上面的连接下载源码,

我的源码是8.3手动下载解压的,和最新的有差别

# 下载好源码后,进入源码目录
pip install -v -e .

将yolov8源码中的ultralytics放进yolotrack目录中,注意是第二级ultralytics,放好如下:

3 下载预训练权重

ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite (github.com)

下载yolov8n.pt

在yolotrack源码的boxmot/appearance/reid_model_factory.py下载reid模型,我下载的是

    "osnet_x0_25_market1501.pt": "https://drive.google.com/uc?id=1z1UghYvOTtjx7kEoRfmqSMu-z62J6MAj",

下载好后,在yolotrack下新建目录pretrained,将预训练权重放进去

 ,这里我将reid的名字改短了一些

根据权重模型的目录和名字,改examples/track.py

4 DEBUG

4.1 报错:distutils

 解决方案:参考AttributeError: module ‘distutils‘ has no attribute ‘version‘ 解决方案 - 知乎

pip uninstall setuptools
pip install setuptools==58.0.4

4.2 报错:psutil

解决方案:

pip install psutil

4.3 报错:no module named boxmot

 在代码上面添加:

import sys
sys.path.append('.')

即:

4.4 其他依赖项

pip install pycocotools
pip install tabulate

5 跟踪本地视频

python examples/track.py --source /home/extend/zhy/dataset/NEU/1.mp4 --show --save --save-mot

 结果保存在:examples/runs/track/exp下

 据我分析,这个格式依次是:帧数,id,bbox左上角x坐标,左上y,w,h,0,0,-1

只要将后三个改成0,0,0,-1即可符合MOT challenge标准

加了个计算FPS的代码

6 MOT17测试

python3 examples/val.py --benchmark MOT17 --device 0,1

6.1 报错:连接超时,下载失败

第一个问题是无法连接网络下载不了文件,那就去JonathonLuiten/TrackEval: HOTA (and other) evaluation metrics for Multi-Object Tracking (MOT). (github.com)

 手动下载代码,然后在examples下创建文件夹val_utils,将下载好的代码解压放到val_utils下

 6.2 使用本地数据集测试

我的本地已经有MOT17数据集了,因此将val.py的这两行注释掉

 开头添加数据集路径

 更改eval_setup函数里面的路径,根据自己的数据集格式做修改

 再次运行上面的代码,运行过程:

 运行结果:

 在examples/runs/val/exp下保存了结果

6.3 使用全部序列做测试(未解决)

这部分显示只是用FRCNN的那部分序列

 将FRCNN那行注释掉,即可对所有序列进行测试,去掉sorted

运行中途停止,报错:

未解决:单独对FRCNN,DPM,SDP测试都是没问题的,但一起就会出问题

替补方法: 三个检测器的序列分别测试,然后将测试的.txt放到一个labels文件夹内,再对该文件夹进行评估,见下文“对已有的标签文件做评估”

TODO:split:test

上面的val.py中,--split都是使用默认的train,即在训练序列上做测试

若改成test,则在mot17的test序列做测试

6.5 更改MOTtxt输出格式

原代码的mot格式输出文件每行只有9个数字,不符合mot网站提交要求

 需求格式为

 显然后四位为-1,(不清楚为何原代码输出的score都是0)

更改examples/utils.py

输出结果(左:改后,右:改前):

6.6 对已有的标签文件做评估

python3 examples/val.py --benchmark MOT17 --device 0,1 --eval-existing --project /home/extend/zhy/code/yolo_tracking-masterold/examples/runs/other --name 0804_bot_mot17_val_yolox

标签文件路径为/home/extend/zhy/code/yolo_tracking-masterold/examples/runs/other/0804_bot_mot17_val_yolox/labels

将val.py改成全部序列:

 然后执行上面的代码,即可得到评估文件

6.7 消融实验

https://github.com/mikel-brostrom/yolo_tracking/blob/split-ds-by-factor/split.py

使用上述代码分割数据集,注意更改本地数据集路径,例如:

 这两个地方,大于split表示会分割出前半部分的数据集,小于则分出后半部分

按需求划分即可,前半段用于消融实验的训练,后半部分用于测试,测试时按照6.2节更改val.py中的数据集路径即可

评论 38
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值