Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset

2024-02-06 10:40

本文主要是介绍Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Abstract

  • 当前动作分类数据集(UCF-101和HMDB-51)中视频的匮乏,使得很难确定好的视频架构,因为大多数方法在现有的小规模基准测试中都获得了类似的性能。本文根据新的Kinetics Human Action Video数据集重新评估了最先进的体系结构。Kinetics的数据量增加了两个数量级,其中包括400个人类动作课程,每个课程超过400个剪辑,它们是从逼真的,具有挑战性的YouTube视频中收集的。 我们提供了有关当前体系结构如何在此数据集上进行动作分类任务的分析,以及对Kinetics进行预训练后,在较小的基准数据集上可以提高多少性能的分析。
  • 我们还介绍了一种新的基于2d convnet的双流式3d convnet(i3d):将非常深的图像分类convnet的过滤器和池核扩展为3d。使我们能够从视频中学习无缝的时空特征提取器,同时利用成功的imagenet架构设计甚至它们的参数。我们表明,经过动力学方面的预培训后,I3D模型大大改进了最新的动作分类,在hmdb-51上达到80.7%,在ucf-101上达到98.0%。

Introduction

  • ImageNet挑战的意外收益之一是发现在1000种类别的1000种图像上训练的深度架构可以用于其他任务和其他领域。 早期的例子之一是使用ImageNet上训练的网络中的fc7功能来应对PASCAL VOC分类和检测挑战[10]。 更进一步,从AlexNet到VGG-16的深度架构的改进,立即得以通过,以相应地提高PASCAL VOC性能[23]。从那时起,已有无数受ImageNet训练的体系结构示例可以热启动或完全满足其他任务的需要,例如, 分割,深度预测,姿势估计,动作分类。
  • 在视频领域,当在足够大的数据集上训练动作分类网络时,将其应用于不同的时间任务或数据集是否会带来类似的性能提升,这是一个悬而未决的问题。 建立视频数据集所面临的挑战意味着,最流行的动作识别基准很小,大约有1万个视频。在本文中,我们旨在使用新的动力学人类动作视频数据集[16]为该问题提供答案,该数据集比以前的数据集HMDB-51 [18]和UCF-101 [27]大两个数量级。 Kinetics提供了400个人类动作课程,每个课程都有400多个示例,每个示例均来自一个独特的YouTube视频。
  • 我们的实验策略是从文献中重新实现许多具有代表性的神经网络体系结构,然后通过先对动力学进行预训练,然后对HMDB-51和UCF-101进行微调来分析它们的传递行为。 结果表明,通过预训练始终可以提高性能,但是提高的程度随体系结构的类型而显着变化。 基于这些发现,我们引入了一种新模型,该模型具有利用动力学上的预训练的能力,并可以实现高性能。 被称为“两流融合3D ConvNets”(I3D)的模型建立在最新的图像分类架构之上,但将其过滤器和内核(以及可选参数)汇集到3D中,从而自然而然地产生了非常深的深度。 时空分类器。 在对动力学进行预训练后,基于Inceptionv1 [13]的I3D模型获得的性能远远超过了现有技术。
  • 在我们的模型比较中,我们没有考虑更经典的方法,例如视觉词袋表示[6,19,21,30]。 但是,动力学数据集是公开可用的,因此其他人可以将其用于此类比较。

Action Classification Architectures

  • 尽管近年来图像表示架构的发展迅速成熟,但仍然没有清晰的视频前端架构。 当前视频体系结构的一些主要区别是卷积和层运算符是使用2D(基于图像)还是3D(基于视频)内核。 网络输入是仅RGB视频还是还包含预先计算的光纤; 以及在2DConvNets情况下,如何跨帧传播信息,这可以使用LSTM等临时循环层或随时间推移进行特征聚合来完成。
  • 在本文中,我们比较并研究了跨越此空间大部分模型的子集。 在2D ConvNet方法中,我们考虑在顶部使用LSTM的ConvNet [5,34],以及具有两种不同类型的流融合的两流网络[8,25]。 我们还考虑了3DConvNet [14,28]:C3D [29]。
  • 作为主要技术贡献,我们介绍了TwoStream内置3D ConvNets(I3D)。 由于其参数化的高维度性以及缺少带标签的视频数据,以前的3D ConvNets相对较浅(最多8层)。 在这里,我们观察到非常深的图像分类网络,例如Inception [13],VGG-16 [26]和ResNet [12],可以轻松地引入到时空特征提取器中,并且它们的预训练权重可以提供有价值的初始化。 我们还发现,两流配置仍然有用。
  • 图2显示了我们评估的五种体系结构的图形概述,表1给出了它们的时间接口的规范。
  • 这些模型中的许多模型(除C3D以外的所有模型)都有一个Imagenet预训练模型作为子组件。 我们的实验策略假设将通用的ImageNet预训练图像分类体系结构作为基本的骨架,为此,我们选择具有批处理归一化的Inception-v1 [13],并以不同的方式对其进行变形。 可以预期的是这个基本的骨架是相同,我们将能够挑出最有益于动作分类的那些变化。
  • 图像分类网络的高性能使其吸引人们尝试以最小的视频变化重用它们。 这可以通过使用它们从每个帧中独立地提取特征,然后将其预测合并到整个视频中来实现[15]。 这是本着言语形象建模方法的精神[19,21,30]; 但是在实践中虽然很方便,但是却存在完全忽略时间结构的问题(例如,模型无法区分开门与关门)。
  • 从理论上讲,一种更令人满意的方法是在模型中添加一个循环层[5,34],例如LSTM,该层可以对状态进行编码,并捕获时间顺序和远距离依存关系。 我们在具有512个隐藏单元的Inception-V1的最后平均池化层之后,将具有批归一化(如Cooijmans等人[4]提出)的LSTM层定位。 为分类器在顶部添加一个完全连接的层。
  • 使用所有时间步长的输出上的交叉熵损失来训练模型。 在测试期间,我们仅考虑最后一帧的输出。 输入视频帧通过从原始25帧/秒流中每5个中的1个进行二次采样。 表1列出了所有模型的全部时间足迹。
  • 3D ConvNets似乎是视频建模的自然方法,就像标准的卷积网络一样,但是具有时空过滤器。 他们已经被探索了几次,以前[14,28,29]。 它们具有非常重要的特征:它们直接创建时空数据的分层表示。 这些模型的一个问题是,由于附加的内核尺寸,它们比2D ConvNets具有更多的参数,这使它们更难训练。 而且,它们似乎排除了ImageNet预培训的好处,因此,以前的工作已经定义了相对浅的自定义体系结构,并从头开始对其进行了培训[14、15、28、29]。 基准测试结果已显示出希望,但与最新技术没有竞争力,这使得这种类型的模型成为评估我们较大数据集的理想人选。
  • 在本文中,我们实现了C3D的一个小变体[29],它的顶部有8个卷积层,5个池化层和2个完全连接的层。 该模型的输入是与原始实现相同的具有112×112像素裁剪的短16帧剪辑。 与[29]不同,我们在所有卷积层和完全连接层之后使用批处理归一化。 与原始模型的另一个区别是在第一池层中,我们使用2而不是1的时间跨度,这减少了内存占用并允许更大的批处理–这对于批处理规范化非常重要(尤其是在完全连接的层之后, 没有重量绑)。 使用此步骤,我们可以使用标准K40 GPU每批GPU训练每批15个视频。
  • 来自ConvNets最后一层的要素上的LSTM可以对高层变化进行建模,但可能无法捕获细微的低级运动,这在许多情况下至关重要。 训练也很昂贵,因为它需要通过多个帧来展开网络以进行反向传播。Simonyan和Zisserman [25]提出了另一种非常实用的方法,通过将单个RGB帧和10个外部计算的光流帧的堆栈中的预测结果通过两个副本后,对视频的短时快照进行建模,从而对视频进行短暂快照。 ImageNet预训练的ConvNet。 流具有经过调整的输入卷积层,其输入通道是流帧的两倍(因为流具有水平和垂直两个通道),并且在测试时从视频中采样了多个快照,并对动作预测取平均值。 事实证明,这在现有基准测试中具有很高的性能,同时在训练和测试方面也非常有效。
  • 最近的扩展[8]在最后一个网络卷积层之后融合了空间流和流,显示了对HMDB的一些改进,同时需要更少的测试时间增加(快照采样)。 我们的实现大约在本文中使用Inception-V1。 网络的输入是5个连续的RGB帧(相隔10帧),以及相应的光学流片段。 在Inception-V1的最后一个平均池化层(5×7×7特征网格,对应于时间,x和y维度)之前的空间和运动特征穿过具有512个输出通道的3×3×3 3D卷积层, 接下来是3×3×3 3D最大池化层,最后是一个完全连接的层。 这些新层的权重由高斯噪声初始化。
  • 原始两流和3D融合版本的这两个模型都是端到端训练的(包括原始模型中的两流平均过程)。
  • 通过这种架构,我们展示了如何从ImageNet 2D ConvNet设计以及可选地从其学习的参数中受益于3D ConvNet。 我们在这里也采用了双向流配置-在第4节中将显示,尽管3D ConvNets可以直接从RGB流中学习时间模式,但是通过包含一个光流流,它们的性能仍可以得到很大的提高。
  • 这些年来,已经开发了许多非常成功的图像分类体系结构,部分是通过艰苦的尝试和错误来完成的。 我们建议不要将时空模型重复该过程,而只是将成功的图像(2D)分类模型转换为3D ConvNets。 这可以通过从2D架构开始,并为所有过滤器和池内核填充-为它们赋予额外的时间维度来完成。 过滤器通常是正方形的,我们只是将它们设为立方– N×N过滤器变为N×N×N。
  • 除了该体系结构之外,还可能需要从预先训练的ImageNet模型中引导参数。 为此,我们观察到可以通过将图像重复复制到视频序列中来将其转换为(无聊)视频。 然后,通过满足我们所谓的无聊视频固定点,可以在ImageNet上对3D模型进行隐式预训练:无聊视频上的合并激活应该与原始单图像输入上的激活相同。 得益于线性度,可以通过在时间维度上重复二维过滤器的权重N次,再除以N来重新缩放它们。这可以确保卷积过滤器响应相同。 由于无聊视频的卷积层的输出在时间上是恒定的,因此逐点非线性层以及平均池和最大池化层的输出与2D情况相同,因此整个网络响应都取决于无聊视频的固定点。
  • 无聊的视频固定点为如何在时间维度上向池化运算符以及如何设置卷积/池化时间跨度留有足够的自由度,这些是决定要素接受域大小的主要因素。 几乎所有图像模型都平等地对待两个空间维度(水平和垂直)–合并内核和步幅相同。 这是很自然的现象,这意味着网络深处的功能同样会受到图像尺寸越来越远的图像位置的影响。 同时考虑时间时,非对称接收场不一定表现最佳-这应取决于帧频和图像尺寸。 如果它相对于空间的时间增长过快,可能会融合来自不同对象的边缘,从而破坏早期的特征检测,而如果增长太慢,则可能无法很好地捕捉场景动态。
  • 在Inception-v1中,第一个卷积层的步幅为2,然后在最后一个线性分类层之前,有四个最大步幅为2的最大池化层和一个7×7的平均池化层,除了并行Inception分支中的最大池化层。在我们的实验中,输入视频的处理速度为每秒25帧; 我们发现最好不要在前两个最大池化层中执行时间池化(通过使用1×3×3内核并在时间上跨度为1),而在所有其他最大池化层中使用对称内核和跨度。 最终平均池层使用2×7×7内核。 总体架构如图1所示。 3.我们使用64帧摘要训练模型,并使用整个视频进行测试,并在时间上平均预测。
  • 虽然3D ConvNet应该能够直接从RGB输入中学习运动特征,但它仍然可以执行纯前馈计算,而光学流算法在某种意义上是经常性的(例如,它们对流场执行迭代优化)。 也许是由于这种缺乏复发的原因,从实验上我们仍然发现具有两流配置非常有价值-如图所示。 2,e)–一个I3D网络在RGB输入上受训,另一个I3D网络在流输入上受训,这些网络承载优化的平滑流信息。 我们分别训练了这两个网络,并在测试时平均了它们的预测。
  • 除类似于C3D的3D ConvNet外,所有模型均使用ImageNet预训练的Inception-V1 [13]作为基础网络。 对于所有体系结构,除了最后的卷积层为每个网络生成类分数之外,我们在每个卷积层之后都使用批处理归一化[13]层和ReLU激活函数。
  • 视频培训使用的标准SGD在所有情况下都设置为0.9,除了适用于3DConvNet的跨所有模型的跨32GPU的同步并行处理之外,该3DConvNet接收大量输入帧,因此需要更多的GPU来形成大批量–我们为此使用了64 GPU。 我们在miniKinetics上训练了多达35k步的模型,在Kinetics上训练了110k的步,当验证损失达到饱和时,学习率降低了10倍。 我们在miniKinetics的验证集上调整了学习率超参数。 使用与Kinetics类似的学习速率适配程序,仅使用16GPU在UCF-101和HMDB-51上对模型进行了高达5k步的训练。 所有模型都在TensorFlow [1]中实现。
  • 众所周知,数据增强对于深度架构的性能至关重要。在训练期间,我们在空间上进行了随机裁剪(将较小的视频一侧调整为256像素,然后随机裁剪224×224色块),并在时间上进行了随机裁剪,以便尽早选择起始帧以保证所需的帧数。对于较短的视频,我们会根据需要循环播放视频多次,以满足每个模型的输入界面。我们还在训练期间对每个视频一致地应用了随机左右滑动。在测试期间,将模型卷积应用于整个视频中,并采用224×224个中心作物,然后对预测值进行平均。我们仅对256×256的视频进行了空间卷积测试,但没有发现改进。通过在测试时考虑左右翻转的视频并在训练过程中添加其他增强功能(例如光度法),可以获得更好的性能。我们将其留给以后的工作。

The Kinectics Human Action Video Dataset

  • Kinetics数据集关注于人类行为(而不是活动或事件)。 动作类别列表包括:人员动作(单数),例如 绘画,喝酒,大笑,挥拳; 人际行为,例如 拥抱,亲吻,握手; 以及“人-对象动作”,例如 打开礼物,割草,洗碗。 有些动作是精细的,需要时间推理来区分,例如不同类型的游泳。 其他动作需要更多地强调对象以区分,例如演奏不同类型的管乐器。
  • 数据集包含400个人类动作类别,每个类别有400个或更多片段,每个片段都来自一个独特的视频。 剪辑持续约10秒钟,并且没有未修剪的视频。 测试集由每个类别的100个剪辑组成。 在[16]中给出了数据集及其构建方式的完整描述。
  • 对于本文中的大多数实验,我们使用的数据集比完整的动力学(称为miniKinetics)小。 这是数据集的早期版本,只有213个班级,总共三个片段,共120k个片段,一个用于训练每个班级150-1000个片段,一个用于验证每个班级25个片段,一个用于测试每个班级75个片段。

Discussion

  • 我们回到引言中提出的问题:“从视频进行转移学习是否有好处?”。 显然,对(大型视频数据集)动力学进行预培训会带来很多好处,就像对ImageNet上的ConvNets进行如此多的任务进行预培训一样,这种好处也很多。 这说明了从一个数据集(运动学)到另一个数据集(UCF-101 / HMDB-51)的转移学习,以完成相似的任务(尽管动作类别不同)。 但是,对于其他视频任务,例如语义视频分割,视频对象检测或光学流计算,是否可以将Kinetics预训练用于其他用途,还有待观察。 我们计划公开发布经过官方动力学数据集训练的I3D模型,以促进该领域的研究。
  • 当然,我们没有对架构进行全面的探索-例如,我们没有采用动作管[11,17]或注意机制[20]来关注人类行为者。 最近的工作提出了富有想象力的方法,通过在时间上合并链接的对象检测来确定双流体系结构中参与者的时空范围(检测)[22,24]。 时空的关系是一个神秘的关系。 最近,一些非常有创造力的论文试图捕捉这种关系,例如通过学习动作类的框架排名函数并将其用作表示[9],在动作和转换之间进行类比[33]或 通过创建帧序列的2D视觉快照[2] –这个想法与[3]的经典运动历史工作有关。 将这些模型也包括在我们的比较中将具有很大的价值,但是由于时间和空间的原因,我们不能这样做。

这篇关于Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)

1、MVC MVC(Model-View-Controller) 是一种常用的架构模式,用于分离应用程序的逻辑、数据和展示。它通过三个核心组件(模型、视图和控制器)将应用程序的业务逻辑与用户界面隔离,促进代码的可维护性、可扩展性和模块化。在 MVC 模式中,各组件可以与多种设计模式结合使用,以增强灵活性和可维护性。以下是 MVC 各组件与常见设计模式的关系和作用: 1. Model(模型)

HTML5自定义属性对象Dataset

原文转自HTML5自定义属性对象Dataset简介 一、html5 自定义属性介绍 之前翻译的“你必须知道的28个HTML5特征、窍门和技术”一文中对于HTML5中自定义合法属性data-已经做过些介绍,就是在HTML5中我们可以使用data-前缀设置我们需要的自定义属性,来进行一些数据的存放,例如我们要在一个文字按钮上存放相对应的id: <a href="javascript:" d

string字符会调用new分配堆内存吗

gcc的string默认大小是32个字节,字符串小于等于15直接保存在栈上,超过之后才会使用new分配。

Unable to instantiate Action, goodsTypeAction, defined for 'goodsType_findAdvanced' in namespace '/

报错: Unable to instantiate Action, goodsTypeAction,  defined for 'goodsType_findAdvanced' in namespace '/'goodsTypeAction......... Caused by: java.lang.ClassNotFoundException: goodsTypeAction.......

论文精读-Supervised Raw Video Denoising with a Benchmark Dataset on Dynamic Scenes

论文精读-Supervised Raw Video Denoising with a Benchmark Dataset on Dynamic Scenes 优势 1、构建了一个用于监督原始视频去噪的基准数据集。为了多次捕捉瞬间,我们手动为对象s创建运动。在高ISO模式下捕获每一时刻的噪声帧,并通过对多个噪声帧进行平均得到相应的干净帧。 2、有效的原始视频去噪网络(RViDeNet),通过探

用ajax json给后台action传数据要注意的问题

必须要有get和set方法   1 action中定义bean变量,注意写get和set方法 2 js中写ajax方法,传json类型数据 3 配置action在struts2中

使用http-request 属性替代action绑定上传URL

在 Element UI 的 <el-upload> 组件中,如果你需要为上传的 HTTP 请求添加自定义的请求头(例如,为了通过身份验证或满足服务器端的特定要求),你不能直接在 <el-upload> 组件的属性中设置这些请求头。但是,你可以通过 http-request 属性来自定义上传的行为,包括设置请求头。 http-request 属性允许你完全控制上传的行为,包括如何构建请求、发送请

List list = new ArrayList();和ArrayList list=new ArrayList();的区别?

List是一个接口,而ArrayList 是一个类。 ArrayList 继承并实现了List。 List list = new ArrayList();这句创建了一个ArrayList的对象后把上溯到了List。此时它是一个List对象了,有些ArrayList有但是List没有的属性和方法,它就不能再用了。而ArrayList list=new ArrayList();创建一对象则保留了A

vue原理分析(六)--研究new Vue()

今天我们来分析使用new Vue() 之前研究时,只是说是在创建一个实例。并没有深入进行研究 在vue的源码中找下Vue的构造函数 function Vue(options) {if (!(this instanceof Vue)) {warn$2('Vue is a constructor and should be called with the `new` keyword');}thi