人工智能可以做点什么?唐山事件的视频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

相关文章

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

C#如何动态创建Label,及动态label事件

《C#如何动态创建Label,及动态label事件》:本文主要介绍C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#如何动态创建Label,及动态label事件第一点:switch中的生成我们的label事件接着,

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.