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