百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking

百度BML、飞桨训练营(七)跨境头车流量密度统计-- PP-tracking

文章相关内容资料已经取得百度BML允许,仅用于交流学习,请不要用于商业传播。

跨镜头多目标跟踪是对同一场景下的不同摄像头拍摄的视频进行多目标跟踪,是监控视频领域一个非常重要的研究课题。相较于单镜头跟踪,跨镜跟踪将不同镜头获取到的跟踪轨迹进行融合,得到跨镜跟踪的输出轨迹。PP-Tracking选用DeepSORT方案实现跨镜跟踪,为了达到实时性选用了PaddleDetection自研的PP-YOLOv2和PP-PicoDet作为检测器,选用PaddleClas自研的轻量级网络PP-LCNet作为ReID模型。

1.创建Notebook任务,点击配置
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第1张图片

2.配置选择
开发语言:Python3.7
AI框架:PaddlePaddle2.0.0
资源规格:GPU V100
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第2张图片

3.打开Notebook
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第3张图片

4.上传本次Notebook操作模型
这次要用的资料请点击链接下载:https://aistudio.baidu.com/aistudio/datasetdetail/119110
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第4张图片

百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第5张图片

第一步:环境准备

1.下载PaddleDetection
!git clone https://gitee.com/paddlepaddle/PaddleDetection.git -b develop
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第6张图片

百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第7张图片

2.镜像升级
!pip install --upgrade pip -i https://mirror.baidu.com/pypi/simple
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第8张图片

3.安装paddlepaddle-gpu2.2.0
!pip install paddlepaddle-gpu==2.2.0rc0.post101 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html -i https://mirror.baidu.com/pypi/simple
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第9张图片

4.安装PaddleDetection的相关依赖
!cd PaddleDetection/ && pip install -r requirements.txt && python setup.py install
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第10张图片

)

第三步:准备数据集
可提前阅读并参考MOT数据准备文档
:https://github.com/PaddlePaddle/PaddleDetection/blob/develop/docs/tutorials/PrepareMOTDataSet_cn.md

1.下载数据集MOT16,并将其解压至PaddleDetection的dataset文件夹内
!cd ./data && wget https://bj.bcebos.com/v1/paddledet/data/mot/demo/MOT16.zip
!mv ./data/MOT16.zip ./PaddleDetection/dataset/mot
!cd ./PaddleDetection/dataset/mot && unzip MOT16.zip

百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第11张图片

Q:若遇到:mv: 无法获取’./data/MOT16.zip’ 的文件状态(stat): 没有那个文件或目录
A:mv命令是将某文件移动至另一个文件夹下,若遇到此报错,先检查新文件夹下是否有相应文件,如果已经存在相应文件,直接进行之后的命令(当前命令重复操作会造成这个报错)

2.生成相应的label文件(labels_with_ids)
!cd ./PaddleDetection/dataset/mot/MOT16 && mkdir -p images
!cd ./PaddleDetection/dataset/mot/MOT16 && mv ./train ./images && mv ./test ./images
!cd ./PaddleDetection/dataset/mot && python gen_labels_MOT.py
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第12张图片

3.生成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))
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第13张图片

!mkdir -p ./PaddleDetection/dataset/mot/image_lists && cp -r mot16.train ./PaddleDetection/dataset/mot/image_lists

4.打开路径PaddleDetection/configs/mot/fairmot下的yml文件(如图所示)
将以下数据配置添加至文件中,添加完后如图中所示
TrainDataset:训练数据集的路径
EvalMOTDataset:评估数据集的路径
TestMOTDataset:测试数据集的路径

 # 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

百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第14张图片

结果如下图

百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第15张图片

第二步:设置训练的epoch

打开路径PaddleDetection/configs/mot/fairmot/base/optimizer_30e.yml
在这个yml文件中可修改epoch数,大家可设置为30
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第16张图片

第三步:模型训练
使用MOT16-02序列作为训练数据,epoch为30,V100环境下大概训练30分钟
!cd PaddleDetection/ && 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
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第17张图片

百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第18张图片

训练完成示例:
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第19张图片

第四步:模型评估
评估模型路径在PaddleDetection/output/fairmot_dla34_30e_1088x608/model_final.pdparams
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第20张图片

!cd PaddleDetection && CUDA_VISIBLE_DEVICES=0 python tools/eval_mot.py -c configs/mot/fairmot/fairmot_dla34_30e_1088x608.yml -o weights=output/fairmot_dla34_30e_1088x608/model_final.pdparams
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第21张图片

相关参数定义请参考:
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第22张图片
结果如下
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第23张图片

第二步:模型预测
使用下载好的模型进行推理,为了方便我们只推理了dataset/mot/MOT16/images/test/MOT16-01/img1下面的数据

跟踪输出视频保存在output/mot_outputs/img1_vis.mp4

txt文件结果保存在output/mot_results/img1.txt,输出格式表示为frame_id, id, bbox_left, bbox_top, bbox_width, bbox_height, score, x, y, z
!cd PaddleDetection/ && CUDA_VISIBLE_DEVICES=0 python tools/infer_mot.py -c configs/mot/fairmot/fairmot_dla34_30e_1088x608.yml -o weights=output/fairmot_dla34_30e_1088x608/model_final.pdparams --image_dir=dataset/mot/MOT16/images/test/MOT16-01/img1 --save_videos
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第24张图片

百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第25张图片

第三步:查看预测结果
预测结果路径:PaddleDetection/output/mot_outputs/img1_vis.mp4
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第26张图片
下载至本地并打开
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第27张图片

第四步:MTMCT 跨镜跟踪体验

本项目展示城市主干道场景下的车辆跨镜跟踪预测流程,数据来自AIC21开源数据集

1.下载预测部署模型 首先我们下载目标检测和ReID预测模型,下载地址,然后统一放在~/PaddleDetection/output_inference下
!wget https://paddledet.bj.bcebos.com/models/mot/deepsort/ppyolov2_r50vd_dcn_365e_aic21mtmct_vehicle.tar
!wget https://paddledet.bj.bcebos.com/models/mot/deepsort/deepsort_pplcnet_vehicle.tar
!cd ~/PaddleDetection/ && mkdir -p output_inference
!mv ppyolov2_r50vd_dcn_365e_aic21mtmct_vehicle.tar ~/PaddleDetection/output_inference
!mv deepsort_pplcnet_vehicle.tar ~/PaddleDetection/output_inference
!cd ~/PaddleDetection/output_inference && tar -xvf ppyolov2_r50vd_dcn_365e_aic21mtmct_vehicle.tar && tar -xvf deepsort_pplcnet_vehicle.tar
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第28张图片

百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第29张图片

2.跨镜跟踪预测
在完成模型下载后,需要修改PaddleDetection/deploy/pptracking/python路径下的mtmct_cfg.yml,这份配置文件中包含了跨镜跟踪中轨迹融合的相关参数。首先需要确定cameras_bias中对应的名称与输入视频名称对应;其次,我们本次项目使用轨迹融合中的通用方法,将zone和camera相关的方法设置为False。
设置参数如下:

config for MTMCT

MTMCT: True
cameras_bias:
c003: 0
c004: 0

1.zone releated parameters

use_zone: False #True
zone_path: dataset/mot/aic21mtmct_vehicle/S06/zone

2.tricks parameters, can be used for other mtmct dataset

use_ff: True
use_rerank: False #True

3.camera releated parameters

use_camera: False #True
use_st_filter: False

4.zone releated parameters

use_roi: False #True
roi_dir: dataset/mot/aic21mtmct_vehicle/S06

3.配置完成后即可运行如下命令,输入视频为c004.mp4和c003.mp4两个不同视角的摄像头拍摄结果
跨镜跟踪输出视频保存在PaddleDetection/output/mtmct.vis
!wget https://bj.bcebos.com/v1/paddledet/data/mot/demo/mtmct-demo.tar && mv mtmct-demo.tar ~/PaddleDetection && cd ~/PaddleDetection && tar xvf mtmct-demo.tar
!cd ~/PaddleDetection && python deploy/pptracking/python/mot_sde_infer.py --model_dir=output_inference/ppyolov2_r50vd_dcn_365e_aic21mtmct_vehicle/ --reid_model_dir=output_inference/deepsort_pplcnet_vehicle/ --mtmct_dir=./mtmct-demo --device=GPU --mtmct_cfg=deploy/pptracking/python/mtmct_cfg.yml --scaled=True --save_mot_txts --save_images
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第30张图片

下载以下两个视频文件,并打开查看预测结果
百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第31张图片

图片

百度BML&飞桨训练营(七)跨境头车流量密度统计-- PP-tracking_第32张图片

你可能感兴趣的:(百度BML基础技术合集,百度,paddlepaddle,目标跟踪)