人工智能可以做点什么?唐山事件的视频AI识别检测项目 <附代码与动图> | 万物AI

本文主要是介绍人工智能可以做点什么?唐山事件的视频AI识别检测项目 <附代码与动图> | 万物AI,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 作者:韩信子@ShowMeAI
  • 声明:版权所有,转载请联系平台与作者并注明出处

在公众号 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种不同属性,具体如下:

- 性别:男、女
- 年龄:小于1818-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/STGCNbatch_size: 1max_frames: 2500display_frames: 2500coord_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研究中心 回复「唐山」,获取 项目代码 & 用于训练的视频 & 运行结果视频/动图。项目涉及知识点见文末推荐阅读

这篇关于人工智能可以做点什么?唐山事件的视频AI识别检测项目 <附代码与动图> | 万物AI的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/252813

相关文章

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决

《SpringBoot项目中报错ThefieldscreenShotexceedsitsmaximumpermittedsizeof1048576bytes.的问题及解决》这篇文章... 目录项目场景问题描述原因分析解决方案总结项目场景javascript提示:项目相关背景:项目场景:基于Spring

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

springboot项目如何开启https服务

《springboot项目如何开启https服务》:本文主要介绍springboot项目如何开启https服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录springboot项目开启https服务1. 生成SSL证书密钥库使用keytool生成自签名证书将

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指