基于轻量级卷积神经网络CNN开发构建打架斗殴识别分析系统

在很多公共场合中,因为一些不可控因素导致最终爆发打架斗殴或者大规则冲突事件的案例层出不穷,基于视频监控等技术手段智能自动化地识别出已有或者潜在的危险行为对于维护公共场合的安全稳定有着重要的意义。本文的核心目的就是想要基于CNN模型来尝试开发构建公众场景下的打架斗殴行为识别系统,这里我们从互联网中采集了相当批量的聚众数据,首先看下效果:
 

接下来看下数据集:

【有打架斗殴】

【无打架斗殴】

数据主要来源于互联网数据采集和后期的人工处理标注。

可以借助我编写的数据集随机划分函数,便捷地生成训练集-测试集,如下所示:

def randomSplit(dataDir="data/",train_ratio=0.80):"""数据集随机划分"""if not os.path.exists("labels.json") or not os.path.exists("dataset.json"):pic_list=[]labels_list = os.listdir(dataDir)labels_list.sort()print("labels_list: ", labels_list)with open("labels.json", "w") as f:f.write(json.dumps(labels_list))for one_label in os.listdir(dataDir):oneDir=dataDir+one_label+"/"one_list=[oneDir+one for one in os.listdir(oneDir)]pic_list+=one_listlength=len(pic_list)print("length: ", length)train_num=int(length*train_ratio)test_num=length-train_numprint("train_num: ", train_num, ", test_num: ", test_num)train_list=random.sample(pic_list, train_num)test_list=[one for one in pic_list if one not in train_list]dataset={}dataset["train"]=train_listdataset["test"]=test_listwith open("dataset.json","w") as f:f.write(json.dumps(dataset))else:print("Not Need To SplitData Again!!!!!")

接下来需要加载本地图像数据来解析创建可直接用于后续模型训练计算的数据集,核心实现如下所示:

def buildDataset():"""加载本地数据集创建数据集"""X_train, y_train = [], []X_test, y_test = [], []train_list=dataset["train"]test_list=dataset["test"]picDir = "data/train/"#训练集for one_path in train_list:try:print("one_path: ", one_path)one_img = parse4Img(one_path)one_y = parse4Label(one_pic_classes,labels_list)X_train.append(one_img)y_train.append(one_y)except Exception as e:print("train Exception: ", e)X_train = np.array(X_train)#测试集for one_path in test_list:try:print("one_path: ", one_path)one_img = parse4Img(one_path)one_y = parse4Label(one_pic_classes,labels_list)X_test.append(one_img)y_test.append(one_y)except Exception as e:print("test Exception: ", e)X_test = np.array(X_test)

完成数据集的解析构建之后就可以进行模型的开发训练工作了。

这部分可以参考我前面的博文的实现即可,这里就不再赘述了。本文中搭建的轻量级模型结构详情如下所示:

{"class_name": "Sequential","config": {"name": "sequential_1","layers": [{"class_name": "Conv2D","config": {"name": "conv2d_1","trainable": true,"batch_input_shape": [null, 100, 100, 3],"dtype": "float32","filters": 64,"kernel_size": [3, 3],"strides": [2, 2],"padding": "same","data_format": "channels_last","dilation_rate": [1, 1],"activation": "relu","use_bias": true,"kernel_initializer": {"class_name": "RandomUniform","config": {"minval": -0.05,"maxval": 0.05,"seed": null}},"bias_initializer": {"class_name": "Zeros","config": {}},"kernel_regularizer": null,"bias_regularizer": null,"activity_regularizer": null,"kernel_constraint": null,"bias_constraint": null}}, {"class_name": "MaxPooling2D","config": {"name": "max_pooling2d_1","trainable": true,"pool_size": [2, 2],"padding": "valid","strides": [2, 2],"data_format": "channels_last"}}, {"class_name": "Conv2D","config": {"name": "conv2d_2","trainable": true,"filters": 128,"kernel_size": [3, 3],"strides": [2, 2],"padding": "same","data_format": "channels_last","dilation_rate": [1, 1],"activation": "relu","use_bias": true,"kernel_initializer": {"class_name": "RandomUniform","config": {"minval": -0.05,"maxval": 0.05,"seed": null}},"bias_initializer": {"class_name": "Zeros","config": {}},"kernel_regularizer": null,"bias_regularizer": null,"activity_regularizer": null,"kernel_constraint": null,"bias_constraint": null}}, {"class_name": "MaxPooling2D","config": {"name": "max_pooling2d_2","trainable": true,"pool_size": [2, 2],"padding": "valid","strides": [2, 2],"data_format": "channels_last"}}, {"class_name": "Conv2D","config": {"name": "conv2d_3","trainable": true,"filters": 256,"kernel_size": [3, 3],"strides": [2, 2],"padding": "same","data_format": "channels_last","dilation_rate": [1, 1],"activation": "relu","use_bias": true,"kernel_initializer": {"class_name": "RandomUniform","config": {"minval": -0.05,"maxval": 0.05,"seed": null}},"bias_initializer": {"class_name": "Zeros","config": {}},"kernel_regularizer": null,"bias_regularizer": null,"activity_regularizer": null,"kernel_constraint": null,"bias_constraint": null}}, {"class_name": "MaxPooling2D","config": {"name": "max_pooling2d_3","trainable": true,"pool_size": [2, 2],"padding": "valid","strides": [2, 2],"data_format": "channels_last"}}, {"class_name": "Flatten","config": {"name": "flatten_1","trainable": true,"data_format": "channels_last"}}, {"class_name": "Dense","config": {"name": "dense_1","trainable": true,"units": 256,"activation": "relu","use_bias": true,"kernel_initializer": {"class_name": "VarianceScaling","config": {"scale": 1.0,"mode": "fan_avg","distribution": "uniform","seed": null}},"bias_initializer": {"class_name": "Zeros","config": {}},"kernel_regularizer": null,"bias_regularizer": null,"activity_regularizer": null,"kernel_constraint": null,"bias_constraint": null}}, {"class_name": "Dropout","config": {"name": "dropout_1","trainable": true,"rate": 0.1,"noise_shape": null,"seed": null}}, {"class_name": "Dense","config": {"name": "dense_2","trainable": true,"units": 512,"activation": "relu","use_bias": true,"kernel_initializer": {"class_name": "VarianceScaling","config": {"scale": 1.0,"mode": "fan_avg","distribution": "uniform","seed": null}},"bias_initializer": {"class_name": "Zeros","config": {}},"kernel_regularizer": null,"bias_regularizer": null,"activity_regularizer": null,"kernel_constraint": null,"bias_constraint": null}}, {"class_name": "Dropout","config": {"name": "dropout_2","trainable": true,"rate": 0.15,"noise_shape": null,"seed": null}}, {"class_name": "Dense","config": {"name": "dense_3","trainable": true,"units": 2,"activation": "softmax","use_bias": true,"kernel_initializer": {"class_name": "VarianceScaling","config": {"scale": 1.0,"mode": "fan_avg","distribution": "uniform","seed": null}},"bias_initializer": {"class_name": "Zeros","config": {}},"kernel_regularizer": null,"bias_regularizer": null,"activity_regularizer": null,"kernel_constraint": null,"bias_constraint": null}}]},"keras_version": "2.2.4","backend": "tensorflow"
}

默认200次epoch的迭代计算,训练完成后,对loss曲线和acc曲线进行了对比可视化展示,如下所示:

【loss对比曲线】

【acc对比曲线】

可以看到:模型的效果还是很不错的。

最后编写专用的可视化系统界面,进行实例化推理展示,实例结果如下所示:

后续的工作考虑结合视频连续帧的特点来进一步提升打架斗殴行为的识别精度,感兴趣的话也都可以自行尝试实践一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/187819.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI:74-基于深度学习的宠物品种识别

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…

视频编软件会声会影2024中文版功能介绍

会声会影2024中文版是一款加拿大公司Corel发布的视频编软件。会声会影2024官方版支持视频合并、剪辑、屏幕录制、光盘制作、添加特效、字幕和配音等功能,用户可以快速上手。会声会影2024软件还包含了视频教学以及模板素材,让用户剪辑视频更加的轻松。 会…

LeetCode(2)移除元素【数组/字符串】【简单】

目录 1.题目2.答案3.提交结果截图 链接: 27. 移除元素 1.题目 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原…

赛宁网安入选国家工业信息安全漏洞库(CICSVD)2023年度技术组成员单

近日,由国家工业信息安全发展研究中心、工业信息安全产业发展联盟主办的“2023工业信息安全大会”在北京成功举行。 会上,国家工业信息安全发展研究中心对为国家工业信息安全漏洞库(CICSVD)提供技术支持的单位授牌表彰。北京赛宁…

安装dubbo-admin报错node版本和test错误

✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :dubbo-admin安装 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台&#xff0…

一文入门Springboot+actuator+Prometheus+Grafana

环境介绍 技术栈 springbootmybatis-plusmysqloracleactuatorPrometheusGrafana 软件 版本 mysql 8 IDEA IntelliJ IDEA 2022.2.1 JDK 1.8 Spring Boot 2.7.13 mybatis-plus 3.5.3.2 本地主机应用 192.168.1.9:8007 PrometheusGrafana安装在同一台主机 http://…

【Spring之底层核心架构概念解析】

文章目录 一、BeanDefinition二、BeanDefinitionReader2.1、AnnotatedBeanDefinitionReader2.2、XmlBeanDefinitionReader 五、ClassPathBeanDefinitionScanner六、BeanFactory七、ApplicationContext7.1、AnnotationConfigApplicationContext7.2、ClassPathXmlApplicationCont…

Zeitgeist ZTG Token以及其预测市场加入Moonbeam生态

波卡上的首选多链开发平台Moonbeam宣布与Zeitgeist达成XCM集成,将ZTG Token引入Moonbeam。此集成将使波卡内的Moonbeam和Zeitgeist网络之间的流动性得以流动,并通过Moonbeam的互连合约实现远程链集成。 Zeitgeist是一个基于波卡的Substrate区块链框架构…

数据结构:AVL树的旋转(高度平衡树)

1、AVL树简介 AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡树。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者G. M. Adelson-Velsky和E. M. Landis,他们…

Vuex:模块化Module :VCA模式

VCA中不支持辅助函数,因为辅助函数中是用this.$store,而VCA中没有绑定this的 由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。 这句话的意思是,…

初识Linux:目录路径

目录 提示:以下指令均在Xshell 7 中进行 一、基本指令: 二、文件 文件内容文件属性 三、ls 指令拓展 1、 ls -l : 2、ls -la: 3、ls [目录名] : 4、ls -ld [目录名]: 四、Linux中的文件和…

SpringBoot 使用EasyExcel 导出Excel报表(单元格合并)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、导入依赖二、代码1. 导出简单的Excel2. 代码控制导出报表的格式 总结 前言 SpringBoot 使用Alibaba提供的EasyExcel导出Excel报表。 本文中涉及的业务逻辑…

asp.net校园招聘管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net 校园招聘管理系统是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语言开发 应用技术:asp.net c#s…

IP行业API助力于网络分析和数据挖掘

引言 在当今数字化时代,数据成为了企业、科研机构和政府决策者的重要资源,而IP行业API则成为了数据分析及挖掘的工具之一。IP行业API是一种能够查询IP地址所属的行业分类信息的应用程序接口,它能够提供在网络分析、用户行为分析及大数据挖掘…

LeetCode 面试题 16.20. T9键盘

文章目录 一、题目二、C# 题解 一、题目 在老式手机上,用户通过数字键盘输入,手机将提供与这些数字相匹配的单词列表。每个数字映射到0至4个字母。给定一个数字序列,实现一个算法来返回匹配单词的列表。你会得到一张含有有效单词的列表。映射…

农业大棚智能化改造升级与远程视频监管方案,助力智慧农业建设发展

一、需求分析 随着现代化技术的发展,农业大棚的智慧化也成为当前备受关注的智慧农业发展手段。利用先进的信息化手段来对农业大棚进行管理,采集和掌握作物的生长状况、作业监督、生态环境等信息数据,实现精准操作、精细管理,远程…

美格智能5G RedCap模组顺利完成中国联通5G物联网OPENLAB开放实验室认证

近日,美格智能5G RedCap模组SRM813Q顺利通过中国联通5G物联网OPENLAB开放实验室端到端的测试验收,并获得OPENLAB实验室的认证证书。这标志着该模组产品各项性能均已符合RedCap商用标准,为5G RedCap规模商用奠定了坚实基础。 中国联通5G物联网…

Kubernetes平台部署Grafana Loki Promtail系统

部署结构图: Loki 是主服务,负责存储日志和处理查询promtail 是代理,负责收集日志并将其发送给 lokiGrafana 用于 UI 展示 只要在应用程序服务器上安装promtail来收集日志然后发送给Loki存储,就可以在Grafana UI界面通过添加Lok…

Python基础教程:类--继承和方法的重写

嗨喽,大家好呀~这里是爱看美女的茜茜呐 什么是继承 继承就是让类与类之间产生父子关系,子类可以拥有父类的静态属性和方法 继承就是可以获取到另一个类中的静态属性和普通方法(并非所有成员) 在python中,新建的类可…

导轨式安装压力应变桥信号处理差分信号输入转换变送器0-10mV/0-20mV/0-±10mV/0-±20mV转0-5V/0-10V/4-20mA

主要特性 DIN11 IPO 压力应变桥信号处理系列隔离放大器是一种将差分输入信号隔离放大、转换成按比例输出的直流信号导轨安装变送模块。产品广泛应用在电力、远程监控、仪器仪表、医疗设备、工业自控等行业。此系列模块内部嵌入了一个高效微功率的电源,向输入端和输…