更快的神经网络直接从JPEG
Abstract
卷积神经网络(cnn)的简单、优雅的训练方法直接从RGB像素获得了压倒性的经验成功。但是否可以通过使用不同的输入来提高网络的性能表示吗?在本文中,我们提出并探索了一个简单的想法:训练cnn直接对分块离散余弦变换(DCT)系数进行计算并可在JPEG编解码器的中间。直观地,当处理JPEG使用cnn的图像,似乎没有必要解压块的频率将它从CPU转移到GPU,然后用CNN来处理它,它会学习一些类似于变换的东西回到第一层的频率表示。为什么不跳过这两个步骤和把频域直接输入网络?在本文中,我们修改libjpeg直接生成DCT系数,将ResNet-50网络修改为适应不同大小和跨度的输入,并评估性能ImageNet。我们找到了更快更准确的网络,以及ResNet-50的精度差不多,但速度是1.77倍。
1 Introduction
神经网络训练的惊人进展,尤其是卷积神经网络[14],在各种任务上获得良好的性能[13,19,20,10]已经导致广泛的在学术界和工业界采用这种模式。当cnn使用图像数据作为训练在输入时,数据通常以红-绿-蓝(RGB)像素数组的形式提供。卷积的层开始从像素开始计算征,早期的层通常学习Gabor过滤器和之后的层次学习更高层次、更抽象的特征[13,27]。
在本文中,我们提出并探索了一种简单的思想,用于加速神经网络训练和推理,在常见的场景中,网络应用于JPEG格式的图像编码。在这种情况下,图像通常会从压缩格式解码为RGB像素数组,然后输入神经网络。在这里,我们提出并探索一种更直接的方法。首先,我们修改libjpeg库以仅部分解码JPEG图像,从而得到一个图像表示,该图像表示由包含离散余弦变换(DCT)系数的三张量组成。由于JPEG编解码器的工作方式,这些张量具有不同的空间分辨率。然后,我们设计和训练一个网络,直接从这个表示操作;正如人们可能会怀疑的那样,这最终证明是相当有效的。
Related Work
当训练和/或推理速度至关重要时,许多工作都集中在加速计算,通过减少参数数量或使用图形处理单元(GPU)上计算效率更高的操作[12,3,9]。一些研究使用空间频率分解和其他压缩表示进行图像处理,而不使用深度学习[22,18,8,5,7]。其他研究将深度学习与JPEG以外的压缩表示相结合,取得了不错的效果[24,1]。和我们最相似的作品 来自[6]和[25]。[6]序列对DCT系数的压缩不是通过JPEG编码器,而是通过一种更简单的截断方法。[25]训练一个类似的输入表示,但不采用完整的早期JPEG堆栈,特别是不包括Cb/Cr下行采样步骤。因此,我们的工作站在许多先前的研究的肩膀上,将它们扩展到完整的早期JPEG堆栈,到更深入的网络,并在更大的数据集和更困难的任务上进行训练。我们仔细地安排了相关手术的时间,并进行了必要的消融研究,以了解从哪里产生了性能改进。
图1:(a) JPEG图像编码的三个步骤:首先将RGB图像转换为YCbCr颜色空间,对色度通道进行下采样,然后通过DCT对通道进行投影并量化,最后对量化后的系数进行无损压缩。详见第2节。(b) JPEG解码遵循逆过程。在本文中,我们只进行解码的第一步,然后将DCT系数直接输入神经网络。这在三个方面节省了时间:跳过普通JPEG解码的最后步骤,从CPU传输到GPU的数据比原来小了两倍,图像已经在频域。在某种程度上,神经网络的早期层已经学习了到频域的转换,这允许使用更少层的神经网络。
本文的其余部分做出了以下贡献。我们更详细地回顾JPEG编解码器,对过程中具有适合神经网络训练的特征的步骤给出直观的理解(第2节)。因为Y和Cb/Cr DCT块具有不同的分辨率,所以我们考虑的是不同的受resnet - 50[10]启发的架构,通过该架构,来自这些不同渠道的信息可以被组合在一起,每个不同的速度和性能注意事项(秒。3秒。5)。事实证明,一些组合产生更快的网络在同一性能基线RGB模型或更好的性能在一个更温和的速度获得(图5)。在DCT更快更准确地发现网络空间,我们问,是否可以简单地找到附近的ResNet架构,在RGB空间中运行,表现出同样的性能或速度提升。我们发现对ResNet-50的简单突变不会产生竞争性网络(第4节)。最后,考虑到DCT表示的优越性能,我们进行了消融研究,以检查这是否是由于不同的颜色空间或特定的第一层过滤器。我们发现精确的DCT变换工作得非常好,甚至比尝试学习相同维度的变换(第4.3节,第5.3节)更好!因此,其他人可以重复实验,并从本文中发现的速度提高中获益,我们在github.com/uber-resear… 发布了我们的代码。
2 JPEG Compression
2.1 The JPEG Encoder
JPEG标准(ISO/IEC 10918)创建于1992年,是1986年[11]开始努力的结果。JPEG标准支持8位灰度图像和24位彩色图像,尽管已有30多年的历史,它仍然是消费电子产品和互联网上的主要图像代表。在本文中,我们只考虑24位彩色版本,它以每个颜色通道8位编码的RGB像素开始。
3 Designing CNN models for DCT input
图2:(a) JPEG标准[26]中用于分解单个通道8×8像素块的64个标准正交DCT基向量。(b)由在RGB像素[10]上运行的基线ResNet-50网络学习到的64个尺寸为7×7的第一层卷积滤波器。(c) 64个大小的卷积滤波器8×8通过第4.3节描述的DCT-Learn网络从随机权重开始学习。(d)来自DCT-Ortho网络的64个卷积滤波器,类似于(c),但增加了标准正交正则化。
在本节中,我们将描述通过传统的CNN架构(如resnet - 50[10])方便采用DCT系数的变换。需要一些仔细的设计,如DCT系数从Y通道,DY,一般比从色度通道,DCb和DCr,有更大的尺寸,如图1a所示,其中实际形状是根据图像输入尺寸224 × 224计算的。因此,在得到的激活被连接并输入到传统CNN之前,有必要进行特殊的转换来处理空间维度匹配。我们考虑两个抽象变换(T1, T2)分别作用于不同的系数通道上,目的是得到三个激活aY、aCb和aCr之间的空间大小匹配,其中aY = T1(DY), aCb = T2(DCb), aCr = T2(DCr)。图3说明了这个过程。
除了确保卷积特征图大小对齐之外,重要的是要考虑变换结束和整个网络中每个单元的接收域大小和步幅(以下用R和S表示)。而对于采用RGB输入的典型网络,每个单元的接受域和步幅在每个输入通道(红、绿、蓝)上是相同的,这里对于信息而言,原始像素空间考虑的接受域可能是不同的 通过Y通道而不是Cb和Cr通道,这可能不是我们想要的。我们检查产生的大小表示DCT操作,当与同一组参数的ResNet-50在不同的块(下表),我们发现DY的空间维度匹配块3的激活维度,而及的空间维度和DCb匹配块4。这启发我们在设计网络时跳过一些ResNet块 架构,但跳过而不进行进一步的修改会导致网络功能更弱(更少的层和更少的参数),以及具有更小的接受域的最终网络层。
变换(T1, T2)是通用的,允许我们使DCT系数达到兼容的大小。在确定转换时,我们考虑了以下设计概念。变换可以是(1)非参数和/或手工设计的,如对原始DCT系数的上或下采样,(2)学习的,并可以简单地表示为卷积层,或(3)层的组合,如ResNet块本身。我们从最简单的开始,探索了七种不同的变换方法(T1, T2) 上采样到反褶积,并与后续ResNet块堆栈的不同选择相结合。我们将在补充信息的第S1节中详细描述每一项:
-
UpSampling。色度DCT系数DCb和DCr通过将像素的高度和宽度复制到DY的维度上进行上采样。然后将这三个节点进行信道级联,并在进入ResNet ConvBlock 3 (CB3)之前通过批处理归一化层,但步长为1,然后是标准CB4和CB5。
-
UpSampling-RFA。这个设置类似于UpSampling,但这里我们保留了ResNet CB2(而不是删除它)和CB2和CB3,以便它们模仿在原始ResNet-50块中观察到的R和S的增加;我们称之为“感知感受野”或RFA。如图4所示,在没有进行此修改的情况下,R中从输入到第一个块的跳转是很大的,网络后面的R永远不会像基线ResNet中那样大(绿线)。相反,保持CB2但降低其步幅,向大R的过渡更加渐进,当达到CB3时,R和S通过其余层匹配基线ResNet。该体系结构如图3b和图S1所示。
-
Deconvolution-RFA。上采样的另一种选择是可学习的反褶积层。在本设计中,我们在DCb和DCr上使用两个独立的反褶积层来增加空间尺寸。设计的其余部分与UpSampling-RFA相同。
图3:(a)原始ResNet-50架构[10]的第一层。(b)用28 × 28 × 64和14 × 14 × 64的系数DY、DCb和DCr说明了UpSampling-RFA的体系结构。缩写NT和U分别表示No Transform和Upsampling操作。(c) Late-Concat架构描述的是亮度系数DY通过ResNet Block 3,而色度系数通过单卷积。与色度路径相比,这导致沿亮度路径额外的总计算,而且往往工作得很好。
-
降采样相对于在空间上对较小的系数进行上采样,另一种方法是用卷积层对较大的DY进行下采样。设计的其余部分与UpSampling类似,但做了一些更改以处理更小的输入空间大小。正如我们将在第5节中看到的,这个网络在更小的总输入上操作会导致更快的处理,但代价是更高的错误。
-
Late-Concat。在本设计中,我们通过ResNet-50的两个convblock (CBs)和三个identityblock (IBs)单独运行DY。DCb和DCr在与DY路径连接之前,要并联通过一个CB。然后,在CB4之后,将连接的表示送入标准的ResNet堆栈。该体系结构如图3c和图S1所示。其效果是沿着亮度路径比色度路径额外的总计算量,结果是一个具有良好性能的快速网络。
-
Late-Concat-RFA。这个感知接收域的Late-Concat版本将DY通过三个具有内核大小的CBs,并进行了调整,使R的增加模仿了原始ResNet-50中的R。并行的DCb和DCr在连接到DY路径的结果之前采用与Late-Concat相同的路径。平均感受野的比较如图4所示,可以看到,与Late-Concat- rfa相比,Late-Concat- rfa的感受野增加更为平滑。如图S1所示,由于空间尺寸小于标准ResNet,我们在早期块中使用了更多的通道。
-
Late-Concat-RFA-Thinner。这种架构与Late-Concat-RFA相同,但信道数量有所修改。在DY路径的前两个CBs中信道数量减少,在第三个CBs中信道数量增加,将信道计数从{1024,512,512}更改为{384,384,和768}。DCb和DCr组件通过256通道的CB馈电,而不是512通道。网络的所有其他部分都与Late-Concat-RFA相同。这些更改是为了保持Late-Concat- rfa模型的性能,同时获得一些Late-Concat的速度优势。如图5所示,它达到了一个吸引人的平衡。
图4:每个ResNet块内接受域大小的平均值与相应的块步幅。两个轴的刻度都是对数。报告了一些基于DCT的架构的测量结果,并将其与ResNet-50中观察到的感受野生长进行了比较。这些图强调了接受域感知(RFA)版本的基于DCT的基础架构如何允许类似于在基线网络中观察到的转换。
4 RGB Network Controls
正如我们将在第5节和图5中观察到的,许多以DCT为输入的网络比基准的ResNet-50 RGB的错误更低和/或更高的速度。在本节中,我们将检查这是否仅仅是由于对架构进行了许多调整,其中一些恰好比基准的ResNet工作得更好。在这里,我们从一个基线ResNet开始,并尝试稍微改变架构,以降低错误和/或更高的速度执行。输入的是尺寸为224 × 224 × 3的RGB图像。
4.1 Reducing the Number of Layers
首先,我们测试在ResNet-50中去除卷积层的简单想法。我们从第2块和第3块中逐次移除Identity块,当6个层被移除时,将产生6个实验。我们从不移除block 2和block 3之间的卷积层,以保持每个block中的通道数量和表示大小不变。
在这一系列实验中,首先去掉Block 2中的第一个标识层(ID)。其次,删除了第一个和第二个ID层。实验继续进行,直到Block 2和Block 3的所有3个ID层都被移除。在最后的配置中,网络与上采样架构,其中RGB信号经过少量卷积转换为28 × 28 × 512的表示尺寸。RGB输入经过以下一系列层:卷积,最大池化,Block 3的最后一个身份层。我们可以在图5中“Baseline, Remove ID Blocks”(6个灰色方块)的图例中看到推理速度和精度之间的权衡。如图所示,网络速度会稍微快一些,但准确度会大幅下降。
4.2 Reducing the Number of Channels
由于减少层数效果不佳,我们还研究了细化网络:减少每一层的通道数以加速推断。最后一层全连接层被修改以适应其输入层的大小,同时保持输出数量不变。我们建议用原来的信道数除以一个固定的比率来减少信道数。我们用{1.1,√2,2}进行了三个实验。速度或GFLOPS与精度之间的权衡在图5的图例“减少的通道#”下显示。随着层数的减少,网络的速度会稍微快一些,但准确度会大大降低。也许这两个结果都被怀疑过,因为ResNet-50的作者可能已经很好地调整了网络的深度和宽度;然而,重要的是要验证观察到的性能改进不能通过这种简单得多的方法获得。
4.3 Learning the DCT Transform
最后一组实验——如图5所示为四个“YCbCr像素,DCT层”菱形——说明我们是否可以获得与DCT架构类似的好处,但从RGB像素开始,使用卷积层来精确或近似地复制DCT变换。首先将RGB图像转换为YCbCr空间,然后通过卷积层独立馈电每个通道。为了模拟DCT,将卷积滤波器的大小设置为8×8,步幅为8 64输出通道(或在某些情况下:更多)被使用。结果的激活在被输入到ResNet Block 2之前被连接起来。在DCT-Learn中,我们随机初始化过滤器并以标准方式训练它们。在DCT- ortho中,我们将卷积权向标准正交规格化,如[2]所述,以鼓励它们不丢弃信息,受到DCT变换的标准正交的启发。在DCT- frozen中,我们只使用精确的DCT系数而不进行训练,在DCT-Frozenx2我们将步幅修改为4而不是8,以增加该层的表示尺寸,并允许滤镜重叠。令人惊讶的是,尽管没有反卷积rfa方法的加速,但平均运行三次以上时,该网络的性能与其他最佳方法不相上下(6.98%)。这很有趣,因为它违背了目前流行的网络设计原则:第一层过滤器是大的而不是小的,是硬编码的而不是学习的,在YCbCr空间上运行而不是RGB,并且深度处理通道(单独处理)而不是一起处理。未来的工作可以评估我们应该在何种程度上采用这些非典型的选择作为标准做法。