当前位置: 首页 > news >正文

【论文阅读】Faster Neural Networks Straight from JPEG

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 反馈。

实验

在这里插入图片描述
在这里插入图片描述

相关文章:

  • 【C语言基础】:字符串函数(二)
  • js的事件
  • hive授予指定用户特定权限及beeline使用
  • 【C++】静态成员
  • 单链表的查找
  • Python第三次作业
  • Linux:环境变量的特性及获取
  • OpenAI奥特曼豪赌1.42亿破解长生不老
  • python笔记进阶--模块、文件及IO操作(1)
  • 大数据篇 一篇讲明白 Hadoop 生态的三大部件
  • QT作业day2
  • GRE VPN——配置实验
  • 实验3 中文分词
  • 16:00面试,16:06就出来了,问的问题有点变态。。。
  • npm淘宝镜像源切换
  • 【技术性】Search知识
  • 【译】理解JavaScript:new 关键字
  • Android组件 - 收藏集 - 掘金
  • Docker 笔记(2):Dockerfile
  • express.js的介绍及使用
  • SSH 免密登录
  • Vue2 SSR 的优化之旅
  • 近期前端发展计划
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 数据仓库的几种建模方法
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 我这样减少了26.5M Java内存!
  • 项目实战-Api的解决方案
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 怎么将电脑中的声音录制成WAV格式
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • Java数据解析之JSON
  • 带你开发类似Pokemon Go的AR游戏
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​io --- 处理流的核心工具​
  • ​LeetCode解法汇总518. 零钱兑换 II
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (接口封装)
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET建议使用的大小写命名原则
  • .net中生成excel后调整宽度
  • /etc/sudoer文件配置简析
  • ::什么意思
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798
  • [Android] Android ActivityManager