MoViNets: Mobile Video Networks for Efficient Video Recognition

备注: 如有侵权,立即删除
code: https://github.com/tensorflow/models/tree/master/official/vision.
source: 2021

Abstract

我们提出了移动视频网络,这是一个计算和内存高效的视频网络的家族,可以对流媒体视频进行在线推理。3D卷积神经网络(CNN)在视频识别方面是准确的,但需要大量的计算和内存预算,并且不支持在线推理,这使得它们很难在移动设备上工作。我们提出了一种三步方法来提高计算效率,同时大大减少3D神经网络的峰值内存使用。首先,我们设计了一个视频网络搜索空间,并使用神经结构搜索来生成高效和多样化的3DCNN架构。其次,我们引入了流式缓冲区技术,它将内存与视频剪辑持续时间解耦,允许三维CNN嵌入仲裁长度的流式视频序列,以进行内存占用较小的训练和推理。第三,我们提出了一种简单的集成技术,可以在不牺牲效率的情况下进一步提高精度。这三种进步的技术允许MoViNet在Kinetics、Moments in Tme和charades视频动作识别数据集上实现最先进的准确性和效率。例如,MoViNet-a5流在Kinetics 600上实现了与X3D-XL相同的精度,同时需要减少80%的FLOP和减少65%的内存。Code will be made available at https://github.com/tensorflow/models/tree/master/official/vision.

1 Introduction

高效的视频识别模型为移动相机、IoT和自动驾驶应用程序提供了新的机会,其中高效和准确的设备上处理是至关重要的。尽管在深度视频建模方面取得了最新进展,但仍然很难找到在移动设备上运行并获得高视频识别精度的模型。一方面,三维卷积神经网络的[73,77,22,21,60]提供了最先进的精度,但却消耗了大量的内存和计算量。另一方面,二维CNN[45,85]需要的适合移动的资源要少得多,可以使用框架预测在线运行,但精度不足。
在这里插入图片描述
使3D视频网络准确的许多操作(例如,时间卷积、非本地块[77]等)要求立即处理所有输入帧,这限制了在移动设备上部署精确模型的机会。最近提出的X3D网络[21]为提高3D CNN的效率提供了重大努力。然而,它们需要在大的时间窗口上使用大量的内存资源,从而产生很高的成本,或者使用较小的时间窗口,从而降低精度。其他工作旨在使用时间聚合[45,20,79,48,19]提高2D CNN的准确性,但它们有限的帧间交互降低了这些模型充分建模3D CNN等远程时间依赖关系的能力。
本文介绍了设计高效视频模型的三个渐进步骤,我们用来生产移动视频网络,这是一个存储和计算高效的三维网络网络家族。

  • 1.我们首先定义了一个MoViNet搜索空间,以允许神经体系结构搜索能够有效地权衡时空特征表示。
  • 2.然后,我们为MoViNet引入流缓冲区,它以小的连续的子片段处理视频,在不牺牲长时间依赖性的情况下需要恒定的内存,并实现在线推理。
  • 3.最后,我们创建了流媒体MoViNet的时间集合,从流缓冲区恢复了稍微丢失的精度。
    首先,我们设计了MoVi网搜索空间来探索如何混合空间、时间和时空操作,以便NAS能够找到最优的特征组合,以权衡效率和准确性。图1显示了生成的MoViNet的缺陷。在Kinetics 600[36]上实现了与MobileNetV3-large+TSM[30,45]相似的精度,FLOP少了75%。MoViNet-A6达到了最先进的83.5%的精度,比X3D-XL的[21]高出1.6%,需要减少60%的频率。
    其次,我们通过引入流缓冲区来创建流MoViNet,以将训练和推理的输入帧数从线性减少为常数,允许MoViNet以更少的内存瓶颈运行。E.g.,流缓冲区将MoViNet-A5的内存使用率减少了90%。与传统的多剪辑评估方法[62,75]也可以减少内存相比,流缓冲区通过在子剪辑边界上缓存特征映射来传递连续不重叠的子剪辑之间的时间依赖关系。与最近提出的时间位移[45]相比,流缓冲区允许更大的操作类来增强在线时间建模。我们为流缓冲区配备时间单向因果操作,如因果卷积[52]、累积池和因果压缩和激发[31]与位置编码,以迫使时间接受场只查看过去的帧,使MoViNet能够增量地在流视频上进行在线推理。然而,因果操作的代价很小,Kinetics 600的精度平均降低了1%。
    第三,我们在时间上集成了MoViNet,表明它们比单个大型网络更准确,同时达到了相同的效率。我们训练两个流MoViNet独立与相同的总流作为一个单个模型,并平均他们的登录。这种简单的技术在使用流缓冲区时恢复精度的损失。
    综上所述,这三种技术创造了精度高、内存使用量低、计算效率高、支持在线推理的MoViNet。我们使用Kinetics 600数据集[8]搜索MoViNet,并在Kinetics 400[36]、Kinetics 700[9]、Moments in Time[51]、Charades[61]和Something V2[25]上进行了广泛的测试。

2. Related Work

Efficient Video Modeling. 深度神经网络在视频理解[32,62,71,76,11,77,57,21,22]方面取得了显著进展。他们用时间维数扩展了二维图像模型,最显著的是结合了三维卷积[32,70,71,81,26,56,33,60]。
提高视频模型的效率引起了[22,72,23,21,45,20,5,13,42,54]的关注。一些工作探讨了使用二维网络进行视频识别,通过处理较小片段的视频,然后是后期融合[35,17,83,76,23,66,41,44,77,84,85]。时间位移模块[45]使用早期融合沿时间轴位移部分信道,在提高精度的同时支持在线推断。
Causal Modeling. WaveNet[52]引入了因果卷积,其中一个一维卷积堆栈的接受场只扩展到当前时间步长的特征。我们从使用因果卷积[10,12,15,14,16]设计流缓冲区进行在线视频模型推理的其他工作中获得灵感,允许使用三维内核逐帧进行预测。
Multi-Objective NAS. NAS[86,46,53,68,7,34]与多目标架构搜索的使用也引起了人们的兴趣,在图像识别[68,7,3]和视频识别[54,60]的过程中产生了更有效的模型。我们使用了图NAS[3],一个一次性的NAS框架,它使用积极的重量共享,非常适合计算密集型视频模型。
Efficient Ensembles. 深度集成被广泛用于分类挑战,以提高网络网络[6,63,67,27]的性能。最近的结果表明,在图像分类[37,49,64,39,24]上,小模型的深度集合可以比单个大模型更有效,并将这些发现扩展到视频分类。

3. Mobile Video Networks (MoViNets)

本节介绍了我们渐进的三步网络方法。我们首先详细说明了搜索MoViNet的设计空间。然后我们定义了流缓冲区,并解释了它如何减少网络的内存足迹,然后是时间整合以提高准确性。
在这里插入图片描述

3.1. Searching for MoViNet

根据2D MobileNet 搜索[68,69]的实践,我们从图NAS框架[3]开始,这是在候选模型超网络上具有权重共享的一次性NAS,并将其重新用于3D CNN进行视频识别。我们使用Kinetics 600[36]作为视频数据集来搜索我们所有的模型,包括10秒的视频序列,每个每帧25帧,总共250帧。
MoViNet Search Space. 我们在MobileNet-V3[30]上建立了我们的基础搜索空间,这为移动CPU提供了一个强大的基线。它由几个倒置的瓶颈层块组成,它们具有不同的过滤器宽度、瓶颈宽度、块深度和每层的内核大小。与X3D[21]类似,我们扩展了MobileNet-V3中的2D块,以处理3D视频输入。表1提供了搜索空间的基本概述,详情如下。
我们用T×S2 =50×2242和τ=5(5fps)分别表示到目标MoVi网的输入的尺寸和帧步幅。对于网络中的每个块,我们搜索基滤波器宽度c基和要在块中重复的层数L≤10。我们在每个块内的特征映射通道上应用乘数{0.75、1、1.25},四舍五入为8的倍数。我们设置了n个=5块,为除第四块以外的第一层进行分层空间下采样(以确保最后一个块具有空间分辨率72)。这些图块逐渐增加了它们的特征映射通道:{16、24、48、96、96、192}。最终卷积层的基底滤波器宽度为512,然后在分类层之前是2048D致密层。
对于新的时间维度,我们定义了每个层内的三维内核大小,k时间×(k空间)2,以选择为以下其中之一:{1x3x3,1x5x5,1x7x7,5x1x1,7x1x1,3x3x3,5x3x3}(我们从考虑中删除更大的内核)。这些选择使一层能够集中关注和聚合不同的维度表示,在最相关的方向上扩展网络的接受域,同时减少沿其他维度的FLOP。一些内核大小可能受益于有不同数量的输入过滤器,所以我们搜索一系列瓶颈宽度c扩展定义为{1.5、2.0、2.5、3.5、3.0、3.5、4.0}的乘数。每一层都用两个1x1x1的卷积包围着三维卷积,以便在c基和c展开之间展开。我们不应用任何时间下采样来实现帧级预测。
我们没有使用空间压缩和激发(SE)[31],而是使用SE块通过三维平均池来聚合时空特征,并将其应用于每个瓶颈块。我们允许SE是可搜索,可以选择禁用它以保存FLOP。
Scaling the Search Space. 我们的基础搜索空间构成了MoViNet-A2网络的基础。对于其他的MoViNet,我们应用了一个类似于在EfficientNet[69]中使用的复合缩放启发式。我们的方法的主要区别在于,我们扩展了搜索空间本身,而不是单个模型(即模型A0-A5的搜索空间)。我们没有找到一个好的架构,然后缩放它,而是搜索所有架构的所有缩放,扩展了可能的模型的范围。
我们使用一个小的随机搜索来找到尺度系数(初始目标为每帧300MFLOPs),这大约是搜索空间中采样模型预期大小的两倍或一半。为了选择不同的因素,我们调整了基本分辨率S2、帧步幅τ、块滤波器宽度c基和块深度l。我们对不同的地块目标进行搜索,以生成一系列从MobileNet V3大小到ResNet-3D-152[27,26]大小的模型。附录A提供了搜索空间的更多详细信息、缩放技术和搜索算法的描述。
MoViNet搜索空间产生了一系列通用网络,在流行的基准数据集上优于最先进的高效视频识别网络网络。然而,它们的内存足迹与输入帧的数量成比例增长,这使得它们很难在移动设备上处理长视频。下一节介绍流缓冲区,以将网络的内存消耗从视频长度的线性减少到恒定。

3.2. The Stream Buffer with Causal Operations

假设我们有一个T帧的输入视频x,可能导致模型超过设置的内存预算。减少内存的一个常见解决方案是多剪辑评估[62,75],其中模型平均跨n个重叠子剪辑的预测,每个T剪辑<帧,如图2(左)所示。它将内存消耗减少到O(T段)。然而,它有两个主要的缺点:1)它限制了每个子片段的时间接受字段,并忽略了随机性的依赖性,可能会损害准确性。2)它重新计算重叠的帧激活,降低了效率。
在这里插入图片描述
Stream Buffer. 为了克服上述限制,我们提出了流缓冲区作为一种在子剪辑边界上缓存特征激活的机制,允许我们跨子剪辑扩展时间接受域,并且不需要重新计算,如图2(右)所示。
形式上,让x片段我是当前的子片段(原始输入或激活),其中我们将视频分割成n个相邻的不重叠的子片段,长度为T剪辑。我们从一个零初始化的张量开始,代表我们的缓冲区B,长度b沿时间维度,它的其他维度与x片段i匹配。我们计算沿时间维度连接的子剪辑的特征映射Fi:
在这里插入图片描述
其中,f表示一个时空操作(例如,三维卷积)。在处理下一个剪辑时,我们会将缓冲区的内容更新为:
在这里插入图片描述
其中,我们表示[−b:]作为连接输入的最后一个b帧的选择。因此,我们的内存消耗依赖于O(bT剪辑),它随着总视频帧T或子片段数量的增加而保持不变。
Relationship to TSM. 时间的移位模块(TSM)[45]可以看作是流缓冲区的特殊情况,其中b=1和f是在计算btBt=中的通道转换到输入xt的操作。

3.2.1 Causal Operations

将3DCNN的操作匹配到流缓冲区的一种合理方法是强制执行因果关系,即任何特征都不能从未来的帧中计算出来。这有许多优点,包括能够在不影响激活或预测的情况下将子剪辑x剪辑i减少到单帧,并允许3DCNNs在流媒体视频上进行在线推断。虽然可以使用非因果操作,例如,在两个时间方向上进行缓冲,但我们将失去在线建模能力,这是移动设备的理想特性。
Causal Convolution (CausalConv). 利用卷积的平移等变性质,我们将所有时间卷积改为[52]时间卷积,有效地使它们沿时间维数是单向的。具体地说,我们首先计算填充来平衡所有轴上的卷积,然后在最后一帧之后移动任何填充,并将其与第一帧之前的任何填充合并。有关接受场与标准卷积的区别的说明,以及对因果堆积算法的说明,请参见附录C。
当使用具有因果配置的流缓冲区时,我们可以用缓冲区本身替换因果填充,从上一个子夹结转最后几帧,并将它们复制到下一个子夹的填充中。如果我们有一个时间核大小为k(并且我们不使用任何串行采样),那么我们的填充,因此缓冲区宽度变成b=k−1。通常,k=3,这意味着b=2,导致内存占用。只有在跨多个帧聚合特征的层之前才需要流缓冲区,因此可以保留空间和点态卷积(例如1x3x3、1x1x1),从而进一步节约内存。
Cumulative Global Average Pooling (CGAP). 我们使用CGAP来近似涉及时间维数的任何全局平均池。对于在T0帧之前的任何激活,我们可以将其计算为累积和:
在这里插入图片描述
其中,x表示激活的一个张量。为了因果计算CGAP,我们保留一个单帧流缓冲区,存储累积总和高达T0。
CausalSE with Positional Encoding. 我们将因果SE表示为CGAP对SE的应用,其中我们将在t帧处的空间特征图与从CGAP(x,t)计算出的SE相乘。从我们的经验结果来看,因果SE容易出现不稳定,这可能是由于SE投影层很难确定CGAP估计的质量,这在视频早期有很高的方差。为了解决这个问题,我们应用了基于变压器[74,47]启发的基于正弦的固定位置编码(POSENC)方案。在应用SE投影之前,我们直接使用帧索引作为位置,并用CGAP输出对向量求和。

3.2.2 Training and Inference with Stream Buffers

Training. 为了减少训练期间的内存需求,我们使用了一种循环训练策略,其中我们将给定的一批示例分成n个子剪辑,应用一个前向传递,为每个子剪辑输出一个预测,使用流缓冲区来缓存激活。但是,我们不会反向传播渐变经过缓冲区,以便可以释放以前的子片段的内存。相反,我们计算损失,并积累子剪辑之间的计算梯度,类似于批处理梯度积累。这允许网络解释所有的t=和剪辑帧,在应用梯度之前执行n次向前传递。此训练策略允许网络学习更长期的依赖性,因此可以比使用较短视频长度训练的模型获得更好的准确性(参见附录C)。
我们可以将T剪辑设置为任何值,而不影响精度。然而,ML加速器(例如GPU)受益于大张量的倍增,因此对于训练,我们通常设置一个T剪辑的值∈{8,16,32}。这加速了训练,同时允许仔细控制内存成本。
Online Inference. 使用因果转换和因果转换SE等因果操作的一个主要好处是允许3D视频CNN在线工作。与训练类似,我们使用流缓冲区在子剪辑之间缓存激活。但是,我们可以将子剪辑长度设置为单帧(T剪辑=1),以最大限度地节省内存。这也减少了帧间的延迟,使模型能够在流媒体视频上逐帧输出预测,逐步累积新的信息,就像循环网络(RNN)[29]一样。但与传统的卷积rnn不同,我们可以每步输入可变数量的帧来产生相同的输出。对于具有因果连接的流式架构,我们通过使用CGAP汇集逐帧输出功能来预测视频的标签。

3.3. Temporal Ensembles

流缓冲器可以减少MoViNets的内存足迹,使Kinetics 600的精度降低约1%,最高可达一个数量级。我们可以使用一个简单的集成策略来恢复这种准确性。我们用相同的架构独立训练两个MoViNet,但保持帧速率的一半,保持时间持续时间相同(导致输入帧的一半)。我们在两个网络中输入一个视频,其中一个网络的帧被一帧偏移,并在应用softmax之前对未加权日志上应用算术平均值。这种方法导致了一个与单一模型相同的双模式集成,然后将帧率减半,提供了丰富表示的预测。在我们的观察中,尽管集成中的两个模型的精度可能比单独的单一模型低,但当集成时,它们可以比单一模型有更高的精度。

4. Experiments on Video Classification

在本节中,我们在五个有代表性的动作识别数据集上评估MoViNet的准确性、效率和内存消耗。
Datasets. 我们报告了所有Kinetics数据集的结果,包括Kinetics 400[11,36]、Kinetics 600[8]和Kinetics 700[9],它们包含10秒、250帧的视频序列,分别标记为400、600和700个动作类。我们使用在编写时可用的例子,分别为87.5%、92.8%和96.2%(见附录C)。此外,我们还实验了Moments in Time[51],包括339个动作类的3秒75帧序列,以及Charades[61],它有157个动作类的可变长度视频,其中一个视频可以包含多个类注释。我们在附录C中包含了Something-Something V2[25]的结果。
Implementation Details. 对于每个数据集,所有的模型都是从零开始训练使用RGB帧的,即,我们不应用任何预训练。对于所有的数据集,我们以不同的帧速率训练64帧(除了推理帧较少的时候),并以相同的帧速率运行推理。
我们使用Kinetics 600运行图NAS,并保持7 MoViNet,每个网都有一个在[21]中使用的FLOP目标。随着模型的增大,我们的缩放系数增加了网络的输入分辨率、帧数、深度和特征宽度。有关7个模型的架构以及训练超参数,请参见附录B。
Single-Clip vs. Multi-Clip Evaluation. 我们用一个固定的时间步幅从输入视频采样的模型,覆盖整个视频持续时间。当单剪辑和多剪辑评估总共使用相同数量的帧以使FLOP相等时,我们发现单剪辑评估会产生更高的精度(见附录C)。这可能部分是由于3D CNN能够建模更长距离的依赖关系,即使是在评估超过它训练过的帧时。由于现有的模型通常使用多段剪辑评估,因此我们报告每个视频,而不是每段剪辑的总FLOP,以进行公平的比较。
然而,单剪辑评估可以大大夸大网络的内存使用峰值(如图1所示),这可能是以前工作中通常使用多剪辑评估的原因。流缓冲区消除了这个问题,允许MoViNets像嵌入完整视频一样进行预测,并且产生比多剪辑评估更少的峰值内存。
我们还复现了X3D[21],可以说是与我们最相关的工作,以在单剪辑和10剪辑评估下测试其性能,以提供更多的见解。我们表示30个剪辑是评估策略,每个视频的10个片段乘以每个视频的3个空间作物,而10个剪辑只使用一个空间作物。我们避免在推理过程中对莫维网的任何空间增强,以提高效率.

4.1. Comparison Results on Kinetics 600

在这里插入图片描述

MoViNets without Stream Buffers. 表2给出了在应用流缓冲区之前,Kinetics 600上7个MoViNet的主要结果,主要与最近为高效视频识别而开发的各种X3D模型[21]进行了比较。表列对应前1分类精度;模型生成的每个视频GFLOP;输入视频帧的分辨率(将2242缩短到224);每个视频输入帧,其中30×4表示每次运行输入4帧的30帧评估;帧由MoV网搜索空间中的时间步τ确定(FPS);以及网络的参数数量。
MoViNet-A0的gflop更少,比基于帧的MobileNet V3-S[30]的精度高10%(我们使用训练设置训练MobileNet V3,平均跨帧登录)。MoViNet-A0在精度和GFLOP方面都优于X3D-S。MoViNet-A1与X3D-S的GFLOPs相匹配,但其精度比X3D-S高出2%。
将目标GFLOP增长到X3DS和30剪辑的X3D-XS之间的范围,我们到达了MoViNet-A2。通过使用它们几乎一半的GFLOP,我们可以实现比30剪辑的X3D-XS-XS或X3D-M更高的精度。此外,我们还包括了逐帧的MobileNet V3-L,并验证了它可以从TSM的[45]中获益大约3%。
较大的MoViNet(A3-A6)与X3D系列之间有更显著的优势。这并不奇怪,因为当设计空间很大时,NAS应该直观地比X3D的手工制作方法更有利。MoViNet-A5和MoViNet-A6的性能优于几种最先进的视频网络(见表2的最后6行)。MoViNet-A6实现了83.5%的准确率(没有预训练),同时仍然比同类模型要高得多。即使与full Transformer[74]模型如TimeSformer HR[4]相比,MoViNet-A6的精度也优于1%,使用40%的流量。
在这里插入图片描述
MoViNets with Stream Buffers. 在没有修改的情况下,我们的基本MoViNet架构可能在修改的情况下消耗大量内存,特别是在模型尺寸和输入帧的增长时。使用具有因果操作的流缓冲区,我们可以对大型网络进行一个数量级(MoViNet A3-A6)的峰值内存减少,如表3的最后一列所示。
此外,图3还可视化了流媒体架构对内存的影响。从顶部的左面板上,我们可以看到,与X3D相比,我们的MoViNet在所有模型大小上都更准确,内存更高效,后者使用了多剪辑评估。当我们在右上方面板的输入接受域中的帧总数时,我们也显示恒定内存。底部面板表示,流媒体MoViNet在每个输入视频的GFLOP方面保持有效。
我们还将流缓冲区应用于ResNet-3D-50(见表3中的最后两排)。然而,我们并没有看到内存的减少,可能是由于在使用全三维卷积时而不是在MoViNet中的深度卷积时更大的开销。
在这里插入图片描述

MoViNets with Stream Buffers and Ensembling. 从表3中看到,应用流缓冲区后,所有模型的精度只下降了1%。我们可以使用时间集成来恢复精度,而不需要任何额外的推理成本。表3报告了以原始模型一半帧速率训练的两个模型的效果(使GFLOP保持不变)。我们可以看到所有流式体系结构的准确性改进,这表明集成可以弥补流式架构和非流式体系结构之间的差距,特别是在模型规模的增长时。值得注意的是,与之前的工作不同,集成以与[37]相同的精神平衡准确性和效率(GFLOP),而不仅仅是为了提高准确性。

4.2. Comparison Results on Other Datasets

图4总结了MoViNet在所有五个数据集上的主要结果,以及在各自数据集上报告结果的最新模型。我们比较了 MoViNets with X3D[21],MSNet[38],TSM[45],ResNet3D[27],SlowFast[22],EfficientNetL2[80],TVN[54],SRTG[65],and AssembleNet[60,59]。附录详细结果。
在这里插入图片描述

尽管只在Kinetics 600上搜索高效的架构,NAS产生的模型也比在其他数据集上之前的工作大大改进。在时间矩上,我们的模型在低GFLOP时比小视频网络(电视)[54]高5-8%,而MoViNet-A5的精度达到了39.9%的精度,优于使用光流作为额外输入的组装网络[60](34.3%)(而我们的模型则没有)。在字符图上,MoViNet-A5达到了63.2%的精度,击败了使用光流和对象分割作为额外输入的组合网[59](59.8%)。关于Charades的结果提供了证据,证明我们的模型也能够进行复杂的时间理解,因为这些视频可以有比在时间上看到的Kinetics和时间矩更长的持续时间剪辑。

4.3. Additional Analyses

MoViNet Operations. 我们提供了表4中一些关键MOViNet操作的消融研究。对于没有流缓冲区的基础网络,SE对于实现高精度至关重要;如果我们删除SE,MoViNet-A1的精度下降了2.9%。在使用无SE的因果转换时,与具有全局SE的因果转换相比,精度下降要大得多,这表明全局SE可以扮演标准Conv的一些角色,从未来的帧中提取信息。然而,当我们切换到具有因果配置和因果SE的完全流式架构时,来自未来帧的信息不再可用,我们看到精度有很大下降,但与没有SE的因果配置仍有显著改进。利用内角,我们可以在因果模型中获得一些准确性。
在这里插入图片描述
MoViNet Architectures. 我们提供了表5中MoViNet-A2的结构描述—附录B包含其他MoViNet的详细结构。最值得注意的是,该网络更喜欢在[2.5,3.5]范围内的大瓶颈宽乘数,通常在每一层后扩展或缩小它们。相比之下,具有相似计算要求的X3D-M具有较宽的基本特征宽度,且较小的常数瓶颈乘数为2.25。搜索过的网络更喜欢平衡的3x3x3内核,除了在后面的块中的第一个下采样层中,它们有5x3x3内核。最后一个阶段几乎完全使用大小为1x5x5的空间核,这表明用于分类的高级特征主要受益于空间特征。这与S3D[82]形成了对比,后者报告了在下层使用二维卷积和在高层使用三维卷积时提高了效率。
在这里插入图片描述

Conclusion

MoViNet提供了一套高效的模型,传输良好地跨越不同的视频识别数据集。结合流缓冲区,MoViNet显著降低了训练和推理内存成本,同时也支持流媒体视频的在线推理。我们希望我们设计莫维网的方法能够改进未来和现有的模型,减少在这个过程中的内存和计算成本。

### ShuffleNet V2 1D Implementation and Applications ShuffleNet V2 represents an efficient architecture designed primarily for mobile devices, focusing on balancing speed and accuracy through channel shuffling operations. The adaptation of this network into one-dimensional (1D) convolutions allows its application not only within computer vision but also extends significantly towards time series analysis. #### Computer Vision Application In adapting ShuffleNet V2 from two dimensions to one dimension, the convolutional layers are modified so they operate over sequences rather than spatial data. This transformation retains much of the original design philosophy while enabling new types of input processing such as sequential image strips or video frames treated linearly[^3]. For instance, when applied to action recognition tasks where videos can be represented by temporal features extracted along each frame sequence, using 1D convolutions helps capture spatiotemporal patterns efficiently without requiring large computational resources typically associated with higher dimensional models like 3D CNNs. ```python import torch.nn as nn class ShuffleNetV2_1D(nn.Module): def __init__(self, num_classes=1000): super(ShuffleNetV2_1D, self).__init__() # Define your 1D Convolution Layers here def forward(self, x): pass def main(): model = ShuffleNetV2_1D() if __name__ == "__main__": main() ``` #### Time Series Analysis Application The utilization of ShuffleNet V2 1D proves particularly beneficial in analyzing long-term dependencies found within various kinds of time-series datasets including financial markets forecasting, sensor readings monitoring, etc., due to its ability to handle variable length inputs effectively via global average pooling at output stage before classification layer[^4]. Moreover, compared against traditional recurrent neural networks which may suffer from vanishing gradient problems during training phase especially under deep architectures; employing residual connections alongside depthwise separable convolutions ensures stable gradients propagation throughout entire network structure thus facilitating faster convergence rates overall.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值