适用场景:测试开发环境、单机、异构硬件。
本节内容主要介绍下如何在本地环境测试和开发环境中使用PaddleDetection模型套件的官方标准Docker镜像来进行PP-Human案例的开发与部署
社区是城市的关键组成部分,社区治理是围绕社区场景下的人、地、物、情、事的管理与服务。
随着城市化的快速推进及人口流动的快速增加,传统社区治理在人员出入管控、安防巡逻、车辆停放管理等典型场景下都面临着人力不足、效率低下、响应不及时等诸多难题。而人工智能技术代替人力,实现人、车、事的精准治理,大幅降低人力、物质、时间等成本,以最低成本发挥最强大的管理效能,有效推动城市治理向更“数字化、自动化、智慧化”的方向演进。
百度飞桨针对智慧社区中的典型场景,提供了实时行人分析工具PP-Human,基于行人检测与跟踪,实现26种人体属性分析以及摔倒等异常行为识别。
详细文档可参考:https://github.com/PaddlePaddle/PaddleDetection/tree/develop/deploy/pphuman
传统社区视频监控80%都依靠人工实现,随着摄像头在社区中的大规模普及,日超千兆的视频图像数据、人员信息的日渐繁杂已远超人工的负荷。
因此,上海天覆科技灵活应用飞桨行人分析PP-Human中的人体跟踪和属性识别算法实现社区视频监控的结构化留痕,实时识别进出小区的人员的性别、年龄、衣着打扮等26种属性并记录其运动轨迹,实现AI算法完全代替人力,高效、准确地完成出入口管理、快速寻人、轨迹分析等任务。
社区的安全防护是重中之重,如何高效保障社区居民人身安全成为一大难题,传统的方式以人工视频监控为主,人力巡逻为辅,往往面临异常情况响应不及时、人力消耗极大的问题。
飞桨行人分析PP-Human中提供的摔倒识别算法,采用了关键点+时空图卷积网络的技术,对摔倒姿势无限制、背景环境无要求,助力多家安防龙头企业实现了不同方向、不同姿态、不同光照情况下40毫秒的实时摔倒识别,避免因人力监管不到位造成的救援拖延,完成社区安防系统智能化的全面转型。
使用的Docker环境可以快速上手体验,我们为您提供了CPU和GPU版本的镜像。
使用CPU版本的Docker镜像
docker run --name pphuman -v $PWD:/mnt -p 8888:8888 -it registry.baidubce.com/paddleflow-public/paddledetection:2.4 /bin/bash
使用GPU版本的Docker镜像
docker run --name pphuman --runtime=nvidia -v $PWD:/mnt -p 8888:8888 -it registry.baidubce.com/paddleflow-public/paddledetection:2.4-gpu-cuda10.2-cudnn7 /bin/bash
升级Jupyter Notebook
pip3 install --upgrade ipykernel ipython
启动Jupyter Notebook服务
jupyter notebook --ip 0.0.0.0 --allow-root
初次使用Jupyter Notebook密码
不需要在登陆框中输入任何东西.
在服务器控制复制token输入到token框中,然后在下面的文本框中自己设定一个密码
启动Jupyter Notebook服务后,您就可以通过浏览器访问Docker容器内的Notebook服务啦。
场景一社区人员信息留存涉及模型:目标检测、属性识别
场景二人员摔倒涉及模型:目标检测、关键点检测、行为识别
其中,属性分析包含26种不同属性:
- 性别:男、女
- 年龄:小于18、18-60、大于60
- 朝向:朝前、朝后、侧面
- 配饰:眼镜、帽子、无
- 正面持物:是、否
- 包:双肩包、单肩包、手提包
- 上衣风格:带条纹、带logo、带格子、拼接风格
- 下装风格:带条纹、带图案
- 短袖上衣:是、否
- 长袖上衣:是、否
- 长外套:是、否
- 长裤:是、否
- 短裤:是、否
- 短裙&裙子:是、否
- 穿靴:是、否
行为识别目前仅支持摔倒,后续会补齐打架、抽烟、玩手机、睡觉等异常行为检测。
接下来,逐一下载上述模型。
#进入到 PaddleDetection 目录 /home/PaddleDetection
cd /home/PaddleDetection
#下载检测模型
wget https://bj.bcebos.com/v1/paddledet/models/pipeline/mot_ppyoloe_l_36e_pipeline.zip
#下载属性模型
wget https://bj.bcebos.com/v1/paddledet/models/pipeline/strongbaseline_r50_30e_pa100k.zip
#下载关键点模型
wget https://bj.bcebos.com/v1/paddledet/models/pipeline/dark_hrnet_w32_256x192.zip
#下载行为识别模型
wget https://bj.bcebos.com/v1/paddledet/models/pipeline/STGCN.zip
#解压至./output_inference文件夹
unzip -d output_inference mot_ppyoloe_l_36e_pipeline.zip
unzip -d output_inference strongbaseline_r50_30e_pa100k.zip
unzip -d output_inference dark_hrnet_w32_256x192.zip
unzip -d output_inference STGCN.zip
本案例提供了一些示例数据,用于测试模型效果,您也可以使用自己的数据来体验下。
# 切换目录到挂盘路径/mnt,下载示例数据包并解压
cd /mnt && wget https://paddleflow-public.hkg.bcebos.com/ppdet/pphuman.zip && unzip pphuman.zip
PP-Human相关配置位于deploy/pphuman/config/infer_cfg.yml
中,存放模型路径,完成不同功能需要设置不同的任务类型。 (完整的路径是: /home/PaddleDetection/deploy/pphuman/config/infer_cfg.yml
)
功能及任务类型对应表单如下:
输入类型 | 功能 | 任务类型 | 配置项 |
---|---|---|---|
图片 | 属性识别 | 目标检测 属性识别 | DET ATTR |
单镜头视频 | 属性识别 | 多目标跟踪 属性识别 | MOT ATTR |
单镜头视频 | 行为识别 | 多目标跟踪 关键点检测 行为识别 | MOT KPT ACTION |
本项目应用到的是:
- 社区人员信息留存:单镜头视频或图片输入的属性识别
- 摔倒检测:单镜头视频输入的摔倒识别
选取视频样本进行属性识别与摔倒检测。
模型预测参数选择分为两部分:
- 功能选择:将对应参数设置为True
- 属性识别:enable_attr
- 行为识别:enable_action
- 模型路径修改:设置对应任务(DET, MOT, ATTR, KPT, ACTION)的模型路径
- 例如 图片输入的属性识别:
--model_dir det=output_inference/mot_ppyoloe_l_36e_pipeline/ attr=output_inference/strongbaseline_r50_30e_pa100k/
支持开发者根据具体情况选择视频或单帧图片输入进行属性识别。
注意事项:
- video_file or image_dir后是输入视频or图片的路径,开发者可上传自己的数据集进行尝试
# 视频行人属性识别
python deploy/pphuman/pipeline.py \
--config deploy/pphuman/config/infer_cfg.yml \
--model_dir mot=output_inference/mot_ppyoloe_l_36e_pipeline/ attr=output_inference/strongbaseline_r50_30e_pa100k/ \
--video_file=/mnt/pphuman/attr.mp4 \
--enable_attr=True \
--device=cpu
# 图片行人属性识别
python deploy/pphuman/pipeline.py \
--config deploy/pphuman/config/infer_cfg.yml \
--model_dir det=output_inference/mot_ppyoloe_l_36e_pipeline/ attr=output_inference/strongbaseline_r50_30e_pa100k/ \
--image_dir=/mnt/pphuman/img \
--enable_attr=True \
--device=cpu
# 摔倒检测
python deploy/pphuman/pipeline.py \
--config deploy/pphuman/config/infer_cfg.yml \
--model_dir mot=output_inference/mot_ppyoloe_l_36e_pipeline/ kpt=output_inference/dark_hrnet_w32_256x192/ action=output_inference/STGCN \
--video_file=/mnt/pphuman/fall.mp4 \
--enable_action=True \
--device=cpu
飞桨目标检测开发套件PaddleDetection,内置190个主流目标检测、实例分割、跟踪、关键点检测算法,其中包括服务器端和移动端产业级SOTA模型、冠军方案和学术前沿算法,并提供配置化的网络模块组件、十余种数据增强策略和损失函数等高阶优化支持和多种部署方案,在打通数据处理、模型开发、训练、压缩、部署全流程的基础上,提供丰富的案例及教程,加速算法产业落地应用。
-
如果你发现任何PaddleDetection存在的问题或者是建议, 欢迎通过GitHub Issues给我们提issues。
-
欢迎加入PaddleDetection QQ、微信(添加并回复小助手“检测”)用户群