PaddleDetection行人分析工具-PP-Human案例实操
本项目将带大家快速上手PP-Human,实操行人跟踪、属性分析和行为识别等行人高频场景应用,以及PP-Human多种使用方式。
光看项目不够?飞桨PaddleDetection还准备了三日课程,百度高工现场代码教学。
10月19日(周三)晚 8:30-9:30
为大家带来PP-Human的详细解读,10分钟搭建行人分析系统,课程亮点:
- 打架摔倒等5大异常行为识别技术揭秘
- 检测/跟踪/关键点等10+核心算法升级解析
- 离线/在线视频流推理部署实操
- 行人属性分析二次开发手把手教学
行人分析工具介绍
行人分析工具,是围绕人的轨迹跟踪、行为识别、属性分析等进行分析的智能工具,可以帮忙人们完成一些繁琐的固定任务的统计、分析。例如:公园、商场的人流量统计;摔倒、打架等危险行为的判断;等等这些以人为核心的分析任务。
PaddleDetection
PaddleDetection为基于飞桨PaddlePaddle的端到端目标检测套件,内置30+模型算法及300+预训练模型,覆盖目标检测、实例分割、跟踪、关键点检测等方向,其中包括服务器端和移动端高精度、轻量级产业级SOTA模型、冠军方案和学术前沿算法,并提供配置化的网络模块组件、十余种数据增强策略和损失函数等高阶优化支持和多种部署方案,在打通数据处理、模型开发、训练、压缩、部署全流程的基础上,提供丰富的案例及教程,加速算法产业落地应用。
![](https://user-images.githubusercontent.com/22989727/189026616-75f9c06c-b403-4a61-9372-0fcbed6e0662.gif)
github网址:https://github.com/PaddlePaddle/PaddleDetection
环境准备
- 首先,下载PaddleDetection代码库
git clone https://github.com/PaddlePaddle/PaddleDetection.git
cd PaddleDetection
- 安装代码库依赖包
pip install -r requirements.txt
# 下载代码库并安装依赖软件包
%cd work
!git clone https://gitee.com/paddlepaddle/PaddleDetection
%cd PaddleDetection
!pip install -r requirements.txt
场景分析工具PP-Human、PP-Vehicle介绍
PaddleDetection深入探索核心行业的高频场景,提供了行人、车辆场景的开箱即用分析工具,支持图片/单镜头视频/多镜头视频/在线视频流多种输入方式,广泛应用于智慧交通、智慧城市、工业巡检等领域。支持服务器端部署及TensorRT加速,T4服务器上可达到实时。
🚶♂️🚶♀️ PP-Human支持四大产业级功能:五大异常行为识别、26种人体属性分析、实时人流计数、跨镜头(ReID)跟踪。
🚗🚙 PP-Vehicle囊括四大交通场景核心功能:车牌识别、属性识别、车流量统计、违章检测。
![](https://user-images.githubusercontent.com/48054808/184843170-c3ef7d29-913b-4c6e-b533-b83892a8b0e2.gif)
github网址:https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.5/deploy/pipeline
PP-Human使用操作方式解析
1. 一行命令执行功能(通用配置文件方式):
命令格式:
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pphuman.yml `-o Module.enable=True` --video_file=../video/c1.mp4 --device=gpu
该命令中-o Module.enable=True
命令开启目标功能。
其中Module模块可以是以下任意功能:
- MOT(目标跟踪)
- ATTR(属性分析)
- VIDEO_ACTION(视频行为分析,案例:打架)
- SKELETON_ACTION(骨骼行为分析,案例:摔倒)
- ID_BASED_DETACTION(检测行为分析,案例:抽烟)
- ID_BASED_CLSACTION(分类行为分析,案例:打电话)
- REID(跨镜跟踪)
命令参数说明
参数 | 是否必须 | 含义 |
---|---|---|
–config | Yes | 配置文件路径 |
-o | Option | 覆盖配置文件中对应的配置 |
–image_file | Option | 需要预测的图片 |
–image_dir | Option | 要预测的图片文件夹路径 |
–video_file | Option | 需要预测的视频,或者rtsp流地址(推荐使用rtsp参数) |
–rtsp | Option | rtsp视频流地址,支持一路或者多路同时输入 |
–camera_id | Option | 用来预测的摄像头ID,默认为-1(表示不使用摄像头预测,可设置为:0 - (摄像头数目-1) ),预测过程中在可视化界面按q 退出输出预测结果到:output/output.mp4 |
–device | Option | 运行时的设备,可选择CPU/GPU/XPU ,默认为CPU |
–pushurl | Option | 对预测结果视频进行推流的地址,以rtsp://开头,该选项优先级高于视频结果本地存储,打开时不再另外存储本地预测结果视频 |
–output_dir | Option | 可视化结果保存的根目录,默认为output/ |
–run_mode | Option | 使用GPU时,默认为paddle, 可选(paddle/trt_fp32/trt_fp16/trt_int8) |
–enable_mkldnn | Option | CPU预测中是否开启MKLDNN加速,默认为False |
–cpu_threads | Option | 设置cpu线程数,默认为1 |
–trt_calib_mode | Option | TensorRT是否使用校准功能,默认为False。使用TensorRT的int8功能时,需设置为True,使用PaddleSlim量化后的模型时需要设置为False |
–do_entrance_counting | Option | 是否统计出入口流量,默认为False |
–draw_center_traj | Option | 是否绘制跟踪轨迹,默认为False |
–region_type | Option | ‘horizontal’(默认值)、‘vertical’:表示流量统计方向选择;‘custom’:表示设置闯入区域 |
–region_polygon | Option | 设置闯入区域多边形多点的坐标,无默认值 |
–do_break_in_counting | Option | 此项表示做区域闯入检查 |
请点击此处查看本环境基本用法.
Please click here for more detailed instructions.
# 案例1:使用pphuman通用配置文件infer_cfg_pphuman.yml, 通过 -o MOT.enable=True 命令开启目标跟踪功能, 使用--output_dir指定保存路径(默认为output文件夹)
!python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pphuman.yml -o MOT.enable=True --video_file=../video/c1.mp4 --device=gpu --output_dir=output/mot
# 案例2:使用pphuman通用配置文件infer_cfg_pphuman.yml, 通过 -o ATTR.enable=True 命令开启行人属性分析功能
!python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pphuman.yml -o ATTR.enable=True --video_file=../video/c1.mp4 --device=gpu --output_dir=output/attr
# 案例3:更换使用的模型,指定使用PP-YOLOE-s版本小模型
!python deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pphuman.yml -o MOT.enable=True MOT.model_dir=https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_s_36e_pipeline.zip --video_file=../video/c1.mp4 --device=gpu --output_dir=output/mot_s
2. 使用examples配置文件,快速执行功能
命令格式:
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/`config.yml` --video_file=`input.mp4` --device=gpu
只需修改两个选项:
- config.yml: 选择目标功能配置文件,根据旋转的配置文件开启相应功能
- input.mp4: 选择分析目标视频文件
# 案例1:使用examples配置文件对c1.mp4视频进行行人目标跟踪分析
!python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_human_mot.yml --video_file=../video/c1.mp4 --device=gpu --output_dir=output/mot
# 案例2:使用examples配置文件对c1.mp4视频进行行人属性分析
!python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_human_attr.yml --video_file=../video/c1.mp4 --device=gpu --output_dir=output/attr
# 案例3:使用examples配置文件对c1.mp4视频进行人员打电话识别分析
!python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_calling.yml --video_file=../video/c1.mp4 --device=gpu --output_dir=output/calling
3. 视频文件夹并行分析
命令格式:
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/config.yml `--video_dir`=video_dir --device=gpu
其中--video_dir
表示视频文件夹路径
# 视频文件夹分析案例
!python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_human_attr.yml --video_dir=../video/ --device=gpu
4. 图片输入方式分析
- 单张图片分析
命令格式:
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/config.yml --`image_file`=demo/hrnet_demo.jpg --device=gpu
其中--image_file
表述输入图片路径
- 图片文件夹分析
命令格式:
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/config.yml `--image_dir`=video_dir --device=gpu
其中--image_dir
表示图片文件夹路径
#案例:单张图片输入分析
!python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_human_attr.yml --image_file=demo/hrnet_demo.jpg --device=gpu
5.RTSP视频流推、拉流使用
- 拉流命令格式:
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/config.yml `--rtsp=[YOUR_RTSP_SITE]` --device=gpu
其中--rtsp=[YOUR_RTSP_SITE]
设置rtsp拉流地址
- 推流命令格式
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/config.yml --video_file=input.mp4 `--pushurl=rtsp://127.0.0.1:8554` --device=gpu
其中--pushurl=[YOUR_RTSP_SERVER_IP]
设置rtsp推流地址
注意:
- 使用RTSP推拉流功能时请确保网络地址可以访问,否则不能正确运行
- 受限于Aistudio环境中ffmpeg版本,推流功能无法在Aistudio环境中执行,请下载到本地环境执行。
- rtsp推流服务基于 rtsp-simple-server,使用请提前开启,详情及下载地址请参考PP-Human使用文档
#案例:rtsp拉流分析
#!python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_human_mot.yml --rtsp=rtsp://[YOUR_RTSP_SITE] --device=gpu
#案例:rtsp推流分析
#!python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_human_mot.yml --device=gpu --video_file=../video/c1.mp4 --pushurl rtsp://127.0.0.1:8554
飞桨PaddleDetection准备的三日课程由百度研发工程师们详细讲解PP-Human细节,大家千万不要错过!
此文章为搬运
原项目链接