Facebook在2019年时推出了一种新的卷积方法,叫做Octave Convolution,中文名是八度卷积。这个名字借鉴了音乐中高音低音的命名方法,来表示图像中高低频的数据。

图像和特征图的高低频表示

对于一张图片来说,低频的数据是比较平滑的部分,也就是图像的整体结构,高频的数据是那些细节的纹理,也就是边缘像素变化比较大的部分。如图1(a)所示。

图1. 图像和特征图的高低频表示

图1(a)中左图是一张企鹅的原始图片,中间是图片分离出来的低频的部分,也就是整体轮廓图,右图是图像的高频部分,也就是图片的边缘图(有点像素描)。

图1(b)是普通卷积特征图,通常情况下可以分成高频和低频两个部分。由于低频部分的特征基本上比较平滑,所以在特征图上其实不需要和高频一样的维度去表达图像的信息,如图1(c)所示,论文在低频的特征图上将宽高维度降了一半。

图1(d)表示高低频的特征信息的更新和交换,高低频的特征既有各自频率内的卷积操作,也有低频向高频和高频向低频的特征交换和融合,具体怎么操作下面会介绍。

八度卷积的操作

图2. 八度卷积的操作方式

八度卷积的具体操作方式如图2(a)所示。其中 α i n \alpha_{in} αin​和 α o u t \alpha_{out} αout​是输入和输出特征图的低频维度在总维度中的占比,在论文中一般假设 α i n = α o u t \alpha_{in}=\alpha_{out} αin​=αout​。图2(b)中间绿色的线表示高低频在各自频域内的卷积,卷积核分别是 W H → H W^{H\rightarrow H} WH→H和 W L → L W^{L\rightarrow L} WL→L,卷积后的输出特征为 Y H → H Y^{H\rightarrow H} YH→H和 Y L → L Y^{L\rightarrow L} YL→L;中间红色的线表示高低频特征向不同频域转换的卷积,箭头朝右下的是高频特征经过池化和卷积后变成低频特征 Y H → L Y^{H\rightarrow L} YH→L,卷积核为 W H → L W^{H\rightarrow L} WH→L,箭头朝右上的是低频特征经过卷积和上采样后变成高频特征 Y L → H Y^{L\rightarrow H} YL→H,卷积核为 W L → H W^{L\rightarrow H} WL→H。最后 Y H → H Y^{H\rightarrow H} YH→H和 Y L → H Y^{L\rightarrow H} YL→H相加成为八度卷积后的高频特征特征, Y L → L Y^{L\rightarrow L} YL→L和 W H → L W^{H\rightarrow L} WH→L相加成为八度卷积后的低频输出特征。

图2(b)是八度卷积的卷积核大小,按八度卷积的路径分成 W H → H W^{H\rightarrow H} WH→H、 W L → L W^{L\rightarrow L} WL→L、 W H → L W^{H\rightarrow L} WH→L和 W L → H W^{L\rightarrow H} WL→H。

综上,八度卷积的高频和低频的特征图计算公式分别为:

Y H = f ( X H ; W H → H ) + u p s a m p l e ( f ( X L ; W L → H , 2 ) Y^H=f(X^H;W^{H\rightarrow H})+upsample(f(X^L;W^{L\rightarrow H}, 2) YH=f(XH;WH→H)+upsample(f(XL;WL→H,2)

Y L = f ( X L ; W L → L ) + f ( p o o l ( X H , 2 ) ; W H → L ) ) Y^L=f(X^L;W^{L\rightarrow L})+f(pool(X^H,2);W^{H\rightarrow L})) YL=f(XL;WL→L)+f(pool(XH,2);WH→L))

其中, X H X^H XH和 X L X^L XL表示的是输入特征图的高频和低频部分, f ( ⋅ ) f(\cdot) f(⋅)表示卷积操作函数。

作者还提到,不仅在普通的卷积中可以改造成八度卷积的方法,对于分组和可分离卷积同样也是适用的。而且八度卷积是一个可插拔的整体操作,基本上只需要在特定位置上改成相应的八度卷积即可,卷积参数基本上保持不变,只是增加了一个低频占比的参数,以及在输入输出的特征图上分成了高频和低频部分。

论文分析了低频维度占比 α \alpha α值对于计算量FLOPs和显存占用的影响,如表1所示。

表1.低频占比对于计算量和显存的影响

从表中可以看出,随着占比率的增加,FLOPs和显存占用逐渐减小,这是由于低频特征是在更小的宽高上进行卷积的操作。

实验结果

作者首先分析了不同低频ratio对于ResNet/ResNeXt系列网络的准确率/FLOPs的影响,所有的实验都是在同样的训练参数和硬件条件下进行的,实验结果如图3所示。

图3.不同低频ratio对于ResNet/ResNeXt精度和性能的影响

从图3中可以看出,ResNet系列网络采用八度卷积改造后,ImageNet准确率和计算量均优于原网络,随着低频占比ratio的增加,准确率逐渐降低,计算量也逐步减少。

论文同样在小模型和中模型的等级上与其他网络做了实验对比,得到表2和表3的实验结果,从这两个表中,同样也能看出来,八度卷积改造后的网络在准确率和计算量上都比改造前的网络更好。

表2. 小模型的八度卷积实验结果对比

表3.中模型的八度卷积实验结果对比

Octave Convolution 八度卷积相关推荐

  1. 『深度概念』一文读懂Octave Convolution(OctConv)八度卷积

    RyanXing Multimedia Processing & Computer Vision. Paper | Octave Convolution(OctConv) 论文:Drop an ...

  2. Octave Convolution卷积

    Octave Convolution卷积 MXNet implementation 实现for: Drop an Octave: Reducing Spatial Redundancy in Conv ...

  3. Octave Convolution[论文详解]

    Drop an Octave: Reducing Spatial Redundancy in Convolutional Neural Networks with Octave Convolution ...

  4. 神经网络学习之OctConv:八度卷积

    论文介绍 题目:Drop an Octave: Reducing Spatial Redundancy in Convolutional Neural Networks with Octave Con ...

  5. 模型压缩与加速:Octave Convolution

      自AlexNet刷新了ImageNet比赛的最佳记录以来,神经网络的又一次高潮猛烈的到来了.一些列各种各样的网络层出不穷,图像/音频/文本等各种任务下都开始了神经网络一统天下的声音.然而神经网络虽 ...

  6. 八分音符(频率)卷积算子 Octave Convolution

    为什么读此系列文章? 优化数学和计算理论帮助机器学习完成问题分类: 1)按照领域划分,比如计算机视觉,自然语言处理,统计分析预测形: 2)按照算法复杂划分,比如是否是NP-Hard问题,是否需要精确解 ...

  7. 卷积网络基础知识---Group Convolution分组卷积

    Group Convolution分组卷积,以及Depthwise Convolution和Global Depthwise Convolution https://www.cnblogs.com/s ...

  8. 论文笔记 -- Communication Lower Bound in Convolution Accelerators 卷积加速器中的通信下界

    论文笔记 – Communication Lower Bound in Convolution Accelerators 卷积加速器中的通信下界 @(论文笔记) 文章目录 论文笔记 -- Commun ...

  9. Dilated Convolution膨胀卷积感受野详解

    重温Dilated Convolution膨胀卷积,对论文<MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS>中采用Dilat ...

最新文章

  1. Visual Studio 2010 Ultimate测试体系结构
  2. 用C语言编程实现矩形波信号,信号与系统综合设计性实验
  3. linux下Yum的$releasever和$basearch的取值
  4. wifi linux 驱动分析,Linux 下wifi 驱动开发(二)—— WiFi模块浅析
  5. 用户层和内核层异常的处理流程
  6. addonsmaker怎么制作_addonsmaker
  7. JAVA判断各种类型数据是否为空(亲测)
  8. 【Python学习】 caffe-master 之 mnist 详解
  9. 全网最全 Java 日志框架适配方案!还有谁不会?
  10. uboot驱动模型(DM)分析(一)
  11. CRC校验码计算过程
  12. 银河麒麟Telnet远程登录
  13. oob袋外估计matlab,机器学习:随机森林RF-OOB袋外错误率
  14. 关于数据分析师的4点思考
  15. Ubuntu14.04下nfs服务器的搭建
  16. 树莓派计算器c语言,树莓派与Python实验9——Tkinter计算器实验
  17. [CTF萌新的Bugku web闯关之路] 计算器 过关!
  18. 华为荣耀平板5怎么样_荣耀平板5和华为m5青春版哪个好
  19. Android加载的图片在内存中的大小
  20. Teen Readers【青少年读者】

热门文章

  1. Leetcode 829. 连续整数求和 C++
  2. api接口传输JSON数据处理
  3. 综合评价算法的对比分析
  4. 均衡之刃这款球拍是谁创作的
  5. 锐捷交换机基础配置命令
  6. 运用计算机技术和语文教学,信息技术如何更好的应用于语文教学中
  7. python中 自定义向量 计算向量乘积, 平行四边形面积,三角形面积
  8. 快速设置CodeBlocks
  9. Arduino Uno PM2.5粉尘传感器(GP2Y1010AU0F) 看看家里的空气质量
  10. 铁路 计算机从业人员述职报告,铁路个人述职报告