监控摄像头覆盖场景范围越来越广泛,2020年全球安防摄像头出货量就高达3.75亿。而在摄像头监控场景中,通过人工24小时监控每个摄像头的方式不仅大量消耗人力,也会存在疏漏的情况,造成异常情况无法及时报警,导致难以挽回的损失。AI视觉技术的高速发展为安全防范提供了全新的解决方案,以模型替代人力,24小时360度的全方位监控下,还可实现毫秒级的精准识别与预警,用最低的成本带来最完善的安全保障。
在实际应用中,打架、摔倒、异常闯入等异常行为的发生率高、后果严重,使得其成为了安防领域中重点监控的场景。飞桨目标检测套件PaddleDetection中开源的行人分析工具PP-Human提供了五大异常行为识别、26种人体属性分析、人流计数、跨镜ReID四大产业级功能,其中异常行为识别功能覆盖了对摔倒、打架、打电话、抽烟、闯入等行为的检测。
项目链接
https://github.com/PaddlePaddle/PaddleDetection
在连续视频、密集人员和复杂环境的干扰下,为准确快速地识别监控画面中的打架行为带来巨大挑战,难点如下:
环境的复杂性:白天晚上、室内室外、拍摄角度、光线变化等对算法的泛化能力要求较高。
方案一:即开即用
使用一行代码快速预测
PP-Human工具为大家提供了快速上手部署模型实现推理的方案。针对打架识别任务,仅通过一条命令就可以判断预测视频中是否存在打架行为:
python deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_fight_recognition.yml \
--video_file=test_video.mp4 \
--device=gpu
方案二:定制开发
为不同场景需求提供个性化模型训练方法
技术选择
优化方案
目前视频分类模型发展迅速,综合考虑速度和精度,最终选取具有飞桨特色的PP-TSM模型来完成打架识别任务。PP-TSM模型应用了众多优化tricks,具体如下表:
数据集选择及调优
数据是模型的“食粮”,这里整理了开源的6个与打架相关的公开数据集,如表3所示。这些数据中有些是经过裁剪的视频片段,也有大段未裁剪的视频,有些视频是监控视角视频,有些则是非真实场景。为了能够更加客观地评估模型性能,验证集仅从真实场景视频中选取。
1.视频裁剪:对于未裁剪的视频,需要先进行裁剪才能用于模型训练;
2.视频抽帧:为了加快训练速度,将视频进行抽帧;
3.训练集和验证集划分:如8:2比例;
4.模型训练:加载与训练模型,修改配置文件中数据集路径、学习率等信息;
5.模型评估:在验证集上评估模型精度;
6.模型优化:分析badcase,对baseline进行优化;
7.模型导出:将训练好的模型导出为Inference模型。
打架识别训练与部署Pipeline
对于输入的视频,为了提高推理效率,按照事先指定的采样频率进行采样,当采样得到的视频帧达到一定数目后,输入到视频分类模型中判断是否存在打架行为。在T4机器上,开启TensorRT FP16的环境,端到端推理速度为19.7ms。如果需要将模型部署到端侧设备,可考虑更加轻量化的视频分类模型,或应用以MobileNet作为backbone的PP-TSM模型等。
为了让小伙伴们更便捷地实践和应用打架识别技术方案,飞桨开发者将于9月21日20:30为大家深度解析从数据准备、方案选型到模型优化部署的开发全流程,手把手教大家进行打架识别的代码实践。
欢迎小伙伴们扫码进群,免费获取直播课和回放视频链接,更有机会获得覆盖智慧城市、工业制造、金融、互联网等行业的飞桨产业实践范例手册!也欢迎感兴趣的企业和开发者与我们联系,交流技术探讨合作。
扫码报名直播课,加入技术交流群
关注【飞桨PaddlePaddle】公众号
获取更多技术内容~