网站首页 > 技术文章 正文
深度学习视频理解(分类识别)算法梳理
视频理解是计算机视觉中重要的研究,之前一直都在做图像相关的工作,没有了解过视频相关的算法,这里梳理一下视频理解相关的算法综述逻辑。
一、动作分类相关数据集
- 「HMDB-51」,数据集地址:https://serre-lab.clps.brown.edu/resource/hmdb-a-large-human-motion-database/#introduction 数据集包有6849个视频片段,共有51个动作类别,每个类别至少有101个视频片段
- 「UCF-101」 数据集地址:https://www.crcv.ucf.edu/research/data-sets/ucf101/ 数据集包含13320个视频片段,101个类别。
- 「Kinetics」 数据集地址:https://deepmind.com/research/open-source/kinetics Kinetics数据集分为Kinetics-400,Kinetics-600,Kinetics-700分别包含400,600,700个类别,训练集分别包含24.6万、39万、54万个视频片段。
- 「YouTube-8M」 数据集地址:https://research.google.com/youtube8m/ 数据集规模更大,视频片段达到数百万。
二、动作分类识别算法
1. 最直观的解决方案
从基于卷积神经网络的图像算法引申出来,最直观的解决方案是,针对每个视频帧,利用卷积神经网络提取其每个视频帧图像的特征,将这个视频所有帧的特征向量取平均得到整个视频的特征向量,然后进行分类识别。
这种最直观的方案太简单,直接对所有帧特征取平均太粗暴,很难实现较好的效果,需要较为复杂的特征融合策略。此时「VLAD与NetVLAD」应运而出。
2. VLAD
VLAD(vector of local aggregated descriptors)是一种新的特征融合策略,首先对一个视频的各个帧特征进行聚类得到多个聚类中心,将所有的特征分配到指定的聚类中心中,对于每个聚类区域中的特征向量取平均,最终concat所有的聚类区域的特征向量作为整个视频的特征向量。
上边最直观的解决方案相当于把所有帧的特征向量聚类到一个中心点,而VLAD将所有帧的特征向量聚类到多个中心点,通过所有特征向量的堆叠,能够获得更加丰富的特征,丢失更少的信息。
「NetVLAD」是利用神经网络实现VLAD。这里的聚类中心通过网络学习得到。
「上边的两种方案均没有考虑视频帧之间的时序关系。」
3. 视频时序信息利用
- 「RNN(GRU或者LSTM)来融合多帧图像特征向量」,充分使用视频的时序信息。
- 「3D卷积也是一种利用视频时序信息的方案」,利用3D卷积在视频帧时间步方向的处理来解决这个问题。
- 「双流法」,利用光流捕捉视频帧之间的运动关系利用视频帧之间的时序关系。
双流法基本方案就是两个网络分支,一个为「图像分支」提取视频帧的特征向量,另一个为「光流分支」,利用多帧之间的光流图提取光流特征,利用图像分支与光流分支特征向量的融合进行分类预测。
?
虽然视频的帧率很高,但是视频中的内容变化相对较慢,临近的视频帧信息存在大量的冗余。如何能更加高效的从视频中采样图像帧也是非常重要的。
?
4. 图像帧的采样
「TSN(temporal segment network,时序分段网络)」,将一个视频分为多个小段,每段均匀的采集一帧图像与多帧光流,之后利用双流法,每视频小段获取图像分支与光流分支的特征后,融合所有的特征作为整个视频的特征向量进行处理。tsn对于不同段之间的特征向量直接进行平均融合处理,没有充分利用多帧之间的时序关系。
?
上边介绍的都是基于2D神经网络的算法,利用2D卷积神经网络提取图像帧的特征或者光流图像特征之后,利用VLAD、RNN或者3D卷积进行特征融合。
也可以直接利用3D卷积来做。
?
5. 3D卷积
5.1「C3D与Res3D」
最基础的网络,直接使用3D卷积构建网络,「C3D」(3D版本的VGG算法),随后还有3D版本的resnet:「Res3D」。
?
这两种算法,时间步长都比较短。
?
**LTC(长距离时序卷积)**将输入视频帧数增加,实验发现60帧58x58的输入与16帧112x112的输入计算量差不多,但精度更好。
?
3D卷积相比较2D卷积参数量大幅度的增加,训练困难。「如何能够有效降低模型参数量呢?」
?
5.2「低秩近似」
利用3D卷积的低秩近似实现参数量的减少。
对于2D卷积 7x7的核,可以用1x7与7x1近似替代。
同样3D卷积,3x3x3的核可以用 1x3x3与3x1x1近似替代。
利用这种低秩近似的算法:「FSTCN(空间-时间分解卷积网络)、P3D(Pseudo-3D)、R(2+1)D、S3D」。
5.3「non-local」
3D卷积虽然可以提取视频帧之间的时序信息,针对TSN这种分段的网络,3D卷积仅能提取到每个视频片段中的时序信息,因此在提取得到每个视频片段特征之后,利用LSTM融合多个视频片段,全局视频的时序信息得到利用。
「nonlocal」,卷积层的输出仅仅与一部分的输入相链接,都是局部的操作,需要堆叠多层才能达到全局的效果,这样参数量大。采用non-local的操作,类似于全连接层计算所有向量之间的相似性,但是这里的参数不是学习出来的而使一些特定的函数。
5.4「slowFast」
3x3x3的3D卷积实际上是同等看待了时间与空间维度。这里slowfast采用两个分支,分别对于时间与空间维度进行处理。
slow分支用比较少的帧数T,较大的通道数D,更加关注空间信息。
fast分支采用比较多的帧数T,较小的通道数D,更加关注时间维度的信息。
「多网格方法设计超参数」
当输入尺寸HW比较小的时候,训练准确率较低,但是可以使用更大的batch,可以更快的过完一轮数据。
当HW比较大的时候,训练准确率较高,更小的batch。
因此,在训练早期可以使用大B,后期使用小B。
也可以周期性的变化。
?
主要学习张皓老师的《深度学习视频理解》一书,所作出的总结。
接下来将集中看看其中几个经典算法的论文和代码。
?
?
原文首发于「小哲AI」公众号,公众号主要分享人工智能前沿算法解读,AI项目代码解析,以及编程、互联网求职等技术资料文章,偶尔也会分享个人读书笔记、工作学习心得,欢迎关注,一起学习。
?
猜你喜欢
- 2024-10-12 一文了解人工智能该如何入门 学人工智能的步骤
- 2024-10-12 微信公众号文章质量评分算法详解 公众号文章质量怎么提高
- 2024-10-12 「网易云音乐」歌单推荐算法:技术同学体验反推
- 2024-10-12 深度神经网络GRU模型实战:教你两小时打造随身AI翻译官
- 2024-10-12 基于GWO灰狼优化的CNN-GRU-Attention
- 2024-10-12 基于PSO优化的CNN-GRU-Attention的时间序列
- 2024-10-12 时域卷积网络TCN详解:使用卷积进行序列建模和预测
- 2024-10-12 计算机,通信,算法 通信算法和计算机算法
- 2024-10-12 基于GA优化的CNN-GRU-Attention的时间序列
- 2024-10-12 基于PSO粒子群优化的CNN-GRU的时间序列回归预测
你 发表评论:
欢迎- 最近发表
-
- 在 Spring Boot 项目中使用 activiti
- 开箱即用-activiti流程引擎(active 流程引擎)
- 在springBoot项目中整合使用activiti
- activiti中的网关是干什么的?(activiti包含网关)
- SpringBoot集成工作流Activiti(完整源码和配套文档)
- Activiti工作流介绍及使用(activiti工作流会签)
- SpringBoot集成工作流Activiti(实际项目演示)
- activiti工作流引擎(activiti工作流引擎怎么用)
- 工作流Activiti初体验及在数据库中生成的表
- Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)