2021-基于卷积和LSTM神经网络的视频分类时间融合方法在暴力检测中的应用

本文主要是介绍2021-基于卷积和LSTM神经网络的视频分类时间融合方法在暴力检测中的应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

A Temporal Fusion Approach for Video Classification with Convolutional and LSTM Neural Networks Applied to Violence Detection

通过读该文章,想起之前复现的一个代码,与本文不同的是,代码采用帧率从视频片段中截取图片,视频的帧率都是25,也就是1s提取25张图片,这样会有很多重复帧,本文采用的是1s提取2帧,代码采用的是文章中提到的早期融合(Early Fusion),把40帧串联起来送入模型中提取空间特征,这样会影响之后LSTM层提取时间特征,本文采用的是慢融合,也就是10帧分别放入CNN模型中提取空间特征后,再放入LSTM层中提取时间特征。本文对提取空间特征的模型也进行了测试,结果表明MobileN模型性能更好一些,代码采用的是ResNet152模型。接下来想尝试改一下之前复现的代码。

作者采用的数据集为RealLife violence detection,由2000个平均时长为5s的片段组成,分为暴力和非暴力。作者认为单独分析这些帧从静态图像检测暴力行为是困难的,但是当按顺序分析这些帧时,区分每一类的特征就容易一些,因此作者使用了深度学习分析帧。
作者使用了交叉验证技术,K=10,意味着数据被分为10个相等的部分,其中一部分当做验证集,其他部分用作训练集,重复10次,也就是说每个部分都要用来当做验证集一次。

时间融合方法

Late Fusion:使用每个例子的第一帧和最后一帧,由模型单独处理,该技术通过对帧间时间距离最长的帧特征进行处理,即划分场景的序列和结尾,称为延迟融合。
在这里插入图片描述
Early Fusion:使用每个例子的连续帧进行处理,数据的合并发生在被处理之前。
在这里插入图片描述
Slow Fusion:通过模型分别处理每个帧,然后以相关方式处理模型,由于经过一定的处理后,多个帧之间有了时间关联而被称为慢融合。
在这里插入图片描述
这些方法只适用于帧数不多的情况,作者使用每秒2帧,每个视频也就是10帧。如果帧的持续时间与平均持续时间不同,则将它们从与时间相关的的等距帧中移除。

将输入属性传递到卷积层,进行帧的空间特征提取,接着传到LSTM层提取时间特征,最后利用感知器神经元的前馈层分类。如下图
在这里插入图片描述

神经网络结构

在这里插入图片描述
在这里插入图片描述

实验

late fusion:VGG16模型性能最好
在这里插入图片描述
Early Fusion:10帧串联起来给模型,因为串联是在CNN提取空间特征之前进行的,所以在LSTM层提取时间特征会有一定的损失。MobileNet为最佳模型
在这里插入图片描述
slow fusion:慢融合呈现最大数量的单个空间特征提取,有助于LSTM层从卷积块的输入数据中提取时间特征。MobileNet性能最好。
在这里插入图片描述

这篇关于2021-基于卷积和LSTM神经网络的视频分类时间融合方法在暴力检测中的应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired