如何在新版本caffe里添加新的一层

如何在新版本caffe里添加新的一层,第1张

首先确定要添加的layer的类型,是common_layer 还是 data_layer 还是loss_layer,
neuron_layer, vision_layer
,这里的Wtf_Layer肯定是属vision_layer了,所以打开vision_layershpp
然后复制convolution_layer的相关代码,把类名还有构造函数的名字改为WtfLayer,如果没有用到GPU运算,那么把里面的带GPU的函数都删掉
2 将Wtf_layercpp 添加到src\caffe\layers文件夹中,代码内容复制convolution_layercpp 把对应的类名修改(可以搜一下conv关键字,然后改为Wtf)
3 假如有gpu的代码就添加响应的Wtf_layercu (这里不添加了)
4 修改proto/caffeproto文件,找到LayerType,添加WTF,并更新ID(新的ID应该是34)。假如说Wtf_Layer有参数,比如Convolution肯定是有参数的,那么添加WtfParameter类
5 在layer_factorycpp中添加响应的代码,就是一堆if else的那片代码
6 这个可以不做,但是为了结果还是做一个,就是写一个测试文件,检查前向后向传播的数据是否正确。

摘要 :深度卷积网络在静态图像的视觉识别方面取得了巨大的成功。 但是,对于视频中的动作识别,相对于传统方法的优势并不是那么明显。 本文旨在设计有效的ConvNet架构来进行视频动作识别,并在有限的训练样本下学习这些模型。 我们的第一项贡献是时间分段网络(TSN),这是一种基于视频的动作识别的新框架。这个结构是基于远程时间建模的思想。它结合了稀疏的时间采样策略和视频级的监督,可以使用整个动作视频进行有效的学习。 另一个贡献是我们研究了在时间分段网络的帮助下学习视频数据上的ConvNet的一系列实践。我们的方法在HMDB51(694%)和UCF101(942%)的数据集上实现了SOTA。 我们还将ConvNet模型可视化,证明了时间分段网络和提出方法的有效性。

1介绍

基于视频的动作识别由于其在安全和行为分析等许多领域中的应用而引起了学术界的极大关注[1,2,3,4,5,6]。在动作识别中,有两个关键且互补的方面:外观和动态。识别系统的性能在很大程度上取决于它是否能够从中提取和利用相关信息。然而,由于诸如尺度变化,视角变化和相机运动之类的复杂因素,提取这样的信息是困难的。 因此,设计有效的表示形式以解决这些挑战同时保留动作类别的分类信息就变得至关重要。最近,卷积神经网络[7]在对物体,场景和复杂事件的图像进行分类方面取得了巨大的成功[891011]。ConvNets也已被引入以解决基于视频的动作识别问题[12,1,13,14]。深度ConvNets具有强大的建模能力,并能够在大规模监督数据集的帮助下从原始视觉数据中学习区分表示。但是,与图像分类不同,端到端的深层ConvNet仍然无法获得比传统手工特征提取明显的优势。

我们认为,ConvNets在基于视频的动作识别中的应用有两个主要障碍。首先,长时间结构在理解动作视频的动态过程中起着重要作用[15,16,17,18]。但是,主流的ConvNet框架[1,13]通常集中在外观和短期运动上,因此缺乏整合长时间结构的能力。最近有一些尝试[19,4,20]来解决这个问题。这些方法主要依赖于具有设定采样间隔的密集时间采样。当将这种方法应用于长视频序列时,将导致过多的计算成本,这限制了其在现实世界中的应用,并存在丢失长于最大长度视频的重要信息的风险。其次,在实践中,训练深层ConvNets需要大量训练样本才能实现最佳性能。但是,由于数据收集和标注的困难,可公开使用的动作识别数据集(例如UCF101 [21],HMDB51 [22])在大小和多样性上都受到限制。 因此,非在图像分类中取得了显著成功深层ConvNets [9,23]在视频中面临着过拟合的高风险。

这些挑战促使我们研究两个问题:1)如何设计一种有效和高效的视频级框架来学习视频表示,该框架能够捕获长期的时间结构; 2)如何在有限的训练样本下学习ConvNet模型。特别是,我们在成功的双流体系结构[1]的基础上构建了我们的方法,同时解决了上述问题。在时间结构建模方面,一个关键的发现是连续的帧是高度冗余的。 因此,高度相似采样帧的密集时间采样通常是不需要的。相反,在这种情况下,稀疏的时间采样策略将更为有利。 受此发现的启发,我们提出了一个视频级框架,称为时间分段网络(TSN)。 该框架采用稀疏采样方案在较长的视频序列上提取短片段,其中采样沿时间维度均匀分布。 之后,采用分段结构来聚集来自采样片段的信息。从这个意义上讲,TSN能够对整个视频的长时间结构进行建模。 而且,这种稀疏的采样策略可以以较低的成本保存相关信息,从而可以在合理的时间和计算资源下,在长视频序列上进行端到端学习。

为了开发STN框架的全部潜力,我们采用了最近介绍的深层ConvNet架构[23,9],并探索了许多良好实践以克服由以下训练样本不足原因带来的上述问题,包括1)交叉预训练;2)正规化;3)数据增强扩充。同时,为了充分利用视频中的视觉内容,我们对双流ConvNets的四种输入形式进行了经验研究,即单RGB图像,堆叠的RGB差,堆叠的光流场和堆叠的矫正光流场。

我们对两个具有挑战性的动作识别数据集(UCF101 [21]和HMDB51 [22])进行了实验,以验证我们方法的有效性。在实验中,使用TSN学习的模型在这两个具有挑战性的动作识别数据集上的表现SOTA。 我们还可视化了我们所学的双流模型,试图为将来的动作识别研究提供一些参考。

2相关工作

在过去的几年中,动作识别已被广泛研究[2,24,25,26,18]。与我们有关的先前研究分为两类:(1)用于动作识别的卷积网络,(2)时间结构建模。

卷积网络的动作识别 。先前的许多工作一直在尝试设计有效的ConvNet架构来进行视频中的动作识别[12,1,13,27,28]。Karpathy等[12]在大型数据集(Sports-1M)上测试了具有深层结构的ConvNets。 Simonyan等[1]通过利用ImageNet数据集进行预训练和计算光流以捕获运动信息,设计了包含空间和时间网络的双流ConvNet。Tran等[13]在现实和大规模的视频数据集上探索了3D卷积[27],他们尝试通过3D卷积运算学习外观和运动特征。Sun等[28]提出了一个基于分解的时空ConvNets,并利用不同的方法来分解3D卷积核。 最近,有几篇文章着重介绍了使用卷积建模长时间结构的方法[4,19,20]。但是,这些方法直接在较长的连续视频流上运行。 受计算成本的限制,这些方法通常处理固定长度为64到120帧的序列。 由于它的时间覆盖范围有限,因此从整个视频中进行学习并非易事。 我们的方法与这些端到端深层ConvNets的不同之处在于,它新颖地采用了稀疏的时间采样策略,该策略可以在不限制序列长度的情况下使用整个视频进行有效的学习。

时间结构建模 。许多研究工作致力于为动作识别时间结构建模[15,16,17,29,30,18]。Gaidon等[16]注释了每个视频的每个子动作,并提出了用于动作检测的Actom序列模型(ASM)。Niebles等[15]提出使用潜在变量来建模复杂动作的时间分解,并借助潜在SVM [31]以迭代方式学习模型参数。Wang等[17]和Pirsiavash等。[29]分别使用隐性层次模型(LHM)和分段语法模型(SGM)将复杂动作的时间分解扩展为分层方式。Wang等[30]设计了一个顺序骨架模型(SSM)来捕捉动态体之间的关系,并进行时空动作检测。 Fernando [18]为行为识别建模了BoVW表示。但是,这些方法仍然无法组合用于对时间结构建模的端到端学习方案。前文所提出的时间分段网络STN,同时也强调了这一原理,是对整个视频进行端到端时间结构建模的第一个框架。

3时间分段网络的动作识别

在本节中,我们将详细介绍使用时间分段网络执行动作识别的过程。具体来说,我们首先介绍TSN框架中的基本概念。然后,我们研究在TSN框架内学习双流ConvNet的实践。 最后,我们描述了学习到的双流ConvNets的测试细节。

31时间分段网络

正如我们在第一节中讨论的那样。如图1所示,双流ConvNets当前的一个明显问题是它们无法建模长时间结构。这主要是由于它们对时间轴前后的访问受到限制,它们被设计为仅在短片段中的单个帧(空间网络)或单个帧堆栈(时间网络)上运行。但是,复杂的动作(例如体育动作)包括跨越相对较长时间的多个阶段。如果在ConvNet训练中没有在这些动作中使用长时间结构,那将是巨大的损失。 为了解决这个问题,我们提出了时间分段网络,即图1所示的视频级框架,以便能够对整个视频进行动态建模。

具体来说,我们提出的时间分段网络框架,旨在利用整个视频的视觉信息来执行视频级别的预测,它也由空间流ConvNet和时间流ConvNet组成。时间分段网络不是在单个帧或帧堆栈上工作,而是在从整个视频中稀疏采样的一系列短片段上运行。此序列中的每个片段都将对动作类别产生自己的初步预测。 然后,片段之间的共识将被导出为视频级别的预测。 在学习过程中,通过迭代更新模型参数来优化视频级预测的损失值,而不是用于双流ConvNet的局部预测的损失值。

形式上,给定视频V,我们将其分为相等持续时间的K个段{S1,S2,…,SK}。 然后,TSN对片段序列进行如下建模:

其中C是动作类别的数量,yi是类别i的标签。 在实验中,根据先前的时间建模工作 [16,17],片段的数量K设置为3。 函数G的形式仍然是一个悬而未决的问题。 在这项工作中,我们使用最简单的G形式,其中Gi = g(Fi(T1),,Fi(TK))。 此处,使用函数g从所有片段上的同一类别的分数推断出类别分数Gi。我们根据经验评估了聚合函数g的几种不同形式,包括实验中的平均,极值和加权平均。 其中,平均均值用于报告我们的最终识别准确性。

取决于g的选择,此TSN是可微的或至少具有子梯度。这使我们能够利用多个片段,通过标准的反向传播算法共同优化模型参数W。 在反向传播过程中,模型参数W相对于损耗值L的梯度可以推导为:

32学习时间分段网络

时间分段网络提供了执行视频级学习的框架,但是要实现最佳性能,必须注意一些实际问题,例如训练样本数量有限。为此,我们研究了在视频数据上训练深层ConvNet的一系列良好做法,这些做法也可直接应用于学习时间分段网络。

网络体系结构 。网络体系结构是神经网络设计中的重要因素。几项工作表明,更深的结构可以提高对象识别性能[9,10]。但是,原始的双流Con vNets [1]采用了相对较浅的网络结构(ClarifaiNet [32])。 在这项工作中,由于在准确性和效率之间具有良好平衡和批归一化的Inception[23]作为构建基块。 我们将原始的BN-Inception体系结构调整为双流ConvNet的设计。像在原始的双流ConvNets [1]中一样,空间流在单个RGB图像上运行,而时间流将一堆连续的光流场作为输入。

网络输入 。我们也有兴趣探索更多的输入方式来增强STN的判别能力。 最初,双流ConvNets将RGB图像用于空间流,将堆叠的光流场用于时间流。 在这里,我们建议研究两种额外的模式,即RGB差和矫正流场。

单个RGB图像通常在特定时间点编码静态外观,且缺少有关上下帧的信息。如图2所示,两个连续帧之间的RGB差异描述了外观变化,该变化可能与运动显著区域相对应。 受[28]的启发,我们尝试添加叠加的RGB差作为另一种输入形式,并研究其在动作识别中的性能。

时间流ConvNets以光流场为输入,旨在捕获运动信息。但是,在真实的视频中,通常存在摄像机运动,并且光流场可能不会集中在人体运动上。如图2所示,由于摄像机的运动,在背景中突出了大量的水平运动。 受iDT[2]的启发,我们建议将矫正的光流场作为附加的输入形式。根据[2],我们首先通过估计单应性矩阵然后补偿相机运动来提取矫正光流。如图2所示,矫正的光流抑制了背景运动并使运动集中在人体身上。

网络训练。 由于用于动作识别的数据集相对较小,因此训练深度ConvNets面临着过拟合的风险。 为了解决这个问题,我们设计了以下几种在时域网中训练卷积网络的策略。

交叉预训练。 当目标数据集没有足够的训练样本时,预训练是初始化深层ConvNets的有效方法[1]。 当空间网络将RGB图像作为输入时,参数可以利用在ImageNet [33]上训练的模型作为初始化。 对于其他形式,例如光流场和RGB差,它们本质上捕获了视频数据的不同视觉方面,并且它们的分布与RGB图像的分布不同。我们提出了一种交叉预训练技术,其中我们利用RGB模型初始化时间流网络。首先,我们通过线性变换将光流场离散化为从0到255的间隔。 此步骤使光流场的范围与RGB图像相同。 然后,我们修改RGB模型的第一卷积层的权重以处理光流场的输入。 具体来说,我们对RGB通道上的权重取平均值,并通过时间网络输入的通道数来复制该平均值。 这种初始化方法在时态网络中效果很好,并减少了实验中过度拟合的影响。

正则化技术。批处理规范化[23]是处理协变量偏移问题的重要手段。在学习过程中,批次归一化将估计每个批次内的激活平均值和方差,并使用它们将这些激活值转换为标准的高斯分布。这项 *** 作会加快训练的收敛速度,但由于对有限数量的训练样本的分布估计存在偏差,会导致在传递过程中过拟合。 因此,在使用预训练模型进行初始化之后,我们选择冻结除第一层外的所有批处理归一化层的均值和方差参数。 由于光流的分布与RGB图像不同,因此第一卷积层的激活值将具有不同的分布,因此我们需要相应地重新估计均值和方差。 我们称这种策略为局部BN。同时,我们在BN-Inception体系结构的全局池层之后添加了一个额外的随机失活层,以进一步减少过度拟合的影响。 对于空间流ConvNet,随机失活率设置为08;对于时间流ConvNet,设置为07。

数据增强。数据增强可以生成各种训练样本,并防止严重的过拟合。在原始的双流ConvNet中,随机裁剪和水平翻转被用来增加训练样本。我们利用两种新的数据增强技术:角点裁剪和比例抖动。在角点裁剪技术中,仅从图像的角点或中心选择提取的区域,以避免隐式聚焦在图像的中心区域。在多尺度裁剪技术中,我们将ImageNet分类中使用的尺度抖动技术[9]应用于动作识别。我们提出了尺度抖动的有效实现。 我们将输入图像或光流场的大小固定为256×340,并从{256,224,192,168}中随机选择裁剪区域的宽度和高度。 最后,将这些裁剪区域的大小调整为224×224,以进行网络训练。 实际上,此实现不仅包含比例抖动,而且还涉及纵横比抖动。

33测试TSN

最后,我们介绍了针对时间分段网络的测试方法。 由于所有的片段ConvNet都共享TSN中的模型参数,因此学习到的模型可以像普通的ConvNet一样执行逐帧评估。这使我们能够与没有TSN的学习模型进行公平比较。具体来说,我们遵循原始双流ConvNets的测试方案[1],在该方案中,我们从动作视频中采样了25个RGB帧或光流堆栈。 同时,我们裁剪了4个角和1个中心,并从采样帧中进行了水平翻转以评估ConvNet。对于空间和时间流网络的融合,我们对它们进行加权平均。 在TSN框架内学习时,空间流ConvNet和时间流ConvNet之间的性能差距比原始的双流ConvNet中的性能差距小得多。 基于这一事实,我们将空间流的权重设置为1,将时间流的权重设置为15,从而为空间流赋予更高的权重。 当同时使用正常和矫正的光流场时,对于正常光流,权重被划分为1,对于矫正的光流,权重被划分为05。 在31中有描述,分段共识函数在Softmax归一化之前应用。为了测试模型是否符合训练条件,我们在Softmax归一化之前融合了25个帧和不同流的预测分数。

4实验

在本节中,我们首先介绍评估数据集和该方法的实现细节。然后,我们探索了用于学习时间分段网络的建议的良好实践。在此之后,我们证明了通过应用时间分段网络框架来建模长时间结构的重要性。我们还将我们的方法的性能与最新技术进行了比较。最后,我们将ConvNet模型可视化。

41数据集和实施细节

我们对两个大型动作数据集HMDB51[22]和UCF101 [21]进行实验。UCF101数据集包含101个动作类和13320个视频剪辑。我们遵循THUMOS13挑战[34]的评估方案,并采用三个训练/测试单元进行评估。HMDB51数据集是大量来自各种来源的真实视频的集合,例如**和网络视频。 数据集由来自51个动作类别的6766个视频剪辑组成。我们的实验遵循原始的评估方案,使用了三个训练/测试拆分,并报告了这些拆分的平均准确性。

我们使用小批量随机梯度下降算法来学习网络参数,其中批量大小设置为256,动量设置为09。我们使用来自ImageNet [33]的预训练模型初始化网络权重。我们在实验中设置了较小的学习率。 对于空间网络,学习率初始化为0001,并且每2 000次迭代降低到其十分之一。整个训练过程将在4500次迭代后停止。 对于时间网络,我们将学习率初始化为0005,经过12000和18000次迭代后,学习率降低为十分之一。 最大迭代次数设置为20000。关于数据增强,我们使用了第32节中指定的位置抖动,水平翻转,角点裁剪和比例抖动的技术。为了提取光流和矫正光流,我们选择在OpenCV中使用CUDA实现的TVL1光流算法[35]。为了加快训练速度,我们采用了具有多个GPU的数据并行策略,并通过我们的修改版Caffe [36]和OpenMPI实现了该策略。对于具有4个TITANX GPU的硬件设备,空间TSN在UCF101上的整个培训时间约为2小时,对于时间TSN则为9小时。

42进一步探究

在本节中,我们重点研究32节中描述的良好实践,包括培训策略和输入方式。在本实验研究中,我们使用[23]改编的具有深层体系结构的双流ConvNets,并对UCF101数据集的第1部分进行所有实验。

我们在第32节中提出了两种训练策略,即交叉预训练和具有随机失活的部分BN。 具体来说,我们比较了四种设置:(1)从头开始训练(2)仅像[1]中那样预训练空间流(3)交叉预训练(4)使用交叉预训练和带有随机失活的BN层。结果如表1所中。首先,我们发现从头开始的训练性能要比原始的双流ConvNets(基准)差很多,这意味着精心设计的学习策略对于降低过拟合风险是必要的,尤其是对于空间网络。然后,我们使用空间流的预训练和时间流的交叉模态预训练,以初始化双流ConvNets,并且其性能比基线更好。 我们进一步利用带有随机失活的部分BN来规范化训练过程,从而将识别性能提高到920%。

我们在第32节中提出了两种新型的模态:RGB差和矫正的光流场。 表2中报告了比较不同模式性能的结果。这些实验是在表1中验证的所有良好实践下进行的。我们首先观察到RGB图像和RGB差的组合将识别性能提高到873%。 此结果表明RGB图像和RGB差异可以对信息编码互补。然后表明,光流和矫正光流产生了非常相似的性能(872%对869%),并且将它们融合可以将性能提高到878%。 结合所有四种模式可得出917%的准确性。由于RGB差可能描述相似但不稳定的运动模式,因此我们还评估了组合其他三种模式的性能,这带来了更好的识别精度(923%vs 917%)。我们推测光流更适合捕获运动信息,有时RGB差对于描述运动可能不稳定。 另一方面,RGB差可以用作运动表示低质量,高速的替代方案。

43对于TSN的性能评价

在本小节中,我们专注于TSN框架工作的研究。我们首先研究分段共识函数的影响,然后在UCF101数据集的split 1上比较不同的ConvNet体系结构。为了进行比较,在此探索中,我们仅将RGB图像和光流场用作输入模态。 如第31节所述,段数K设置为3。

在等式中(1),分段共识函数由其聚集函数g定义。在这里,我们评估了g的三个计算方式:(1)最大合并,(2)平均合并,(3)加权平均。实验结果总结在表3中。我们看到平均池化功能可实现最佳性能。因此,在以下实验中,我们选择平均池作为默认聚集功能。 然后,我们比较了不同网络体系结构的性能,结果在表4中进行了总结。具体地说,我们比较了三种深层的体系结构:BN-Inception [23],GoogLeNet [10]和VGGNet-16 [9],所有这些架构都经过上述实践的训练。在比较的体系结构中,根据BN-Inception [23]改编的深层双流ConvNets达到了920%的最佳精度。这与它在图像分类任务中的更好表现相吻合。 因此,我们选择BN-Inception [23]作为TSN的ConvNet架构。

设置了所有设计选项后,我们现在将时间分段网络(TSN)应用于动作识别。 结果在表4中进行了说明。在表5中还提供了根据识别准确度对组件进行逐项分析的结果。我们可以看到,在前面所有良好实践下,时间分段网络都能够提高模型的性能。 这证实了通过时间分段网络实现的对长时间结构进行建模对于理解视频中的动作至关重要。

44与SOTA相比较

在探索了良好的做法并了解了时间分段网络的效果之后,我们准备建立最终的动作识别方法。具体来说,我们使用了三种输入方式以及描述的所有技术作为最终方法,并在两个具有挑战性的数据集上进行了测试:HMDB51和UCF101。 结果总结在表6中,在表6中,我们将我们的方法与传统方法(例如改进的轨迹(iDT)[2],MoFAP表示[39])和深度学习表示法例如3D卷积网络(C3D)[13],轨迹合并的深度卷积描述符(TDD)[5],分解时空卷积网络(FSTCN)[28],长期卷积网络(LTC)[19]和关键卷挖掘框架(KVMF)[41]。 我们的最佳结果在HMDB51数据集上优于其他方法39%,在UCF101数据集上优于11%。 我们方法的优越性能证明了TSN的有效性,并证明了长期时域建模的重要性。

45模型可视化

除了识别精度,我们还想进一步了解所学的ConvNet模型。这里,我们采用DeepDraw[42]工具箱。此工具在仅具有白噪声的情况下对输入图像进行迭代梯度上升。因此,仅基于ConvNet模型内部的类知识,可以将经过多次迭代后的输出视为类可视化。该工具的原始版本仅处理RGB数据。为了对基于光流的模型进行可视化,我们调整了工具以使其与时间网络一起运行。结果,我们首次在动作识别ConvNet模型中可视化了有趣的类信息。 我们从UCF101数据集中随机选择五个类别,即太极拳,打拳,跳水,跳远和自行车,以实现可视化。 结果如图3所示。对于RGB和光流,我们将通过以下三种设置可视化学习的ConvNet模型:(1)不进行预训练;(2)仅接受预训练;(3)具有TSN。

一般而言,具有预训练的模型比没有进行预训练的模型更能表示视觉概念。可以看到,没有经过预训练的时空模型几乎不能产生任何有意义的视觉结构。 利用预训练过程中传递的知识,空间和时间模型能够捕获结构化的视觉特征。

还很容易注意到,仅接受短期信息(例如单帧)训练的模型往往会将视频中的风景图案和物体误认为是行动识别的重要特征。例如,在“潜水”类中,除进行潜水的人员外,单帧空间流ConvNet主要查找水和潜水平台。它的时间流对应物(光流)趋向于集中于由水波引起的运动。 随着时间分段网络引入的长期时间建模,显而易见的是,学习的模型更多地关注视频中的人,并且似乎正在对动作类的长时间结构进行建模。仍以“潜水”为例,具有时间分段网络的空间卷积网络现在生成的图像是人是主要的视觉信息。 并且可以在图像中识别出不同的姿势,描绘了一个潜水动作的各个阶段。这表明用该方法学习的模型可能表现更好,这在我们的定量实验中得到了很好的体现。我们为读者提供补充材料,以实现更多动作类的可视化以及有关可视化过程的更多详细信息。

5结论

在本文中,我们介绍了时间分段网络(TSN),这是一个视频级框架,旨在为长期的时间结构建模。正如在两个具有挑战性的数据集上所展示的,这项工作将最新技术提升到了一个新的水平,同时保持了合理的计算成本。 这主要归因于具有稀疏采样的分段体系结构以及我们在本文中探索的一系列良好实践。 前者提供了一种捕获长期时间结构的有效方式,而后者则使得在有限的训练集上训练非常深的网络成为可能,而不会出现严重的过度拟合。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12899556.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存