diff --git a/deploy/pipeline/docs/tutorials/PPVehicle_QUICK_STARTED.md b/deploy/pipeline/docs/tutorials/PPVehicle_QUICK_STARTED.md index 6a2f3d64a04f94c38a4b72322bc7255838ee78c0..c2a69d0f6db50f61ed3c534b39b4b2052a71c01e 100644 --- a/deploy/pipeline/docs/tutorials/PPVehicle_QUICK_STARTED.md +++ b/deploy/pipeline/docs/tutorials/PPVehicle_QUICK_STARTED.md @@ -41,6 +41,24 @@ pip install -r requirements.txt ## 模型下载 +PP-Vehicle提供了目标检测、属性识别、行为识别、ReID预训练模型,以实现不同使用场景,用户可以直接下载使用 + +| 任务 | 端到端速度(ms)| 模型方案 | 模型体积 | +| :---------: | :-------: | :------: |:------: | +| 车辆检测(高精度) | 25.1ms | [多目标跟踪](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_ppvehicle.zip) | 182M | +| 车辆检测(轻量级) | 16.2ms | [多目标跟踪](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_s_36e_ppvehicle.zip) | 27M | +| 车辆跟踪(高精度) | 31.8ms | [多目标跟踪](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_ppvehicle.zip) | 182M | +| 车辆跟踪(轻量级) | 21.0ms | [多目标跟踪](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_s_36e_ppvehicle.zip) | 27M | +| 闯入识别 | 31.8ms | [多目标跟踪](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_ppvehicle.zip) | 多目标跟踪:182M | + +下载模型后,解压至`./output_inference`文件夹。 + +在配置文件中,模型路径默认为模型的下载路径,如果用户不修改,则在推理时会自动下载对应的模型。 + +**注意:** + +- 检测跟踪模型精度为公开数据集BDD100K-MOT和UA-DETRAC整合后的联合数据集PPVehicle的结果,具体参照[ppvehicle](../../../../configs/ppvehicle) +- 预测速度为T4下,开启TensorRT FP16的效果, 模型预测速度包含数据预处理、模型预测、后处理全流程 ## 配置文件说明 @@ -57,7 +75,22 @@ PP-Vehicle相关配置位于```deploy/pipeline/config/infer_cfg_ppvehicle.yml``` 例如基于视频输入的属性识别,任务类型包含多目标跟踪和属性识别,具体配置如下: ``` - +crop_thresh: 0.5 +visual: True +warmup_frame: 50 + +MOT: + model_dir: output_inference/mot_ppyoloe_l_36e_ppvehicle/ + tracker_config: deploy/pipeline/config/tracker_config.yml + batch_size: 1 + enable: True + +VEHICLE_ATTR: + model_dir: output_inference/vehicle_attribute_infer/ + batch_size: 8 + color_threshold: 0.5 + type_threshold: 0.5 + enable: True ``` **注意:** @@ -95,6 +128,7 @@ python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_ppv | 参数 | 是否必须|含义 | |-------|-------|----------| | --config | Yes | 配置文件路径 | +| -o | Option | 覆盖配置文件中对应的配置 | | --model_dir | Option | 各任务模型路径,优先级高于配置文件, 例如`--model_dir det=better_det/ attr=better_attr/`| | --image_file | Option | 需要预测的图片 | | --image_dir | Option | 要预测的图片文件夹路径 | diff --git a/deploy/pipeline/docs/tutorials/ppvehicle_mot.md b/deploy/pipeline/docs/tutorials/ppvehicle_mot.md index 7022481526137770c14ace7440bbea4e99511edb..2f830ce5293d6e6d1818c3894dd3afb676705f80 100644 --- a/deploy/pipeline/docs/tutorials/ppvehicle_mot.md +++ b/deploy/pipeline/docs/tutorials/ppvehicle_mot.md @@ -1,20 +1,117 @@ +[English](ppvehicle_mot_en.md) | 简体中文 # PP-Vehicle车辆跟踪模块 【应用介绍】 +车辆检测与跟踪在交通监控、自动驾驶等方向都具有广泛应用,PP-Vehicle中集成了检测跟踪模块,是车牌检测、车辆属性识别等任务的基础。我们提供了预训练模型,用户可以直接下载使用。 【模型下载】 +| 任务 | 算法 | 精度 | 预测速度(ms) |下载链接 | +|:---------------------|:---------:|:------:|:------:| :---------------------------------------------------------------------------------: | +| 车辆检测/跟踪 | PP-YOLOE-l | mAP: 63.9
MOTA: 50.1 | 检测: 25.1ms
跟踪:31.8ms | [下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_ppvehicle.zip) | +| 车辆检测/跟踪 | PP-YOLOE-s | mAP: 61.3
MOTA: 46.8 | 检测: 16.2ms
跟踪:21.0ms | [下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_s_36e_ppvehicle.zip) | + +1. 检测/跟踪模型精度为PPVehicle数据集训练得到,整合了BDD100K-MOT和UA-DETRAC,是将BDD100K-MOT中的`car, truck, bus, van`和UA-DETRAC中的`car, bus, van`都合并为1类`vehicle(1)`后的数据集,检测精度mAP是PPVehicle的验证集上测得,跟踪精度MOTA是在BDD100K-MOT的验证集上测得(`car, truck, bus, van`合并为1类`vehicle`)。训练具体流程请参照[ppvehicle](../../../../configs/ppvehicle)。 +2. 预测速度为T4 机器上使用TensorRT FP16时的速度, 速度包含数据预处理、模型预测、后处理全流程。 ## 使用方法 【配置项说明】 +配置文件中与属性相关的参数如下: +``` +DET: + model_dir: output_inference/mot_ppyoloe_l_36e_ppvehicle/ # 车辆检测模型调用路径 + batch_size: 1 # 模型预测时的batch_size大小 + +MOT: + model_dir: output_inference/mot_ppyoloe_l_36e_ppvehicle/ # 车辆跟踪模型调用路径 + tracker_config: deploy/pipeline/config/tracker_config.yml + batch_size: 1 # 模型预测时的batch_size大小, 跟踪任务只能设置为1 + skip_frame_num: 1 # 跳帧预测的帧数,默认为1即不跳帧,建议跳帧帧数最大不超过4 + enable: False # 是否开启该功能,使用跟踪前必须确保设置为True +``` + 【使用命令】 +1. 从上表链接中下载模型并解压到```./output_inference```路径下,并修改配置文件中模型路径。默认为自动下载模型,无需做改动。 +2. 图片输入时,是纯检测任务,启动命令如下 +```python +python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_ppvehicle.yml \ + --image_file=test_image.jpg \ + --device=gpu +``` +3. 视频输入时,是跟踪任务,注意首先设置infer_cfg_ppvehicle.yml中的MOT配置的`enable=True`,如果希望跳帧加速检测跟踪流程,可以设置`skip_frame_num: 2`,建议跳帧帧数最大不超过4: +``` +MOT: + model_dir: https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_ppvehicle.zip + tracker_config: deploy/pipeline/config/tracker_config.yml + batch_size: 1 + skip_frame_num: 2 + enable: True +``` +```python +python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_ppvehicle.yml \ + --video_file=test_video.mp4 \ + --device=gpu +``` +4. 若修改模型路径,有以下两种方式: + - 方法一:```./deploy/pipeline/config/infer_cfg_ppvehicle.yml```下可以配置不同模型路径,检测和跟踪模型分别对应`DET`和`MOT`字段,修改对应字段下的路径为实际期望的路径即可。 + - 方法二:命令行中--config配置项后面增加`-o MOT.model_dir=[YOUR_DETMODEL_PATH]`修改模型路径。 +```python +python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_ppvehicle.yml \ + --video_file=test_video.mp4 \ + --device=gpu \ + --region_type=horizontal \ + --do_entrance_counting \ + --draw_center_traj \ + -o MOT.model_dir=ppyoloe/ + +``` +**注意:** + - `--do_entrance_counting`表示是否统计出入口流量,不设置即默认为False。 + - `--draw_center_traj`表示是否绘制跟踪轨迹,不设置即默认为False。注意绘制跟踪轨迹的测试视频最好是静止摄像头拍摄的。 + - `--region_type`表示流量计数的区域,当设置`--do_entrance_counting`时可选择`horizontal`或者`vertical`,默认是`horizontal`,表示以视频图片的中心水平线为出入口,同一物体框的中心点在相邻两秒内分别在区域中心水平线的两侧,即完成计数加一。 + + +5. 区域闯入判断和计数 + +注意首先设置infer_cfg_ppvehicle.yml中的MOT配置的enable=True,然后启动命令如下 +```python +python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_ppvehicle.yml \ + --video_file=test_video.mp4 \ + --device=gpu \ + --draw_center_traj \ + --do_break_in_counting \ + --region_type=custom \ + --region_polygon 200 200 400 200 300 400 100 400 +``` +**注意:** + - `--do_break_in_counting`表示是否进行区域出入后计数,不设置即默认为False。 + - `--region_type`表示流量计数的区域,当设置`--do_break_in_counting`时仅可选择`custom`,默认是`custom`,表示以用户自定义区域为出入口,同一物体框的下边界中点坐标在相邻两秒内从区域外到区域内,即完成计数加一。 + - `--region_polygon`表示用户自定义区域的多边形的点坐标序列,每两个为一对点坐标(x,y),按顺时针顺序连成一个封闭区域,至少需要3对点也即6个整数,默认值是`[]`,需要用户自行设置点坐标。用户可以运行[此段代码](../../tools/get_video_info.py)获取所测视频的分辨率帧数,以及可以自定义画出自己想要的多边形区域的可视化并自己调整。 + 自定义多边形区域的可视化代码运行如下: + ```python + python get_video_info.py --video_file=demo.mp4 --region_polygon 200 200 400 200 300 400 100 400 + ``` 【效果展示】 +
+ +
+ ## 方案说明 【实现方案及特色】 +1. 使用目标检测/多目标跟踪技术来获取图片/视频输入中的车辆检测框,检测模型方案为PP-YOLOE,详细文档参考[PP-YOLOE](../../../../configs/ppyoloe)和[ppvehicle](../../../../configs/ppvehicle)。 +2. 多目标跟踪模型方案采用[OC-SORT](https://arxiv.org/pdf/2203.14360.pdf),采用PP-YOLOE替换原文的YOLOX作为检测器,采用OCSORTTracker作为跟踪器,详细文档参考[OC-SORT](../../../../configs/mot/ocsort)。 ## 参考文献 +``` +@article{cao2022observation, + title={Observation-Centric SORT: Rethinking SORT for Robust Multi-Object Tracking}, + author={Cao, Jinkun and Weng, Xinshuo and Khirodkar, Rawal and Pang, Jiangmiao and Kitani, Kris}, + journal={arXiv preprint arXiv:2203.14360}, + year={2022} +} +```