在公众号 ShowMeAI研究中心 回复「唐山」,获取 项目代码 & 用于训练的视频 & 运行结果视频/动图。项目涉及知识点见文末推荐阅读。
6月10日凌晨,河北唐山一烧烤店,发生多名男子殴打他人的刑事案件。唐山事件及后续网络实名举报案件,引发了全网的关注与热议,相关话题登上各大网站热搜榜。据报道,唐山市开展为期半个月的夏季社会治安整治「雷霆风暴」专项行动,全面整治社会治安领域突出问题。
安全感来自于对一个个具体案件的处置。希望当地司法机构持续发力,让敢于以身试法者受到严惩,让包括女性在内的广大群众感受到公平正义,对社会安全度有着更强的信赖感。我们也借这个机会讨论下,在推进社会安全的过程中,人工智能技术有哪些应用场景,可以做出怎样的贡献。
社区安全与智能化管理
社区是城市的关键组成部分,社区治理是围绕社区场景下的人、地、物、情、事的管理与服务。社区安全与智慧城市是大家一直在提的主题。让我们回到技术层面,AI能否在其中发挥作用?形如「唐山事件」的危害行为,是否可以第一时间被AI识别到并进行响应呢?
可以。使用摄像头记录下来的信息,AI与计算机视觉自动化可以快速响应并发挥作用。
事实上,随着城市化的快速推进及人口流动的快速增加,传统社区治理在人员出入管控、安防巡逻、车辆停放管理等典型场景下都面临着人力不足、效率低下、响应不及时等诸多难题。而人工智能技术代替人力,实现人、车、事的精准治理,大幅降低人力、物质、时间等成本,以最低成本发挥最强大的管理效能,有效推动城市治理向更「数字化、自动化、智慧化」的方向演进。
我们下面借助于百度 paddlepaddle 针对智慧社区的实时行人分析工具 PP-Human 做一个介绍,底层的深度学习算法,基于行人检测与跟踪技术,实现26种人体属性分析以及摔倒等异常行为识别,可以在未来这样的类似场景下发挥作用,提供多一份保障。
部分社区智能化应用效果
1)社区人员信息识别
传统社区视频监控80%都依靠人工实现,随着摄像头在社区中的大规模普及,日超千兆的视频图像数据、人员信息的日渐繁杂已远超人工的负荷。
深度学习算法中的人体跟踪和属性识别功能可以实现社区视频监控的结构化理解,实时识别进出小区的人员的性别、年龄、衣着打扮等多种属性并记录其运动轨迹,应用AI 算法代替人力进行社区管理,具备更高的效率、及时性和更好的准确度,针对出入口管理、快速寻人、轨迹分析等都可以快速响应。
下图为上海天覆科技的街道人员属性识别应用案例:
2)行为及异常行为检测
社区的安全防护是重中之重,我们希望AI可以高效保障社区居民人身安全。传统的方法主要依靠人工视频监控,配以人力巡逻,有时会有异常情况响应不及时的问题,对人力消耗也非常大,比如这次的「唐山事件」。
如果应用 关键点+时空图卷积网络 ****的技术,可以很快地对伤者摔倒及打架暴力事件进行检测,加快报警与救援,提升社区安防系统智能化。
如下为办公区域摔倒检测的示例:
手把手AI代码:社区智能化组件应用于「唐山事件」
下面应用jupyter notebook对本次「唐山事件」的视频进行AI识别检测。
1)环境配置
我们借助于百度paddlepaddle针智慧社区的实时行人分析工具 PP-Human完成后续检测功能,如下为 PP-Human 的技术全景图。
本次应用依赖百度 PaddleDetection 工具库,要求版本 >= release/2.4,我们在 jupyter notebook 中新建一个cell,并克隆 PaddleDetection 仓库到本地。
# 克隆PaddleDetection仓库到本地
!git clone https://github.com/PaddlePaddle/PaddleDetection.git
下面我们切换到 PaddleDetection 目录下(注意在 jupyter notebook 中通过%cd魔法命令完成路径切换),并根据 requirements.txt 中的要求去安装依赖的工具库,具体的操作代码如下:
# 安装其他依赖
%cd PaddleDetection
!pip install -r requirements.txt
依赖安装完成后我们编译安装 PaddleDetection,命令如下
# 编译安装paddledet
!python setup.py install
2)预训练模型下载
我们在社区智能化场景下,不同的任务其实由不同的计算机视觉底层应用支撑,比如社区人员信息留存涉及「目标检测」和「属性识别」等视觉任务应用;摔倒及异常(暴力打架等)识别涉及「目标检测」、「关键点检测」、「行为识别」等视觉任务应用。
这些任务应用已经有成型的预训练模型可以直接下载和加载应用(当然我们也可以在自己的社区场景下采集更匹配的真实数据,标注后对预训练模型进行调优),我们在这里直接下载可用的预训练模型。
其中,模型能进行的属性分析包含26种不同属性,具体如下:
- 性别:男、女
- 年龄:小于18、18-60、大于60
- 朝向:朝前、朝后、侧面
- 配饰:眼镜、帽子、无
- 正面持物:是、否
- 包:双肩包、单肩包、手提包
- 上衣风格:带条纹、带logo、带格子、拼接风格
- 下装风格:带条纹、带图案
- 短袖上衣:是、否
- 长袖上衣:是、否
- 长外套:是、否
- 长裤:是、否
- 短裤:是、否
- 短裙&裙子:是、否
- 穿靴:是、否
行为识别主要支持摔倒检测,也对打架、抽烟、玩手机、睡觉等行为进行了检测。
下载预训练模型的代码如下(注意请在 jupyter notebook 的 cell 中运行):
#下载目标检测模型
!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文件夹
#解压至./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
3)配置文件说明
此次应用的paddle应用,相关配置位于deploy/pphuman/config/infer_cfg.yml
文件中。
对应的任务类型和功能如下表所示:
输入类型 | 功能 | 任务类型 | 配置项 |
---|---|---|---|
图片 | 属性识别 | 目标检测 属性识别 | DET ATTR |
单镜头视频 | 属性识别 | 多目标跟踪 属性识别 | MOT ATTR |
单镜头视频 | 行为识别 | 多目标跟踪 关键点检测 行为识别 | MOT KPT ACTION |
我们本次应用,主要包含下述功能:
- 社区人员信息留存:单镜头视频的属性识别
- 摔倒及异常动作检测:单镜头视频输入的摔倒/动作识别
大家可以根据视频长短调整部分参数,比如动作识别中可以将 deploy/pphuman/config/infer_cfg.yml 文件中的 max_frames 和 display_frames 修改如下:
ACTION:
model_dir: output_inference/STGCN
batch_size: 1
max_frames: 2500
display_frames: 2500
coord_size: [384, 512]
4)模型运行与预测
模型预测参数选择分为两部分:
- 功能选择:将对应参数设置为 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/
社区人员信息识别
如下运行代码,其中「唐山.mp4」为事件片段视频,可以在公众号 ShowMeAI研究中心 回复「唐山」获取 网盘地址。
#视频行人属性识别
!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=../唐山.mp4 \
--enable_attr=True \
--device=gpu
截取的识别结果可视化如下所示:
摔倒与异常行为检测
如下运行代码,其中「tangshan.mp4」为事件片段视频,可以在公众号 ShowMeAI研究中心 回复「唐山」获取 网盘地址。
#摔倒与异常行为检测识别
!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=/home/aistudio/tangshan.mp4 \
--enable_action=True \
--device=cpu
推荐阅读
关于社区安全检测涉及的视觉模型算法知识,请关注ShowMeAI的后续文章,我们将展开讲解。也推荐大家学习ShowMeAI精心创作的系列教程。
图解机器学习算法:从入门到精通系列教程
链接:http://www.showmeai.tech/tutorials/34
机器学习实战:手把手教你玩转机器学习系列
链接:http://www.showmeai.tech/tutorials/41
深度学习教程:吴恩达专项课程 · 全套笔记解读
链接:http://www.showmeai.tech/tutorials/35
自然语言处理教程:斯坦福CS224n课程 · 课程带学与全套笔记解读
链接:http://www.showmeai.tech/tutorials/36
深度学习与计算机视觉教程:斯坦福CS231n · 全套笔记解读
链接:http://www.showmeai.tech/tutorials/37
在公众号 ShowMeAI研究中心 回复「唐山」,获取 项目代码 & 用于训练的视频 & 运行结果视频/动图。项目涉及知识点见文末推荐阅读。