|
| 1 | +# 快速开始 |
| 2 | + |
| 3 | +## 一、环境准备 |
| 4 | + |
| 5 | +环境要求: PaddleDetection版本 >= release/2.4 或 develop版本 |
| 6 | + |
| 7 | +PaddlePaddle和PaddleDetection安装 |
| 8 | + |
| 9 | +``` |
| 10 | +# PaddlePaddle CUDA10.1 |
| 11 | +python -m pip install paddlepaddle-gpu==2.2.2.post101 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html |
| 12 | +
|
| 13 | +# PaddlePaddle CPU |
| 14 | +python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple |
| 15 | +
|
| 16 | +# 克隆PaddleDetection仓库 |
| 17 | +cd <path/to/clone/PaddleDetection> |
| 18 | +git clone https://github.com/PaddlePaddle/PaddleDetection.git |
| 19 | +
|
| 20 | +# 安装其他依赖 |
| 21 | +cd PaddleDetection |
| 22 | +pip install -r requirements.txt |
| 23 | +``` |
| 24 | + |
| 25 | +1. 详细安装文档参考[文档](../../../../docs/tutorials/INSTALL_cn.md) |
| 26 | +2. 如果需要TensorRT推理加速(测速方式),请安装带`TensorRT版本Paddle`。您可以从[Paddle安装包](https://paddleinference.paddlepaddle.org.cn/v2.2/user_guides/download_lib.html#python)下载安装,或者按照[指导文档](https://www.paddlepaddle.org.cn/inference/master/optimize/paddle_trt.html)使用docker或自编译方式准备Paddle环境。 |
| 27 | + |
| 28 | +## 二、模型下载 |
| 29 | + |
| 30 | +PP-Human提供了目标检测、属性识别、行为识别、ReID预训练模型,以实现不同使用场景,用户可以直接下载使用 |
| 31 | + |
| 32 | +| 任务 | 适用场景 | 精度 | 预测速度(ms) | 模型权重 | 预测部署模型 | |
| 33 | +| :---------: |:---------: |:--------------- | :-------: | :------: | :------: | |
| 34 | +| 目标检测 | 图片输入 | mAP: 56.3 | 28.0ms |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.pdparams) |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.zip) | |
| 35 | +| 目标跟踪 | 视频输入 | MOTA: 72.0 | 33.1ms |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.pdparams) |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.zip) | |
| 36 | +| 属性识别 | 图片/视频输入 属性识别 | mA: 94.86 | 单人2ms | - |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/strongbaseline_r50_30e_pa100k.zip) | |
| 37 | +| 关键点检测 | 视频输入 行为识别 | AP: 87.1 | 单人2.9ms |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/dark_hrnet_w32_256x192.pdparams) |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/dark_hrnet_w32_256x192.zip) |
| 38 | +| 行为识别 | 视频输入 行为识别 | 准确率: 96.43 | 单人2.7ms | - |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/STGCN.zip) | |
| 39 | +| ReID | 视频输入 跨镜跟踪 | mAP: 98.8 | 单人1.5ms | - |[下载链接](https://bj.bcebos.com/v1/paddledet/models/pipeline/reid_model.zip) | |
| 40 | + |
| 41 | +下载模型后,解压至`./output_inference`文件夹 |
| 42 | + |
| 43 | +**注意:** |
| 44 | + |
| 45 | +- 模型精度为融合数据集结果,数据集包含开源数据集和企业数据集 |
| 46 | +- ReID模型精度为Market1501数据集测试结果 |
| 47 | +- 预测速度为T4下,开启TensorRT FP16的效果, 模型预测速度包含数据预处理、模型预测、后处理全流程 |
| 48 | + |
| 49 | +## 三、配置文件说明 |
| 50 | + |
| 51 | +PP-Human相关配置位于```deploy/pphuman/config/infer_cfg.yml```中,存放模型路径,完成不同功能需要设置不同的任务类型 |
| 52 | + |
| 53 | +功能及任务类型对应表单如下: |
| 54 | + |
| 55 | +| 输入类型 | 功能 | 任务类型 | 配置项 | |
| 56 | +|-------|-------|----------|-----| |
| 57 | +| 图片 | 属性识别 | 目标检测 属性识别 | DET ATTR | |
| 58 | +| 单镜头视频 | 属性识别 | 多目标跟踪 属性识别 | MOT ATTR | |
| 59 | +| 单镜头视频 | 行为识别 | 多目标跟踪 关键点检测 摔倒识别 | MOT KPT SKELETON_ACTION | |
| 60 | + |
| 61 | +例如基于视频输入的属性识别,任务类型包含多目标跟踪和属性识别,具体配置如下: |
| 62 | + |
| 63 | +``` |
| 64 | +crop_thresh: 0.5 |
| 65 | +attr_thresh: 0.5 |
| 66 | +visual: True |
| 67 | +
|
| 68 | +MOT: |
| 69 | + model_dir: output_inference/mot_ppyoloe_l_36e_pipeline/ |
| 70 | + tracker_config: deploy/pphuman/config/tracker_config.yml |
| 71 | + batch_size: 1 |
| 72 | + basemode: "idbased" |
| 73 | +
|
| 74 | +ATTR: |
| 75 | + model_dir: output_inference/strongbaseline_r50_30e_pa100k/ |
| 76 | + batch_size: 8 |
| 77 | + basemode: "idbased" |
| 78 | + enable: False |
| 79 | +``` |
| 80 | + |
| 81 | +**注意:** |
| 82 | + |
| 83 | +- 如果用户需要实现不同任务,可以在配置文件对应enable选项设置为True, 其basemode类型会在代码中开启依赖的基础能力模型,比如跟踪模型。 |
| 84 | +- 如果用户仅需要修改模型文件路径,可以在命令行中加入 `--model_dir det=ppyoloe/` 即可,无需修改配置文件,详细说明参考下方参数说明文档 |
| 85 | + |
| 86 | + |
| 87 | +### 四、预测部署 |
| 88 | + |
| 89 | +``` |
| 90 | +# 行人检测,指定配置文件路径和测试图片 |
| 91 | +python deploy/pphuman/pipeline.py --config deploy/pphuman/config/infer_cfg.yml --image_file=test_image.jpg --device=gpu [--run_mode trt_fp16] |
| 92 | +
|
| 93 | +# 行人跟踪,指定配置文件路径和测试视频 |
| 94 | +python deploy/pphuman/pipeline.py --config deploy/pphuman/config/infer_cfg.yml --video_file=test_video.mp4 --device=gpu [--run_mode trt_fp16] |
| 95 | +
|
| 96 | +# 行人跟踪,指定配置文件路径,模型路径和测试视频 |
| 97 | +# 命令行中指定的模型路径优先级高于配置文件 |
| 98 | +python deploy/pphuman/pipeline.py --config deploy/pphuman/config/infer_cfg.yml --video_file=test_video.mp4 --device=gpu --model_dir det=ppyoloe/ [--run_mode trt_fp16] |
| 99 | +
|
| 100 | +# 行人属性识别,指定配置文件路径和测试视频,在配置文件中ATTR部分开启enable选项。 |
| 101 | +python deploy/pphuman/pipeline.py --config deploy/pphuman/config/infer_cfg.yml --video_file=test_video.mp4 --device=gpu [--run_mode trt_fp16] |
| 102 | +
|
| 103 | +# 行为识别,指定配置文件路径和测试视频,在配置文件中对应行为识别功能开启enable选项。 |
| 104 | +python deploy/pphuman/pipeline.py --config deploy/pphuman/config/infer_cfg.yml --video_file=test_video.mp4 --device=gpu [--run_mode trt_fp16] |
| 105 | +
|
| 106 | +# 行人跨境跟踪,指定配置文件路径和测试视频列表文件夹,在配置文件中REID部分开启enable选项。 |
| 107 | +python deploy/pphuman/pipeline.py --config deploy/pphuman/config/infer_cfg.yml --video_dir=mtmct_dir/ --device=gpu [--run_mode trt_fp16] |
| 108 | +``` |
| 109 | + |
| 110 | +### 4.1 参数说明 |
| 111 | + |
| 112 | +| 参数 | 是否必须|含义 | |
| 113 | +|-------|-------|----------| |
| 114 | +| --config | Yes | 配置文件路径 | |
| 115 | +| --model_dir | Option | PP-Human中各任务模型路径,优先级高于配置文件, 例如`--model_dir det=better_det/ attr=better_attr/`| |
| 116 | +| --image_file | Option | 需要预测的图片 | |
| 117 | +| --image_dir | Option | 要预测的图片文件夹路径 | |
| 118 | +| --video_file | Option | 需要预测的视频 | |
| 119 | +| --camera_id | Option | 用来预测的摄像头ID,默认为-1(表示不使用摄像头预测,可设置为:0 - (摄像头数目-1) ),预测过程中在可视化界面按`q`退出输出预测结果到:output/output.mp4| |
| 120 | +| --device | Option | 运行时的设备,可选择`CPU/GPU/XPU`,默认为`CPU`| |
| 121 | +| --output_dir | Option|可视化结果保存的根目录,默认为output/| |
| 122 | +| --run_mode | Option |使用GPU时,默认为paddle, 可选(paddle/trt_fp32/trt_fp16/trt_int8)| |
| 123 | +| --enable_mkldnn | Option | CPU预测中是否开启MKLDNN加速,默认为False | |
| 124 | +| --cpu_threads | Option| 设置cpu线程数,默认为1 | |
| 125 | +| --trt_calib_mode | Option| TensorRT是否使用校准功能,默认为False。使用TensorRT的int8功能时,需设置为True,使用PaddleSlim量化后的模型时需要设置为False | |
| 126 | +| --do_entrance_counting | Option | 是否统计出入口流量,默认为False | |
| 127 | +| --draw_center_traj | Option | 是否绘制跟踪轨迹,默认为False | |
| 128 | + |
| 129 | +## 五、方案介绍 |
| 130 | + |
| 131 | +PP-Human整体方案如下图所示 |
| 132 | + |
| 133 | +<div width="1000" align="center"> |
| 134 | + <img src="../../../../docs/images/pphuman-tech.png"/> |
| 135 | +</div> |
| 136 | + |
| 137 | + |
| 138 | +### 1. 行人检测 |
| 139 | +- 采用PP-YOLOE L 作为目标检测模型 |
| 140 | +- 详细文档参考[PP-YOLOE](../../../../configs/ppyoloe/)和[检测跟踪文档](mot.md) |
| 141 | + |
| 142 | +### 2. 行人跟踪 |
| 143 | +- 采用SDE方案完成行人跟踪 |
| 144 | +- 检测模型使用PP-YOLOE L |
| 145 | +- 跟踪模块采用Bytetrack方案 |
| 146 | +- 详细文档参考[Bytetrack](../../../../configs/mot/bytetrack)和[检测跟踪文档](mot.md) |
| 147 | + |
| 148 | +### 3. 跨镜行人跟踪 |
| 149 | +- 使用PP-YOLOE + Bytetrack得到单镜头多目标跟踪轨迹 |
| 150 | +- 使用ReID(centroid网络)对每一帧的检测结果提取特征 |
| 151 | +- 多镜头轨迹特征进行匹配,得到跨镜头跟踪结果 |
| 152 | +- 详细文档参考[跨镜跟踪](mtmct.md) |
| 153 | + |
| 154 | +### 4. 属性识别 |
| 155 | +- 使用PP-YOLOE + Bytetrack跟踪人体 |
| 156 | +- 使用StrongBaseline(多分类模型)完成识别属性,主要属性包括年龄、性别、帽子、眼睛、上衣下衣款式、背包等 |
| 157 | +- 详细文档参考[属性识别](attribute.md) |
| 158 | + |
| 159 | +### 5. 行为识别: |
| 160 | +- 使用PP-YOLOE + Bytetrack跟踪人体 |
| 161 | +- 使用HRNet进行关键点检测得到人体17个骨骼点 |
| 162 | +- 结合50帧内同一个人骨骼点的变化,通过ST-GCN判断50帧内发生的动作是否为摔倒 |
| 163 | +- 详细文档参考[行为识别](action.md) |
0 commit comments