Faster Neural Networks Straight from JPEG
论文链接 :Faster Neural Networks Straight from JPEG (neurips.cc)
作者:Lionel Gueguen,Alex Sergeev,Ben Kadlec,Rosanne Liu,Jason Yosinski
机构:Uber,Uber AI Labs
关键词:DCT,CNN,JPEG,图像编码
参考文献:Gueguen L, Sergeev A, Kadlec B, et al. Faster neural networks straight from jpeg[J]. Advances in Neural Information Processing Systems, 2018, 31.
代码链接:https://github.com/calmevtime/DCTNet
摘要
直接从RGB像素训练卷积神经网络(CNNs)的简单、优雅的方法在经验上取得了压倒性的成功。但是,通过使用不同的输入表示,是否可以从网络中挤出更多的性能?在本文中,提出并探索了一个简单的想法:直接在JPEG编解码器中间计算并可用的分块离散余弦变换(DCT)系数上训练CNN。直观地说,当使用CNN处理JPEG图像时,似乎没有必要将逐块频率表示解压缩为扩展的像素表示,将其从CPU搬到GPU,然后使用CNN进行处理,该CNN将在其第一层中学习类似于转换回频率表示的东西。为什么不跳过这两个步骤,直接将频域输入网络?在本文中,作者修改libjpeg以直接生成DCT系数,并修改ResNet-50网络以适应不同大小和跨步输入,并在ImageNet上评估性能。实验发现网络速度更快、更准确,以及精度大致相同但比ResNet-50快1.77倍。
Method
来自 Y 通道 D Y D_Y DY 的 DCT 系数通常比来自色度通道 D C b D_{Cb} DCb 和 D C r D_{Cr} DCr 的 DCT 系数具有更大的尺寸 ,如图 1a 所示,其中实际形状是根据图像输入大小 224 × 224 224×224 224×224 计算的。因此,有必要进行特殊的转换来处理空间维度匹配 ,然后才能将生成的激活连接起来并馈送到传统的CNN中。论文考虑了两个抽象变换 ( T 1 , T 2 ) (T_1, T_2) (T1,T2) ,它们分别在不同的系数通道上运行 ,目的是在三个激活 a Y a_Y aY、 a C b a_{Cb} aCb 和 a C r a_{Cr} aCr 之间产生匹配的空间大小,其中 a Y = T 1 ( D Y ) a_Y = T_1(D_Y) aY=T1(DY)、 a C b = T 2 ( D C b ) a_{Cb} = T_2(D_{Cb}) aCb=T2(DCb) 和 a C r = T 2 ( D C r ) a_{Cr} = T_2(D_{Cr}) aCr=T2(DCr)。图 3 说明了这一过程。
除了确保卷积特征图大小对齐外,还必须考虑在变换结束时和整个网络中每个单元生成的感受野大小和步幅(以下用 R R R 和 S S S 表示)。对于采用RGB输入的典型网络,每个单元的感受野和步幅在每个输入通道(红色、绿色、蓝色)方面都是相同的,但对于流经Y通道与Cb和Cr通道的信息,原始像素空间中考虑的感受野可能不同 ,这是不希望的。通过检查 DCT 操作产生的表示大小,当与不同块(下表)的 ResNet-50 的同一组参数进行比较时,发现 D Y D_Y DY 的空间维度与Block 3 的激活维度匹配,而 D C r D_{Cr} DCr 和 D C b D_{Cb} DCb 的空间维度与Block 4 的空间维度匹配。这启发了我们在网络架构设计中跳过一些 ResNet 模块,但跳过而不进行进一步修改会导致网络功能大大降低(层数和参数更少),以及最终的网络层具有更小的感受野。
变换 ( T 1 , T 2 ) (T_1, T_2) (T1,T2)是通用的,允许我们将DCT系数调整到兼容的大小。在确定变换时,考虑了以下设计概念。变换可以是 (1) 非参数或手动设计的,例如原始 DCT 系数的上采样或下采样,(2) 可学习并且可以简单地表示为卷积层,或 (3) 卷积层的组合,例如 ResNet 模块本身 。论文探索了七种不同的变换方法 ( T 1 , T 2 ) (T_1, T_2) (T1,T2),从最简单的上采样到反卷积,并结合了后续 ResNet 块的不同选择:
UpSampling:色度 DCT 系数 D_{Cb} 和 D_{Cr} 都是通过将像素的高度和宽度复制 2 倍到 D_{Y} 的尺寸来上采样的。然后将这三者按通道连接起来,并在进入 ResNet ConvBlock 3 (CB_3) 之前经过批量归一化层,但步幅为 1,然后是标准 CB_4 和 CB_5。
UpSampling-RFA:类似于 UpSampling,但在这里保留 ResNet CB_2(而不是删除它)以及 CB_2 和 CB_3,以便它们模仿在原始 ResNet-50 块中观察到的 R 和 S 的增加,并记作"Receptive Field Aware"或 RFA。
Deconvolution-RFA:上采样的替代方法是可学习的反卷积层。在此设计中,在 D C b D_{Cb} DCb 和 D C r D_{Cr} DCr 上使用两个独立的反卷积层来增加空间尺寸。设计的其余部分与 UpSampling-RFA 相同。
DownSampling:使用卷积层对较大的系数 D Y D_Y DY 进行下采样。
Late-Concat:通过 ResNet-50 的两个 ConvBlocks (CBs) 和三个 IdentityBlocks (IBs) 自行运行 D Y D_Y DY。 D C b D_{Cb} DCb 和 D C r D_{Cr} DCr 在与 D Y D_{Y} DY 路径连接之前并行通过 CB。然后,在 C B 4 CB_4 CB4 之后将连接的表示形式馈送到标准 ResNet 中。
Late-Concat-RFA:将 D Y D_Y DY 通过三个 CBs,并调整了内核大小和步幅,使得 R 的增加模仿原始 ResNet-50 中的 R。在并行中, D C b D_{Cb} DCb 和 D C r D_{Cr} DCr 在连接到 D Y D_Y DY 路径的结果之前采用与 Late-Concat 相同的路径。
Late-Concat-RFA-Thinner:与 Late-Concat-RFA 相同,但通道数有所修改。沿 D Y D_Y DY 路径的前两个 CB 的通道数减少,第三个 CB 的通道数增加,将通道数从 {1024、512、512} 更改为 {384、384 、 768}。 D C b D_{Cb} DCb 和 D C r D_{Cr} DCr 通过具有 256 个通道而不是 512 个通道的 CB 反馈。
实验