PP-Human人类属性运行环境搭建
功能介绍
PP-Human提供了目标检测、属性识别、行为识别、ReID预训练模型,以实现不同使用场景,用户可以直接下载使用.Paddle humank可以实现实现PersonReID、客流等功能
任务 | 端到端速度(ms) | 模型方案 | 模型体积 |
---|---|---|---|
行人检测(高精度) | 25.1ms | 多目标跟踪 | 182M |
行人检测(轻量级) | 16.2ms | 多目标跟踪 | 27M |
行人跟踪(高精度) | 31.8ms | 多目标跟踪 | 182M |
行人跟踪(轻量级) | 21.0ms | 多目标跟踪 | 27M |
跨镜跟踪(REID) | 单人1.5ms | REID | REID:92M |
属性识别(高精度) | 单人8.5ms | 目标检测 属性识别 | 目标检测:182M 属性识别:86M |
属性识别(轻量级) | 单人7.1ms | 目标检测 属性识别 | 目标检测:182M 属性识别:86M |
摔倒识别 | 单人10ms | 多目标跟踪 关键点检测 基于关键点行为识别 | 多目标跟踪:182M 关键点检测:101M 基于关键点行为识别:21.8M |
闯入识别 | 31.8ms | 多目标跟踪 | 多目标跟踪:182M |
打架识别 | 19.7ms | 视频分类 | 90M |
抽烟识别 | 单人15.1ms | 目标检测 基于人体id的目标检测 | 目标检测:182M 基于人体id的目标检测:27M |
打电话识别 | 单人6.0ms | 目标检测 基于人体id的图像分类 | 目标检测:182M 基于人体id的图像分类:45M |
运行环境搭建
下载docker
然后pull镜像文件。cuda版本向下兼容
docker pull paddlepaddle/paddle:2.4.1-gpu-cuda10.2-cudnn7.6-trt7.0
创建docker
然后根据下载的镜像文件创建docker容器。
docker run --runtime nvidia \
-p 9292:9292 \
--name test \
-shm-size=252G \
--network=host \
-v $PWD:/home/PaddleDetection \
-dit paddlepaddle/paddle:2.4.1-gpu-cuda10.2-cudnn7.6-trt7.0 /bin/bash
-v $PWD:/home/PaddleDetection :挂载工程目录
验证docker
然后用docker ps看一下当前运行的docker容器
docker ps #查看当前运行的docker容器。
docker ps -a #查看所有存在的docker容器。
结果如下:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
489e9f56374b paddlepaddle/paddle:2.4.1-gpu-cuda10.2-cudnn7.6-trt7.0 "/bin/bash" 41 hours ago Up 41 hours 22/tcp, 0.0.0.0:9292->9292/tcp test
进入docker
然后进入docker环境:
docker exec -it test /bin/bash
工程部署
克隆PaddleDetection仓库
cd /home/test
git clone https://github.com/PaddlePaddle/PaddleDetection.git
cd PaddleDetection
git checkout release/2.5
安装其他依赖
cd PaddleDetection
pip install -r requirements.txt -i https://pypi.douban.com/simple
预测部署
视频资源:https://motchallenge.net/
参数说明
–video_file | Option | |
---|---|---|
–config | Yes | 配置文件路径 |
-o | Option | 覆盖配置文件中对应的配置 |
–image_file | Option | 需要预测的图片 |
–image_dir | Option | 要预测的图片文件夹路径 |
–video_file | Option | 需要预测的视频,或者rtsp流地址(推荐使用rtsp参数) |
–device | Option | 运行时的设备,可选择CPU/GPU/XPU ,默认为CPU |
–rtsp | Option | rtsp视频流地址,支持一路或者多路同时输入 |
–run_mode | Option | 使用GPU时,默认为paddle, 可选(paddle/trt_fp32/trt_fp16/trt_int8) |
–trt_calib_mode | Option | TensorRT是否使用校准功能,默认为False。使用TensorRT的int8功能时,需设置为True,使用PaddleSlim量化后的模型时需要设置为False |
图片检测
行人检测,指定配置文件路径和测试图片,图片输入默认打开检测模型
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pphuman.yml --image_file=demo/000000014439_640x640.jpg --device=gpu
视频检测
- 行人属性识别,直接使用examples中配置
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_human_attr.yml --video_file=demo/videos/MOT16-02-raw.mp4 --device=gpu
- 行人跟踪,指定配置文件路径,模型路径和测试视频, 命令行中指定的模型路径优先级高于配置文件
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pphuman.yml -o MOT.enable=True REID.enable=True --video_file=demo/videos/MOT16-02-raw.mp4 --device=gpu
命令行中指定的模型路径优先级高于配置文件
- 行为识别,以摔倒识别为例,命令行中开启SKELETON_ACTION模型
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pphuman.yml -o SKELETON_ACTION.enbale=True --video_file=demo/videos/MOT16-02-raw.mp4 --device=gpu
视频流检测
- 行人属性识别,单路视频流
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pphuman.yml -o visual=False --rtsp rtsp://[YOUR_RTSP_SITE] --device=gpu
- 行人属性识别,多路视频流
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pphuman.yml -o visual=False --rtsp rtsp://[YOUR_RTSP_SITE1] rtsp://[YOUR_RTSP_SITE2] --device=gpu
tensorrt加速
使用tensorrt对服务进行加速
mode of running(paddle/trt_fp32/trt_fp16/trt_int8)
- run_mode = paddle
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pphuman.yml --video_dir=demo/videos --device=gpu --run_mode paddle
- run_mode = trt_fp32
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pphuman.yml --video_dir=demo/videos --device=gpu --run_mode trt_fp32
- run_mode = trt_fp16
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pphuman.yml --video_dir=demo/videos --device=gpu --run_mode trt_fp16
- run_mode = trt_int8,需要对模型进行量化
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pphuman.yml --video_dir=demo/videos --device=gpu --run_mode trt_int8