\u200E
智慧安防异常行为系列之毫秒级精准打架识别,PP-Human实现360度安全保障
发布日期:2022-09-22T03:09:21.000+0000 浏览量:42次

监控摄像头覆盖场景范围越来越广泛,2020年全球安防摄像头出货量就高达3.75亿。而在摄像头监控场景中,通过人工24小时监控每个摄像头的方式不仅大量消耗人力,也会存在疏漏的情况,造成异常情况无法及时报警,导致难以挽回的损失。AI视觉技术的高速发展为安全防范提供了全新的解决方案以模型替代人力,24小时360度的全方位监控下,还可实现毫秒级的精准识别与预警,用最低的成本带来最完善的安全保障

在实际应用中,打架、摔倒、异常闯入等异常行为的发生率高、后果严重,使得其成为了安防领域中重点监控的场景。飞桨目标检测套件PaddleDetection中开源的行人分析工具PP-Human提供了五大异常行为识别、26种人体属性分析、人流计数、跨镜ReID四大产业级功能,其中异常行为识别功能覆盖了对摔倒、打架、打电话、抽烟、闯入等行为的检测。

本次将选择打架这一类典型的异常行为,全流程示范如何利用PP-Human以AI视觉的方式实现监控预警。
PP-Human链接
https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.5/deploy/pipeline
本范例提供两种使用方案
  • 方案一 即开即用,使用一行代码快速预测
    基于PP-Human工具,直接利用开源的打架识别模型进行快速推理;
  • 方案二 定制开发,为不同场景需求提供个性化模型训练方法。基于PaddleVideo套件,用自己的数据进行迁移学习或扩展新行为的识别。

项目链接

https://github.com/PaddlePaddle/PaddleDetection

所有源码及教程均已开源欢迎大家使用,star鼓励

在连续视频、密集人员和复杂环境的干扰下,为准确快速地识别监控画面中的打架行为带来巨大挑战,难点如下:

  • 行为的动态性 :打架是一种连续性动作,需要依赖时序信息;     
  • 人员的密集性 :在诸如火车站、商场等公共区域,人员较密集,增加了识别难度;    
  • 环境的复杂性:白天晚上、室内室外、拍摄角度、光线变化等对算法的泛化能力要求较高。




方案一:即开即用

使用一行代码快速预测

PP-Human工具为大家提供了快速上手部署模型实现推理的方案。针对打架识别任务,仅通过一条命令就可以判断预测视频中是否存在打架行为:

python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_fight_recognition.yml \
--video_file=test_video.mp4 \
--device=gpu
其中: config 模型推理相关配置,包括推理模型路径,默认自动从网络上下载,用户也可手动指定; video_file :推理视频路径; device :推理设备。
PP-Human 全功能快速体验
https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.5/deploy/pipeline/docs/tutorials/PPHuman_QUICK_STARTED.md



方案二:定制开发

为不同场景需求提供个性化模型训练方法


  • 技术选择

对于行为识别,有众多的解决方案。下表展示了常用技术方案的优劣势和适用的场景。针对本案例的打架行为识别,需要依赖时序信息,且存在人员密集场景,受监控摄像头角度距离等影响,画面中人有大有小,监控画面背景复杂多变。综合上述因素,最终选择基于视频分类的解决方案完成打架识别功能。

  • 优化方案

目前视频分类模型发展迅速,综合考虑速度和精度,最终选取具有飞桨特色的PP-TSM模型来完成打架识别任务。PP-TSM模型应用了众多优化tricks,具体如下表:

技术选型完整文档
https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.5/docs/advanced_tutorials/customization/action_recognotion/README.md
  • 数据集选择及调优

数据是模型的“食粮”,这里整理了开源的6个与打架相关的公开数据集,如表3所示。这些数据中有些是经过裁剪的视频片段,也有大段未裁剪的视频,有些视频是监控视角视频,有些则是非真实场景。为了能够更加客观地评估模型性能,验证集仅从真实场景视频中选取。

本案例借助PaddleVideo视频开发套件完成打架识别模型的训练和优化。具体研发流程如下:

1.视频裁剪:对于未裁剪的视频,需要先进行裁剪才能用于模型训练;
2.视频抽帧:为了加快训练速度,将视频进行抽帧;
3.训练集和验证集划分:如8:2比例;
4.模型训练:加载与训练模型,修改配置文件中数据集路径、学习率等信息;
5.模型评估:在验证集上评估模型精度;
6.模型优化:分析badcase,对baseline进行优化;
7.模型导出:将训练好的模型导出为Inference模型。

Baseline模型最终的分类精度为87.53%。考虑到训练数据有限,为了提升模型泛化能力,采用数据增强的方式扩充数据,本方案采用VideoMix数据增强方法,模型精度提升至88.01%。由于监控摄像头角度距离问题,为了识别小目标行为,增大输入图像的分辨率,模型精度从88.01%提升至89.06%。
  • 打架识别训练与部署Pipeline

模型训练好之后,在服务端进行部署应用。具体应用流程如下:

对于输入的视频,为了提高推理效率,按照事先指定的采样频率进行采样,当采样得到的视频帧达到一定数目后,输入到视频分类模型中判断是否存在打架行为。在T4机器上,开启TensorRT FP16的环境,端到端推理速度为19.7ms。如果需要将模型部署到端侧设备,可考虑更加轻量化的视频分类模型,或应用以MobileNet作为backbone的PP-TSM模型等。



精彩课程预告


为了让小伙伴们更便捷地实践和应用打架识别技术方案,飞桨开发者将于9月21日20:30为大家深度解析从数据准备、方案选型到模型优化部署的开发全流程,手把手教大家进行打架识别的代码实践。

欢迎小伙伴们扫码进群,免费获取直播课和回放视频链接,更有机会获得覆盖智慧城市、工业制造、金融、互联网等行业的飞桨产业实践范例手册!也欢迎感兴趣的企业和开发者与我们联系,交流技术探讨合作。

扫码报名直播课,加入技术交流群



关注【飞桨PaddlePaddle】公众号

获取更多技术内容~