使用deepsort重新训练自己的多目标跟踪模型,以及Market1501和MARS数据集的介绍

1、deepsort目标跟踪项目

1.1 deepsort项目介绍

deepsort是用于目标跟踪的一个项目

1、deep_sort 的github官网

deep_sort 的github官网:https://github.com/nwojke/deep_sort

1.2 deepsort项目的使用

1、运行一个跟踪的实例

python deep_sort_app.py \
    --sequence_dir=./MOT16/test/MOT16-06 \
    --detection_file=./resources/detections/MOT16_POI_test/MOT16-06.npy \
    --min_confidence=0.3 \
    --nn_budget=100 \
    --display=True

在运行上面的命令之前,需要确保你已经下载了MOT16数据集,MOT16数据集的下载地址如下:

MOT16数据集下载地址:https://motchallenge.net/data/MOT16/

resources目录中的文件在这里下载

2、生成检测框

除了主跟踪应用程序之外,该存储库还包含一个脚本,用于生成用于人员重新识别的功能,适用于使用余弦相似度比较行人边界框的视觉外观

python tools/generate_detections.py \
    --model=resources/networks/mars-small128.pb \
    --mot_dir=./MOT16/train \
    --output_dir=./resources/detections/MOT16_train

运行上面的命令,就会在resources/detections/MOT16_train目录下生成如下文件

(base) shl@zhihui-mint:~/shl_res/1_project/deep_sort$ tree resources/detections/MOT16_train/
resources/detections/MOT16_POI_train/
├── MOT16-02.npy
├── MOT16-04.npy
├── MOT16-05.npy
├── MOT16-09.npy
├── MOT16-10.npy
├── MOT16-11.npy
└── MOT16-13.npy

0 directories, 7 files
(base) shl@zhihui-mint:~/shl_res/1_project/deep_sort$ 

在运行上面的命令之前,需要确保你已经下载了MOT16数据集,MOT16数据集的下载地址如下:

MOT16数据集下载地址:https://motchallenge.net/data/MOT16/

2 自己重新训练deep_sort模型

官方将deepsort的训练放在了另外一个仓库中:cosine_metric_learning

2.1 deepsort的训练仓库cosine_metric_learning

1、deep_sort 提供的训练仓库cosine_metric_learning

2.2 deepsort训练使用的数据集

deepsort训练使用的数据集有两个:

  • Market1501数据集
  • MARS数据集

MARS数据集相当于是Market1501数据集的一个超集,数据更多!(参考

1、这篇博客介绍了Market1501数据集,并提供了百度网盘和谷歌driver下载地址

2、这篇博客介绍了MARS数据集,并提供了百度网盘下载地址

2.3 使用cosine_metric_learning仓库训练deepsort模型

2.3.1 训练deepsort

我使用训练Market1501数据集训练deepsort(使用虚拟环境tf1

python train_market1501.py \
    --dataset_dir=./Market-1501-v15.09.15/ \
    --loss_mode=cosine-softmax \
    --log_dir=./output/market1501/ \
    --run_id=cosine-softmax

使用tensorboard查看训练过程:

tensorboard --logdir ./output/market1501/cosine-softmax --port 6006

浏览器中输入:http://127.0.0.1:6006地址打开查看训练过程中的一些指标!

差不多训练一个小时的时候,分类精度就已经达到了99%+了(使用GPU

在这里插入图片描述

注意:

使用GPU训练:我的tensorflow-gpu版本1.14.0,需要cuda版本不能够大于10.0,在虚拟环境中安装cudatoolkit=10.0版本环境(参考

2.3.2 导出预训练的pb模型

1、下面是训练模型过程中保存的模型

(tf1) shl@zhihui-mint:~/shl_res/1_project/cosine_metric_learning_env_tf1$ tree output_latest_model/
output_latest_model/
├── model.ckpt-644844.data-00000-of-00001
├── model.ckpt-644844.index
└── model.ckpt-644844.meta

0 directories, 3 files
(tf1) shl@zhihui-mint:~/shl_res/1_project/cosine_metric_learning_env_tf1$ 

2、导出pb模型

python train_market1501.py --mode=freeze --restore_path=PATH_TO_CHECKPOINT

例如:

python train_market1501.py --mode=freeze --restore_path=./output_latest_model//model.ckpt-644844

然后会在当前目录下生成:market1501.pb模型文件

注意:

PATH_TO_CHECKPOINT是训练得到的checkpoint模型文件路径,但是一定不要包括后缀名,否则会报错:ValueError: The passed save_path is not a valid checkpoint: ./output_latest_model/model.ckpt-644844.meta

3、测试自己训练导出的模型是否可用

你可以在yolov4-deepsort这个项目下测试自己训练的模型是否可用,直接把自己的模型放在model_data目录下,把自己的模型文件重新命名为:mars-small128.pb即可!

yolov4-deepsort的github项目地址:https://github.com/theAIGuysCode/yolov4-deepsort

然后使用如下命令测试:

python object_tracker.py --weights ./checkpoints/yolov4-tiny-416 --model yolov4 --video ./data/video/test2.mp4 --output ./outputs/tiny.avi --tiny

测试效果截图:

在这里插入图片描述

欢迎大家关注笔者,你的关注是我持续更博的最大动力


原创文章,转载告知,盗版必究

微信:suihailiang0816
QQ:931762054
wx公众号:仰望星空的小随
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 猿与汪的秘密 设计师:白松林 返回首页