Windows下PP-Tracking多目标跟踪数据训练

Posted シ゛甜虾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows下PP-Tracking多目标跟踪数据训练相关的知识,希望对你有一定的参考价值。

PP-Tracking之手把手玩转多目标跟踪 - 飞桨AI Studio - 人工智能学习与实训社区PP-Tracking之手把手玩转多目标跟踪 - 飞桨AI Studio - 人工智能学习与实训社区https://aistudio.baidu.com/aistudio/projectdetail/3022582数据下载链接

https://bj.bcebos.com/v1/paddledet/data/mot/demo/MOT16.ziphttps://bj.bcebos.com/v1/paddledet/data/mot/demo/MOT16.zip解压后移动到PaddleDetection\\dataset\\mot\\images目录

创建labels_with_ids目录

 

打开cmd,进入python环境activate paddle_env然后进入PaddleDetection根目录

如果不懂可以查看这篇文章

Windows下的Conda安装并创建python环境_シ❤゛甜虾的个人博客-CSDN博客Anaconda是一个免费开源的Python和R语言的发行版本,用于计算科学,Anaconda致力于简化包管理和部署。Anaconda的包使用软件包管理系统Conda进行管理。Conda是一个开源包管理系统和环境管理系统,可在Windows、macOS和Linux上运行。下载Anaconda,然后进行安装https://www.anaconda.com/安装Anaconda后,以管理员运行CMD,创建python3.9的环境conda create -n paddle_env python=https://blog.csdn.net/g313105910/article/details/122447198执行gen_labels_MOT.py,生成mot16.train文件

user_gen_labels_MOT.py的代码

# 生成mot16.train文件并且复制到 image_lists下面
import glob
import os.path as osp
image_list = []
for seq in sorted(glob.glob('PaddleDetection/dataset/mot/MOT16/images/train/*')):
    for image in glob.glob(osp.join(seq, "img1")+'/*.jpg'):
        image = image.replace('PaddleDetection/dataset/mot/','')
        image_list.append(image)
with open('mot16.train','w') as image_list_file:
    image_list_file.write(str.join('\\n',image_list))

生成的文件很奇怪

复制过去目录就是这个样子

 

修改配置文件里面的数据集

添加在PaddleDetection/configs/mot/fairmot/fairmot_dla34_30e_1088x608.yml文件最后

... ...
# for MOT training
# for MOT training
TrainDataset:
  !MOTDataSet
    dataset_dir: dataset/mot
    image_lists: ['mot16.train']
    data_fields: ['image', 'gt_bbox', 'gt_class', 'gt_ide']

# for MOT evaluation
# If you want to change the MOT evaluation dataset, please modify 'data_root'
EvalMOTDataset:
  !MOTImageFolder
    dataset_dir: dataset/mot
    data_root: MOT16/images/train
    keep_ori_im: False # set True if save visualization images or video, or used in DeepSORT

# for MOT video inference
TestMOTDataset:
  !MOTImageFolder
    dataset_dir: dataset/mot
    keep_ori_im: True # set True if save visualization images or video

添加完就是这个样子

 

开始训练

使用MOT16-02序列作为训练数据,训练30epoch,V100环境下大约需要30分钟

在PaddleDetection根目录创建一个fairmot_dla34_30e_1088x608目录用来存放日志,然后执行如下命令开始训练

python -m paddle.distributed.launch --log_dir=fairmot_dla34_30e_1088x608/ --gpus 0 tools/train.py -c configs/mot/fairmot/fairmot_dla34_30e_1088x608.yml

果然之前发现文件内容比较怪的地方出问题了,批量修改一下

配置文件也需要改成这个样子,因为我用的是windows

_BASE_: [
  '../../datasets/mot.yml',
  '../../runtime.yml',
  '_base_/optimizer_30e.yml',
  '_base_/fairmot_dla34.yml',
  '_base_/fairmot_reader_1088x608.yml',
]

weights: output/fairmot_dla34_30e_1088x608/model_final

# for MOT training
# for MOT training
TrainDataset:
  !MOTDataSet
    dataset_dir: dataset\\mot
    image_lists: ['mot16.train']
    data_fields: ['image', 'gt_bbox', 'gt_class', 'gt_ide']

# for MOT evaluation
# If you want to change the MOT evaluation dataset, please modify 'data_root'
EvalMOTDataset:
  !MOTImageFolder
    dataset_dir: dataset\\mot
    data_root: MOT16\\images\\train
    keep_ori_im: False # set True if save visualization images or video, or used in DeepSORT

# for MOT video inference
TestMOTDataset:
  !MOTImageFolder
    dataset_dir: dataset\\mot
    keep_ori_im: True # set True if save visualization images or video

开始训练了

如果显卡内存不够会提示

为了方便我们下载训练好的模型进行eval,如果显存不够下载别人训练好的

https://paddledet.bj.bcebos.com/models/mot/fairmot_dla34_30e_1088x608.pdparamshttps://paddledet.bj.bcebos.com/models/mot/fairmot_dla34_30e_1088x608.pdparams评估

python tools/eval_mot.py -c configs/mot/fairmot/fairmot_dla34_30e_1088x608.yml -o weights=output/fairmot_dla34_30e_1088x608.pdparams

结果 

然后我们开始推理

python tools/infer_mot.py -c configs/mot/fairmot/fairmot_dla34_30e_1088x608.yml -o weights=output/fairmot_dla34_30e_1088x608.pdparams --image_dir=dataset/mot/MOT16/images/test/MOT16-01/img1  --save_videos

结果和视频

图像

导出模型

python tools/export_model.py -c configs/mot/fairmot/fairmot_dla34_30e_1088x608.yml -o weights=output/fairmot_dla34_30e_1088x608.pdparams

使用导出的模型进行推理

PP-Tracking中在部署阶段提供了多种跟踪相关功能,例如流量计数,出入口统计,绘制跟踪轨迹等,具体使用方法可以参考文档

下载两个视频

https://bj.bcebos.com/v1/paddledet/data/mot/demo/person.mp4
https://bj.bcebos.com/v1/paddledet/data/mot/demo/entrance_count_demo.mp4

推理视频1

python deploy/pptracking/python/mot_jde_infer.py --model_dir=output_inference/fairmot_dla34_30e_1088x608 --video_file=person.mp4 --device=GPU

效果还是很不错的

推理视频2

python deploy/pptracking/python/mot_jde_infer.py --model_dir=output_inference/fairmot_dla34_30e_1088x608 --do_entrance_counting --draw_center_traj --video_file=entrance_count_demo.mp4 --device=GPU

 

以上是关于Windows下PP-Tracking多目标跟踪数据训练的主要内容,如果未能解决你的问题,请参考以下文章

PP-Tracking Python的MTMCT 跨镜跟踪体验

交互式多模型-无迹卡尔曼滤波IMM-UKF——CV/CT/CA模型交互机动目标跟踪(模型维数不同IMM算法设计)

交互式多模型-无迹卡尔曼滤波IMM-UKF——CV/CT/CA模型交互机动目标跟踪(模型维数不同IMM算法设计)

#yyds干货盘点#项目实战 <-; DeepSORT算法实现车辆和行人跟踪计数和是否道路违规检测

多目标跟踪算法 | DeepSort

多目标跟踪算法 | DeepSort