没有合适的资源?快使用搜索试试~ 我知道了~
12497DeltaCNN:视频中稀疏帧差异的端到端CNN推断Mathias Parger1 Chengcheng Tang2 Christopher D.Twigg2 Cem Keskin2Robert Wang2 Markus Steinberger11格拉茨理工大学,2Meta Reality Labs1{mathias.parger,steinberger} @ icg.tugraz.at2{chengcheng.tang,cdtwigg,cemkeskin,rywang} @ fb.com摘要对视频数据的卷积神经网络推理需要强大的硬件进行实时处理。考虑到连续帧之间的固有相干性,视频的大部分通常变化不大。通过跳过相同的图像区域和截断无关紧要的像素更新,理论上可以显著减少计算冗余然而,这些理论上的节省一直难以转化为实践,因为稀疏更新妨碍了计算一致性和存储器访问一致性;这是实际硬件上的效率的关键通过DeltaCNN,我们提出了一个稀疏卷积神经网络框架,该框架可以实现稀疏的逐帧更新,从而在实践中加速视频推理。我们为所有典型的CNN层提供稀疏实现,并端到端地传播稀疏特征更新DeltaCNN适用于所有卷积神经网络,无需再训练。据我们所知,我们是第一个在实际环境中显著优于密集引用cuDNN的公司,在准确性方面只有微小差异的情况下,实现了高达7倍的加速我们的CUDA内核和PyTorch扩展可以在https://github.com/facebookresearch/DeltaCNN网站。1. 介绍卷积神经网络(CNN)是许多图像理解任务的最先进方法,如对象检测,分割和姿态估计。与多层感知器相比,它们通过空间共享参数而需要更少的参数,并且在图像理解任务上执行得更好。然而,为了解决数据集和任务日益增加的复杂性,CNN已经增长到数百个卷积层,需要数百亿次浮点运算(FLOP)。在过去的几年里,研究人员已经找到了许多降低卷积层成本的方法:深度可分离卷积[28],优化像素之间的比率,[2019 - 04 - 22][2019 - 04 - 22][2019 - 04][2019 - 04 -04][2019 - 04][2019 - 04 - 04][13,18]和专用硬件[5,6,12],仅举几例。虽然这些方法在通用推理方面实现了显著的改进,但仍然存在对进一步降低CNN的计算成本的强烈兴趣,特别是对于移动设备上的实时应用。最近,研究人员开始利用在监控摄像头、车牌识别摄像头或网络摄像头中常见的时间相似性[1,3,9,11,16,19,23,24,27,33,34]。这些应用通常在来自固定摄像机的视频输入上使用CNN,其中高帧间相似性提供了正交方向以降低计算复杂度。用于CNN的现有技术框架单独地处理每个帧,并且因此不能利用帧到帧的相似性。通过在未改变的区域中重用来自先前帧的结果,理论上可以大大降低计算成本[1,3,11,24],而不降低精度。此外,可以截断小的和不重要的更新,以在整个CNN的所有层中保持高水平的激活稀疏性,在最终输出中只有边际差异[11,24]。虽然研究人员已经表明,截断小的变化增加了稀疏性,从而在理论上减少了FLOP,但有效地利用数据稀疏性来加速实际硬件的推理仍然是一个未解决的挑战。由于并行SIMD设备,如GPU,通常用于CNN推理,由于操作每瓦和存储器带宽的优势,有必要评估稀疏神经网络在这样的设备上的实字加速。专用推理硬件以及GPU对于过多的条件语句的效率低于CPU,并且在结构化程度较低的内存访问下受到影响,这两种情况在处理神经网络中的稀疏激活时自然出现因此,以前关于CNN中稀疏激活的研究结果在实践中并没有转化为高加速比。在本文中,我们提出了第一个完全稀疏的CNN,DeltaCNN,工作和优化的GPU。我们的实现将稀疏激活的潜在节省12498在实践中实现了真正的加速,比最先进的cuDNN密集推理性能高出7倍。本文的主要贡献是:• 我们提出了DeltaCNN,这是第一个具有端到端稀疏数据访问的稀疏CNN,从所有层的输入到输出,包括卷积,池化,激活,上采样,归一化等。DeltaCNN先前输入新的输入更新Delta输入滤波器...先前输出三角洲+的输出新的输出适用于所有具有轻微适应性的CNN,无需重新训练。• 我们通过一种新的内核设计来解决稀疏神经网络的内存带宽和控制流问题,该内核据我们所知,我们开源了第一个用于稀疏输入和输出的CNN运算符的GPU实现。• 我们展示了第一个基于GPU的CNN加速杠杆数据稀疏性的演示,通过将三种类型的GPU上的三个对象检测和人体姿势估计网络加速高达7倍。我们对三种GPU架构的评估表明,DeltaCNN是有效实现的,在没有稀疏性的情况下运行时与cuDNN在稀疏模式下,我们实现了比cuDNN高达7倍的加速比。2. 相关工作最近在视频中利用帧到帧相似性的工作可以粗略地分为两组:优化的模型架构和通过截断无关紧要的更新来利用特征稀疏性。2.1. 高效的视频CNN架构高效的CNN旨在降低网络中最昂贵的部分(骨干)的处理频率。两种路径模型在关键帧上使用细粒度特征生成,在中间帧上使用粗粒度更新路径[9,23]。或者,可以直接调整细粒度特征,例如,通过使用网络输入的光流[16,34]。我们的方法不需要对网络架构进行任何更改,并在需要时自动执行细粒度更新。2.2. 视频中的稀疏性CNN中的数据稀疏性可以理解为特征图中的零值特征。虽然像ReLU这样的激活函数已经导致了一定程度的特征稀疏性,但通常可以通过使用当前帧和前一帧之间的差异作为输入来大大增加视频中的这样,背景和静态特征变为零,可以跳过。这种特性在2D [1,3,11,24]和3D [25] CNN中都得到了利用1 Mac2个MAC2个MAC图1.视频空间稀疏卷积的工作原理。计算当前输入和前一个输入之间的差异由于零值输入对输出没有贡献,因此可以跳过这些值以减少操作的数量。更新截断递归残差模块(RRM)[24]和CBinerse[3]表明,稀疏性可以通过截断不重要的更新而进一步增加,而不会显著损失准确性。与之相反,Skip-Convolution[11]不会截断输入特征,而是输出特征。这可能导致更高的稀疏性,但需要定期进行密集更新(4-8帧)。我们使用这些想法的组合与Skip-Convolution和CBInfer一样,我们使用空间(每像素)稀疏度,因为结构化稀疏度比每值稀疏度更适合SIMD架构像RRM一样,我们决定每个输入像素是否需要更新虽然与跳过卷积相比,具有触发许多输出像素的更新的单个输入像素可能会增加FLOP,但在稀疏模式下实现连续推理而不随时间积累错误方面至关重要缓存先前状态RRM、CBInfer和Skip-卷积缓存来自每个卷积层的先前帧的输入和输出特征图,以处理差异,增加稀疏性,然后将输出与来自先前帧的密集输出卷积之间的所有操作都是密集处理的虽然这种策略减少了FLOP,但它增加了内存传输。为了减少内存开销,[1]建议只在关键卷积层上存储输入和输出缓冲区,并且只使用它们之间的帧差。这种方法不适用于池化或激活函数等非线性层,并可能导致重大错误(见第3.1节)。DeltaCNN稀疏地执行所有操作,仅将输入特征(相机图像)与完整的先前输入进行比较,将稀疏特征更新传播到所有层。密集结果仅在最后一层累积。通过这种方式,我们还可以加速非卷积层,如池化,上采样和激活。此外,我们避免了稀疏和密集计算之间的切换,并且只需要缓存非线性层的累积值,与[3,11,24]相比减少了缓存的数量,而不会损失准确性。12499增量生成稀疏卷积I1C稀疏活动Trunc.F稀疏池稀疏上采样输出累加OI2O2ΔcfI3O3Δcf密集输入密集累加值密集输出稀疏增量稀疏更新掩码截断值图2.使用DeltaCNN对由卷积、激活、池化和上采样层组成的玩具网络进行三帧推理的说明第一帧I1被密集地处理,并且用于初始化密集累加值的缓冲器。在后续帧中,增量生成从当前输入中减去先前输入,以生成更新掩码和仅包含重要像素更新的稀疏增量特征图。 在稀疏卷积之后,导致更新掩码扩大,稀疏激活&截断截断较小的值以增加稀疏性。在最后一层之后,稀疏增量输出被累积到先前的输出缓冲器上,以生成帧Ii的密集输出Oi。2.3. 稀疏数据虽然RRM和Skip-Convolution表明,视频中的稀疏性可以用来显着降低FLOP,但与最先进的密集CNN框架相比,他们的方法无法转化为挂钟时间的改进现有的稀疏卷积实现,如稀疏块网络(SBNet)[26]和子流形稀疏卷积网络(SSC)[10],利用数据稀疏来加速推理,但不是为视频推理而设计的。这两种方法都假设输入数据本质上是稀疏的,比如SSC的3D体积中的手写或对象边界它们不利用任何机制,如缓存来存储先前帧的密集状态,因此不能应用于视频。Pack anddetect[17]仅对关键帧执行全卷积,并对包含先前检测到的感兴趣区域的较小图像进行连续更新不幸的是,打包操作导致每个卷积层的开销CBInfer实现一般稀疏卷积和池化操作优化视频输入。它们执行变化检测、变化索引、特征收集、卷积和每个卷积的特征散射操作。这允许它们利用细粒度稀疏性,但会带来显著的数据移动开销,并且需要卷积算法,与cuDNN等领先实现相比,卷积算法较差。相比之下,我们的方法直接在特征图上执行卷积,而不需要预处理或后处理。与稀疏特征一起映射时,我们在层之间传播更新掩码3. 方法我们提出了DeltaCNN,这是一种端到端的稀疏CNN框架,通 过利用帧到帧 的相似性来加 速视频推理DeltaCNN使用更新掩码来跟踪要处理的像素,从而将所有密集张量DeltaCNN在网络输出变化最小的情况下增加了稀疏性,并且只处理每层的稀疏帧更新。3.1. Delta值传播DeltaCNN的核心功能是通过网络端到端传播稀疏帧更新(见图2)。为了通过添加更新张量来重用先前帧的计算,我们需要支持两个线性(例如,卷积)和非线性(例如,激活)层。卷积的线性卷积(c)是线性算子(见图1),即。c ( x + δx ) = c ( x ) +c ( δx ) .(一)这允许我们使用两个图像之间的差异,称为delta,作为卷积的输入。增量输出可以作为连续卷积的输入,而不需要在多个帧上累积增量更新。然而,大多数激活函数都是非线性的。例如,ReLU激活定义为:fReLU ( x ) = max ( x , 0 ) 。(二)112500||||我激活函数的非线性对通过增量更新来更新先前的结果提出了比如说,fReLU( −1)+fReLU(2)f ReLU(1)。为了解决这一挑战,我们跟踪非线性层的累积对于给定的激活或池化函数f,输出δy定义为δy=f(x+δx)−f(x)(3)其中δx是delta输入。差值δy随后用作后续层的增量输入。每个非线性层存储其自己的缓冲器,该缓冲器保存先前累积的缓冲区在执行密集推断的第一帧期间初始化,并使用后续帧的增量先前累积的输入隐含地包括在它们之前应用的所有偏差。因此,卷积和批量归一化层中的偏差仅应用于第一帧。截断小更新由于激活函数遵循大多数卷积层,并且需要对特征图中的每个像素进行操作,因此将激活和截断合并为单个操作有助于最大限度地减少开销。关于哪些值可以被截断的决定是在每个像素级别上做出的;我们截断给定的像素(将所有通道设置为0),如果maxkδyk,则将其标记为不变。如果有δyk大于1,则像素被标记为已更新,我们使用累加值缓冲器xA,用于存储帧i处的当前值,xA=xA+δx。(四)图3.激活和截断函数的图示 它使用累积值执行激活,截断delta δx输出,并更新累积x A和截断x T值缓冲区。 在这个例子中,ReLU被用作激活函数f,截断阈值f被设置为1。五、彩色图块表示输入、更新状态和输出值之间的3.2. GPU设计注意事项通用GPU允许在许多核心设备上执行任意代码然而,理论上的指令减少通常不会转化为高效的GPU代码。不一致的执行路径和不一致的内存访问,cess可能会导致显着放缓。GPU上高卷积性能的关键是优化内存访问并生成局部一致的控制流。更新掩码虽然通过网络传播的变化是稀疏的,但我们将delta特征存储为GPU实现中相同形状的密集张量;零表示可以忽略的位置。要将前一层这样做的一种方法是在每个层开始时对delta输入的所有值进行零检查,如以前的工作[3,11,24]所做i i−1然而,随着时间的推移,小的截断可能会增加,并导致每帧的准确性下降例如,当太阳慢慢升起,照亮室外场景时,帧与帧之间的差异太小而不能触发更新,并且累积的错误在被丢弃一次之后不能被校正 为了解决这个问题,我们引入了第二个缓冲区xT,其中包含自上次更新以来累积的截断。截断值xT与增量值δx和累加值xA一起用于激活函数:δy= f(x A+ x T+ δx)− f(x A)。(五)当像素被截断时,δx被添加到截断值缓冲器xT上。当像素被标记为已更新时,使用为了避免加载和检查整个输入的更新,我们与delta特征图一起传播对于每一层,在加载任何其他数据之前,我们首先检查所有输入像素的更新掩码,并为整个图块(见下文)决定是否跳过所有内存操作和计算。不管是否跳过一个图块,我们都为后续层写入更新掩码使用更新掩码,我们不需要将特征映射中未处理的值初始化为零,因为它们永远不会被读取,从而进一步减少内存带宽。卷积层通常构成CNN中的大部分虽然我们为各种层类型提供了优化的实现,但我们的设计讨论主要集中这些因素自然会转化为...xA= xAii−1+xTi−1 +δx(6)晚于其他图层类型。一种常见的优化内存重用和损失的方法并且截断值缓冲器xT被设置为零(参见图3)。使用这种技术,DeltaCNN只需要一个密集的初始帧,并且可以无限期地应用稀疏更新,而不会随着时间的推移积累错误。2D卷积中的cality是以块的形式处理图像,每个块由协作线程阵列(CTA)处理通过这种方式,输入特征和过滤器参数可以保持在本地并多次重复使用。切片大小是在0 0F1 2-1 03 -2|δ���|> ε+1 -44 -1个1 0F4 03-2 δ���0 0005 -3-4-1个4 -1个4 -24 -2δ���1 -1个- 一个1 2-4 - 1输入状态输出新状态12501一种平衡内存访问和并行级别之间的折衷的方法更大的图块减少了内存访问,但需要更多的资源。以前关于稀疏卷积的工作主要集中在FLOP减少上,但在实践中几乎没有显示出挂钟时间的在细粒度级别上利用稀疏性来避免不必要的乘法需要许多额外的条件跳跃,并且可能导致分散的存储器操作,即使在可以跳过大多数FLOP的情况下,也容易花费比它们节省的时间更多的时间。每图块稀疏性与子图块稀疏性代替细粒度条件,我们在图块级别上采用稀疏性。在甚至仅更新图块的一个像素的情况下,成本几乎与更新所有像素时一样高,因为需要加载所有滤波器参数并且需要处理和写入多个输出例如,考虑5x5输出像素的瓦片大小,具有256个通道的3x3卷积内核在该示例中,一个CTA加载12,544个输入特征和589,824个滤波器参数,并且每个图块执行14,745,600次乘法。如果任何输入为非零,则仍然需要大部分内存传输;只有乘法的数量可能会减少。控制流简化卷积操作涉及输入、内核和输出;在编译时了解这三个组件的关联及其在寄存器中的内存位置,可以过多的条件控制流决定是否跳过子图块级别的像素需要加载变量、执行比较和条件跳转。这会使执行的指令数增加许多倍,从而降低性能。为了避免细粒度的条件跳跃,我们提出了一个混合内核,决定三种处理模式:跳跃,密集和非常稀疏。没有活动输入像素的图块跳过所有加载和计算。具有五个或更多活动输入像素(最多64个)的图块被密集处理,而没有任何条件跳转。具有一到四个更新的输入像素的图块使用一个特殊的高度优化的内核:它只在从更新掩码收集的更新像素的短阵列上迭代此外,在此模式下,我们仅加载处理特定图块所需的滤波器权重。通过这种方式,我们可以将内存事务减少多达8倍,例如。当在左上角只有一个更新时,它只会影响左上角的输出像素。在补充材料中进一步评估子瓦片稀疏性的优点和缺点。3.3. 截断无关紧要的更新卷积对每一层都扩大更新掩码。输入中的单个像素更新在三个3x3卷积层之后迅速扩展到49个像素。并非所有更新对网络输出的贡献相等,我们截断不重要的更新以增加稀疏性,从而加速推理。DeltaCNN将像素的最大范数与阈值kmax进行比较,以确定像素更新是否可以被截断。通常,理想的带宽会因网络甚至层而异。我们在训练集的一个小子集上以从前到后的方式自动调整每个层从一个较低的带宽开始,我们迭代地增加层我们允许每个截断层对输出误差的贡献相等一旦找到低于此余量的最高阈值,我们就冻结该层实验表明,在调整阈值时,我们还需要限制准确度的提高,以避免在训练集的小子集上过拟合。3.4. 执行为了不仅加速卷积,而且加速整个网络,尽可能稀疏地执行尽可能多的操作至关重要。因此,DeltaCNN为当今CNN中最常见的层提供了稀疏实现我们提供了CUDA内核(作为cuDNN替换)和Py- Torch扩展,可以直接替换相应的PyTorch层,重用原始参数和模型逻辑。4. 评价我 们 在 两 个 常 见 的 图 像 理 解 任 务 上 评 估 了DeltaCNN:人类姿态估计(Human3.6M1 [15])和对象检测(MOT16 [7]和WildTrack [4])。在这两种情况下,我们使用来自图像数据集的预训练权重在视频数据集上训练CNN。训练后,卷积层和批归一化层被融合在一起,以提高基线和DeltaCNN的只有DeltaCNN的第一层和最后一层对密集数据进行操作,分别将密集视频输入转换为稀疏增量特征,并将增量转换为密集累积输出在所有情况下,我们使用多个随机选择的训练序列,每个序列由100帧组成,并使用自动调整的阈值对所有帧的损失进行平均所有层的最大损耗增加总共设置为3%,其中每层仅允许增加该值的一小部分损耗。对于第一截断阈值,即,输入视频在ImageNet [8]颜色范围上归一化,我们使用增加的阈值来抑制背景噪声,但确保保持足够的灵敏度1人类3.6M数据由Math- ias Parger接收并独家访问Meta无法访问作为本研究一部分的数据12502输入(a)带膨胀的掩码(b)不带膨胀的掩码图4. 使用阈值0生成的输入掩码。5和7像素膨胀(a)并且使用阈值λ = 0。15不扩张(b)。扩张版本的运行速度提高了8%,并且在MOT16数据集上获得了稍微更准确的结果。捕 获 重 要 的 运 动 ( Human3.6M 为 0.3 , MOT16 和WildTrack为0.5)。然后,所得掩模被扩大7个像素,以还包括相邻区域中的较小更新在图4中评估了与没有膨胀的小阈值相比,在输入图像上使用大阈值连同膨胀的效果。4.1. 人体姿态估计对于人体姿态估计,我们使用两种不同的CNN架构 : HRNet [29]和 Pose-ResNet [32]。 这 些 网 络 使 用ImageNet [8]上预 先训练 的权重 进行初 始化, 并在Human3.6M [15] 上 进 一 步 训 练 , 输 入 分 辨 率 为384x384。Human3.6M设计为基准,并且不公开提供用于测试集的地面真实姿态。由于我们的评估包括逐帧分析准确性,FLOP和加速,因此我们使用部分训练集(Subject S11)进行测试,并在训练期间排除它们。测试集包含平均长度为1927帧的120个视频,因此作为DeltaCNN在长时间评估中累积了多少错误的参考。4.2. 对象检测对于对象检测,我们使用EfficientDet [31],基于参数和FLOPs高效的EfficientNet架构[30]。该网络在两个不同的数据集上进行训练:多对象跟踪16(MOT16)[7]和WildTrack [4]。在这两种情况下,我们在视频数据集上训练了Efficient-Det的多个配置,训练/测试分割为80/20,并使用在COCO数据集上预先训练的权重初始化了网络[21]。WildTrack提供的视频帧速率为每秒60帧(FPS),但提供的地面实况注释仅使用2 FPS的帧速率为了加速和准确性评估,我们向CNN馈送60FPS图像以模拟实时摄像机输入,但仅报告每30帧的准确性。 这两个数据集都记录在16:9的宽高比。由于EfficientDet期望1:1输入,因此我们用黑色像素填充图像的其余部分以进行准确性评估。然而,在这种情况下,43%的图像将永远不会改变,因此导致不公平的优势,图5.使用DeltaCNN加速MOT 16和WildTrack上的第一行显示了使用DeltaCNN(蓝色)和密集引用网络(白色)的预测边界框。第二行显示了更新每个像素的卷积层的数量。性能比较。我们通过均匀地放大图像并执行中心裁剪来测量帧率,从而实现公平竞争4.3. 硬件性能评估是在三个具有不同功率目标和不同硬件代的设备上进行的:1)Jetson Nano:一个低端移动开发套件,功率目标为10W,128个CUDA内核。2)戴尔XPS 9560:配备640个CUDA核心的Nvidia GTX 1050笔记本电脑。3)台式PC:配备 10496个CUDA 内核的Nvidia RTX 3090的高端台式PC。在GTX 1050和RTX3090上使用32位浮点执行评估在Jetson Nano上,我们使用16位浮点来减少权重和缓存的内存开销,并使FLOPS吞吐量加倍。5. 结果在分析DeltaCNN的特性和稀疏更新对时间数据的副作用之前,我们评估了人类姿势估计和对象检测5.1. 人体姿态估计对于人体姿态估计,我们将准确度报告为在头部段长度(PCKh)[2],并比较不同批量大小的吞吐量我们的结果表明,与cuDNN和以前的工作相比,DeltaCNN显著加快了推理调整CBIn- fer为了强调DeltaCNN即使强制执行更高的准确性,我们仍然比CBInfer速度快3倍。值得一提的是,由于CBInfer12503在对步幅、扩张和深度卷积的支持方面,14%的HRNet我们在所有GPU层上加速推理,在较慢的设备上具有像RTX 3090这样的高端GPU需要更大的批处理大小才能从跳过单个瓦片中受益这是因为RTX 3090拥有超过10000个计算核心,而Jetson Nano只有128个当处理单个低分辨率输入图像时,这些GPU的可用计算资源过剩意味着通过跳过瓦片来释放它们几乎没有区别。对HR-Net的所有帧和内核的详细评估表明,在我们的方法中,卷积层中平均只有6%的输入像素16%的区块被处理,导致FLOP减少了84%,尽管读取和更新额外缓冲区的开销,但总体内存传输减少了21%5.2. 对象检测对于对象检测,我们使用平均精度(AP)指标来衡量准确性。与HRNet和Human3.6M相比,EfficientDet模型的计算量很小,两个数据集包含更密集的运动(见图5)。相结合,这使得它更难以加速相比,一个沉重的网络和小和集中帧更新。尽管如此,我们仍然能够在两个数据集和所有设备上以几乎相同的准确度将cuDNN基线的推理加速2.5倍至6.7倍由于CBInfer不支持strided和dependency卷积(第5.1节),三分之一的层是用cuDNN后端处理的。与密集版本相比,CBInfer努力加速轻量级网络,在某些情况下比cuDNN慢2倍以上,即使只替换了2/3的层,FLOPs减少了65%EfficientDet和EfficientNet提供多种网络配置(d 0-d7),使用不同的分辨率、层数和通道数。这使我们能够证明DeltaCNN并不总是需要交易准确性来加速。DeltaCNN没有为d0配置使用cuDNN后端,而是允许更准确的预测(AP@0.5为64.0%,而MOT16数据集为55.6%),d1配置的帧速率略高(RTX 3090为+5%,JetsonNano为+279%)。在MOT16数据集上,我们处理了密集基线的近60%的然而,平均而言,我们能够跳过超过60%的瓦片,将内存带宽减少60%,从而在密集基线上实现超过2倍的加速。补充材料中报告了两种数据集和两种网络配置的准确性和帧速率的详细评估。(a)I1密集我们的(b)I2密集(c)I2我们的(d)I2更新图6.由于时间稳定性,DeltaCNN在某些情况下可以提高跟踪精度在这里,密集参考混淆了帧 I2中的左臂和右臂,而DeltaCNN通过重用来自I1的缓存信息正确预测了所有关节位置。白色、绿色和红色点分别表示基本事实、正确和不正确的预测。图像(d)显示了使用DeltaCNN在所有HRNet层上平均在I25.3. 其他评价除了速度和精度上的差异外,时间重用和更新截断也会产生副作用。当我们设定最小化更新次数的目标时,预测在时间上 变 得 更 例 如 , 对 于 使 用 HRNet 的 姿 态 估 计 , 与DeltaCNN相比,密集基线产生的联合位置更新当关节是静态的时,这种效果节奏稳定性甚至可以帮助解决难以跟踪的姿势。微小的帧间差异可能会导致密集推理的结果非常不同,而DeltaCNN主要依赖于先前帧的信息,并且只应用稀疏更新(图6)。阈值分析分析调整后的阈值可以揭示有关每个层的贡献或敏感层对输入 更新的反应的有趣见解。在EfficientDet的情况下,Efficient-Net主干的某些分支在第一帧之后完全关闭,因为逐帧更改不会影响结果。EfficientNet具有挤压和激发层,使用平均池化将特征图缩小到单个像素。两个卷积和两个激活函数被应用于该像素,然后它被用于缩放原始特征图的特征。由于在几秒的序列上的平均池化对于所有帧返回几乎相同的结果,因此在挤压和激励分支中的第一激活/截断层中截断所有更新。开销表1显示DeltaCNN的开销非常低。在密集模式下,我们使用负阈值来保证每次都将重新处理所有像素,从而允许与cuDNN进行比较。像在稀疏模式下,我们使用增量值,累积和截断值缓冲区,并执行所有步骤,包括截断,以包括所有开销。在大多数情况下,特别是对于较小的批量,我们12504CNN后端PCKh@0.5PCKh@0.2 GFLOPSJetson NanoGTX1 050b=1GTX1 050b=4RTX 3090 b=1RTX 3090 b=32FPS加速比FPS加速比FPS加速比FPS加速比FPS加速比cuDNN97.29%87.25%47.10.71.04.71.05.21.010.11.01051.0HRNet我们的密集1.11.56.81.47.11.426.92.797.60.9我们的=∞百分之二十八点零七13.88%-6.79.630.66.593.718.031.83.19499.0百分之九十六点九四85.00%13.91.52.14.91.010.72.16.70.71251.2CBInfer我们的稀疏97.27%86.33%7.74.76.720.14.326.55.130.53.04334.1cuDNN95.78%82.79%27.21.51.07.71.010.41.030.41.02151.0ResNet我们的密集1.71.19.21.29.80.963.32.11870.9我们的=∞百分之二十七点九七13.77%-13.48.930.84.042.54.167.62.218388.595.82%82.68%17.62.61.75.60.716.61.616.60.52361.1CBInfer我们的稀疏95.82%82.68%11.65.73.820.52.727.52.667.42.25772.7表1.用于Human3.6M数据集上姿势估计的不同CNN后端的速度和准确性比较用于更新截断的同一组自动调整阈值用于所有设备和批量大小b。即使采取额外的步骤,也仍然优于cuDNN。这可能部分 是 由 于 静 态 开 销 和 不 同 的 并 行 化 策 略 , 导 致DeltaCNN在大型GPU上提供更多的利用率然而,这些评估表明,DeltaCNN不需要最低水平的稀疏性来达到开销和增益之间的盈亏平衡点。由于DeltaCNN存储累积和截断的值,内存开销随批量大小线性扩展,并且大于评估密集版本所需的内存。回想一下,与密集评估相比,DeltaCNN仍然减少了内存带宽根据网络架构,当最大可能的批处理大小太小而无法充分利用GPU时,存储开销可能会降低收益。与此同时,DeltaCNN通过HRNet和Effi-cientDet将CBInfer的缓存大小6. 讨论我们的评估表明,DeltaCNN可以加速视频推理,但精度略有下降。由于DeltaCNN的开销比以前的工作要少得多,因此我们的实现可以加速昂贵的CNN,就像FLOPs高效的CNN,具有稀疏或密集更新的数据集以及低端和高端GPU一样。可以调整延迟DeltaCNN甚至可以通过允许使用更大的网络来提高相同帧速率下的准确性。平铺卷积我们的卷积以平铺的方式进行处理,输入上的单个像素更新会导致整个平铺被处理。与CBInfer相比,这减少了非结构化稀疏性的计算节省,因为CBInfer可以控制每个输出像素的稀疏性。然而,正如CBInfer的作者所说,帧到帧的更新通常是结构化的,每像素稀疏主要有助于加速更新区域的光晕[3],这有助于12505仅更新像素的一小部分同时,我们的方法实现了密集推 理 的 最 先 进 性 能 , 使 我 们 能 够 加 速 MOT16 和WildTrack数据集的非常密集的场景。时 间 稀 疏 CNN 的 一 个 主 要 限 制 , 因 此 也 是DeltaCNN的一个主要限制,是它们只能在固定的摄像机输入上即使是很小的相机运动也会导致几乎密集的更新,至少在前几个图层上是这样。具有较低分辨率输入的后续层通常能够截断部分更新,但总体加速仍然恶化。时间稀疏CNN的另一个缺点是内存开销随着批量大小线性增加。与RRM、Skip-Convolutions和CBInfer相比,DeltaCNN需要的缓存内存大约少20%。不过,内存可能是一个限制因素,特别是在低端设备上。如果设备内存不足,可以通过省略某些激活层上的增量在这种情况下,可以以更大的更新密度为代价来避免截断值缓冲器xT7. 结论在本文中,我们描述了DeltaCNN,一种用于加速视频输入的CNN推理的方法和相应的实现。据我们所知,DeltaCNN是第一个提供稀疏帧更新端到端传播的解决方案,也是第一个在实践中实现加速的方法。通过针对GPU优化的设计,我们能够超越最先进的密集推理框架和现有的稀疏实现。我们的方法可以移植到针对CNN加速优化的其他平台和处理器上,因为卷积的核心不知道稀疏性,并且通过完全跳过区块来获得加速,而不会引入大量的处理开销。12506引用[1] Udari De Alwis和Massimo Alioto。TempDiff:CNN中基于时间差异的特征映射级稀疏性归纳,内存开销为4%。2021 IEEE第三届国际人工智能电路和系统会议,AICAS 2021,第1-4页,2021年6月。一、二[2] Mykhaylo Andriluka,Leonid Pishchulin,Peter Gehler,and Bernt Schiele. 2D人体姿势估计:新的基准和最先进的 分 析 。 Proceedings of the IEEE Computer SocietyConference on Computer Vision and Pattern Recognition,pages 3686-3693,2014. 6[3] 卢卡斯·卡维杰利和卢卡·贝尼尼。CBinerse:利用帧到帧局部性实现视频流上的快速卷积网络推理。IEEETransactionsonCircuitsandSystemsforVideoTechnology,30(5):1451一、二、四、八[4] Tatjana Chavdarova、Pierre Baque、Stephane Bouquet、Andrii Maksai 、 Cijo Jose 、 Timur Bagautdinov 、 LouisLettry、Pascal Fua、Luc Van Gool和Francois Fleuret。WILDTRACK:用于密集无脚本行人检测的多摄像头高清 数 据 集 。 Proceedings of the IEEE Computer SocietyConference on Computer Vision and Pattern Recognition,第5030-5039页,2018年。五、六[5] Yunji Chen,Tianshi Chen,Zhiwei Xu,Ninghui Sun,and Olivier Temam. DianNao家族:用于机器学习的节能硬件加速器。Communications of the ACM,59(11):105-112,2016. 1[6] Yunji Chen , Tao Luo , Shaoli Liu , Shijin Zhang ,Liqiang He,Jia Wang,Ling Li,Tianshi Chen,ZhiweiXu,Ninghui Sun,and Olivier Temam.大电脑:机器学习超级计算机。Proceedings of the Annual InternationalSymposium onMicroarchitecture , MICRO , 2015-January:609Jan 2015. 1[7] 帕特里克·登多弗,阿尔霍萨·奥塞普,安东·米兰,康拉德·辛德勒,丹尼尔·克雷默斯,伊恩·里德,斯特凡·罗斯和劳拉·里尔-泰·克斯。MO TChallenge:单摄像机多目标跟踪的基准国际计算机视觉杂志,129(4):845-881,2021。五、六[8] Jia Deng,Wei Dong,Richard Socher,Li-Jia Li,KaiLi,and Li Fei-Fei.ImageNet:一个大规模的分层图像数据库。第248-255页,2010年3月。五、六[9] Zhipeng Fan,Jun Liu,and Yao Wang.用于单目3D手部姿态估计的自适应计算高效网络。技术报告,2020年。一、二[10] 本杰明·格雷厄姆、马丁·恩格尔克和劳伦斯·范德马滕。基于子流形稀疏卷积网络的三维语义分割IEEE计算机协会计算机视觉和模式识别会议论文集,第9224-9232页,2018年11月。3[11] Amirhossein Habibian,Davide Abati,Taco S.科恩和巴巴克·埃赫特沙米·贝诺尔迪。用于高效视频处理的跳过卷积。在IEEE/CVF计算机视觉和模式识别会议论文集(CVPR),第2695-2704页,2021年6月。一、二、四[12] 宋 汉 , 刘 星 宇 , 毛 慧 子 , 蒲 景 , 阿 尔 达 万 , 马克.Horowitz,and William J.Dally EIE:高效12507基于压缩深度神经网络的推理引擎2016年第43届计算机体系结构国际研讨会,第243-254页,2016年。1[13] Song Han、Jeff Pool、John Tran和William J.Dally 学习权值和连接以获得高效的神经网络。神经信息处理系统进展,2015-2015年1月:1135-1143。1[14] Itay Hubara 、 Matthieu Courbariaux 、 Daniel Soudry 、Ran El-Yaniv和Yoshua Bengio。量化神经网络:用低精度 权 重 和 激 活 训 练 神 经 网 络 。 Journal of MachineLearning Research,18:11[15] Catalin Ionescu , Dragos Papava , Vlad Olaru , andCristian Sminchisescu. Human3.6M:大规模数据集和预测方法,用于自然环境中的3D人体感知。技术报告7,2014。五、六[16] Samvit Jain , Xin Wang , and J
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功