CNN卷积神经网络问世以来,在计算机视觉领域备受青睐,与传统的神经网络相比,其参数共享性和平移不变性,使得对于图像的处理十分友好,然而,近日由Facebook AI、新家坡国立大学、360人工智能研究院的研究人员提出的一种新的卷积操作OctConv使得在图像处理性能方面得到了重大突破与提升,OctConv和CNN中的卷积有什么不同呢?

论文下载地址:

https://arxiv.org/pdf/1904.05049.pdf

CNN网络中的卷积层主要用来提取图像特征,如下图所示,利用卷积核(也称滤波器)对输入图像的每个像素进行卷积操作得到特征图,由于图像中相邻像素的特征相似性,卷积核横扫每个位置,独立的存储自己的特征描述符,忽略空间上的一致性,使得特征图在空间维度上存在大量的冗余。

图1 普通卷积操作示意图

OctConv主要基于于处理多空间频率的特征映射并减少空间冗余的问题提出的。

原文地址:

https://export.arxiv.org/pdf/1904.05049

下面文摘菌将从论文的四个部分展开对OctConv原理的阐述。

Why?—OctConv之诞生

文章摘要(Abstract)部分指出,在自然图像中,信息以不同的频率传输,其中高频率通常以细节进行编码,而较低频率通常以总体结构进行编码,同理卷积层的输出可以看做不同频率的信息混合,在论文中,研究者提出通过频率对特征融合图进行分解,并设计出了一种新的Octave卷积(OctConv)操作,旨在存储和处理在空间上变化缓慢的较低分辨率的特征图,从而降低内存和计算成本。与现存的多尺度方法不同,OctConv是一种单一、通用、即插即用的卷积单元,可以直接代替普通卷积,而无需调整网络结构。

OctConv与那些用于构建更优拓扑或者减少分组或深度卷积中信道冗余的方法是正交和互补的。

实验表明,通过使用OctConv替代普通卷积,能很好的提高语音和图像识别任务中的精度,同时降低内存和计算成本,一个配备有OctConv的ResNet-152能够以仅仅22.2 GFLOP在ImageNet数据集上达到82.5%的top-1分类准确率。

What?—初探OctConv

论文Introduction(介绍)部分基于CNN现存的空间维度冗余问题引出了下图:

图2 论文思路阐述图

(a)动机:研究表明,自然图像可以分解为低空间频率和高空间频率两部分;

(b)卷积层的输出图也可以根据空间频率进行分解和分组;

(c)所提出的多频特征表示将平滑变化的低频映射存储字低分辨率张量中,以减少空间冗余;

(d)所提出的OctConv直接作用于这个表示。它会更新每个组的信息,并进一步支持组之间的信息交换。

具体解释为:如图 2(a) 所示,自然图像可以分解为描述平稳变化结构的低空间频率分量和描述快速变化的精细细节的高空间频率分量。类似地,我们认为卷积层的输出特征映射也可以分解为不同空间频率的特征,并提出了一种新的多频特征表示方法,将高频和低频特征映射存储到不同的组中,如图 2(b) 所示。因此,通过相邻位置间的信息共享,可以安全地降低低频组的空间分辨率,减少空间冗余,如图 2(c) 所示。

How?—再探OctConv

论文Method(方法)部分:octave feature 减少了空间冗余,比原始表示更加紧凑。然而,由于输入特征的空间分辨率不同,传统卷积不能直接对这种表示进行操作。避免这个问题的一种简单方法是将低频部分上采样到原始的空间分辨率,将它与连接起来,然后进行卷积,这将导致额外的计算和内存开销。为了充分利用紧凑的多频特征表示,我们提出 Octave Convolution,它可以直接在分解张量X={XH,XL}上运行,而不需要任何额外的计算或内存开销。

Octave Convolution的设计目标是有效地处理相应张量中的低频和高频分量,同时使得Octave特征表示的高频分量和低频分量之间能够有效通信。设X,Y为分解输入和输出张量,那么输出的高频和低频信号将由下式给出:

其中H→H,L→L表示自身的更新,L→H,H→L表示高频与低频分量之间的通信,如图3所示绿色箭头表示信息更新,红色箭头表示两个频率之间的信息交换。

图3 Octave Convolution示意图

同理,我们将卷积核分解为高频和低频W={WH,WL},WH=WH→H+WL→H;WL=WL→L+WH→L,如图4所示:

图3 Octave Convolution kernel示意图

对于低频特征所使用的低频所占比例a的不同,当a=0时(即没有低频成分),OctConv就会退化为普通卷积。经过实验评估k×k Octave 卷积核与普通卷积核等价,即二者具有完全相同的参数量。

To do—Just do it

论文的实验部分:研究人员验证了提出的Octave卷积对于2D和3D网络的效能和效率,首先展示了ImageNet图像分类的控制变量研究,然后将其与当前最优的方法进行了比较。之后研究人员使用Kinetics-400和Kinetics-600数据集,展示了提出的OctConv也适用于3D CNN。

图4 ImageNet上的控制变量结果图

上表为论文中的表8,视频中的动作识别、控制变量研究结果统计。

欢迎关注磐创博客资源汇总站:http://docs.panchuang.net/

欢迎关注PyTorch官方中文教程站:http://pytorch.panchuang.net/

比CNN表现更好,CV领域全新卷积操作OctConv厉害在哪里?的更多相关文章

  1. 关于国内外CV领域牛人的博客链接 .

    此文为转载文章,尊重知识产权http://blog.csdn.net/carson2005/article/details/6601109此为原文链接,感谢作者! 以下链接是关于计算机视觉(Compu ...

  2. CentOS停更;阿里发布全新操作系统(Anolis OS)

    镜像下载.域名解析.时间同步请点击阿里云开源镜像站 Linux系统对于Java程序员来说,就好比"乞丐手里的碗",任何业务都离不开他的身影,因为服务端的广泛使用,也因此衍生出了各种 ...

  3. Etcd和ZooKeeper,究竟谁在watch的功能表现更好?

    ZooKeeper和Etcd的主要异同可以参考这篇文章,此外,Etcd的官网上也有对比表格(https://coreos.com/etcd/docs/latest/learning/why.html) ...

  4. 做梦也没有想到:Windows 上的 .NET Core 表现更糟糕

    昨天晚上 18:15 左右我们发布了跑在 Windows 上 .NET Core 博客系统,本想与 .NET Framework 版进行同“窗”的较量,结果刚发布上线就发现 CPU 占用异常高,发布不 ...

  5. CNN神经网络之卷积操作

    在看这两个函数之前,我们需要先了解一维卷积(conv1d)和二维卷积(conv2d),二维卷积是将一个特征图在width和height两个方向进行滑动窗口操作,对应位置进行相乘求和:而一维卷积则只是在 ...

  6. CNN中的卷积核及TensorFlow中卷积的各种实现

    声明: 1. 我和每一个应该看这篇博文的人一样,都是初学者,都是小菜鸟,我发布博文只是希望加深学习印象并与大家讨论. 2. 我不确定的地方用了"应该"二字 首先,通俗说一下,CNN ...

  7. 如何更简单方便地执行SQL操作?

    现在公司使用mybatis作为DAL层的框架. 使用起来比较简单,使用xml进行SQL的书写,java代码使用接口执行. 但在写一些简单SQL的时候会显得非常繁琐: xml和java分离(设计上为了解 ...

  8. 三维CNN:收集一些最近的3d卷积网络PointNet++

    PointNet++是在PointNet上做出了改进,考虑了点云局部特征提取,从而更好地进行点云分类和分割. 先简要说一下PointNet: PointNet,其本质就是一种网络结构,按一定的规则输入 ...

  9. 从多维卷积说起,比较CNN中的全连接和全卷积

    一幅图像里包含三个通道,分别是RGB通道.三通道在卷积时是通过累加三个卷积结果得到的. CNN中全连接层的卷积核大小是feature map的大小.比如feature是3*3的,那么该全连接层的卷积核 ...

随机推荐

  1. Git 程序员篇

    关于 Git Git 背后的故事 伟大的作品总是诞生于伟大的时代,正如 Git 同样诞生于一个英雄辈出.极富纷争的年代. 2005 年,Linux 内核开发社区正面临严峻的挑战:他们不能继续使用 Bi ...

  2. ado.net DataSet

    一.概念 DataSet是ADO.NET的中心概念.可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合.所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataS ...

  3. 对象深拷贝deepCopy

    function type(obj){ return Object.prototype.toString.call(obj).slice(8,-1); } function deepCopy(targ ...

  4. HTML常用标签的使用

    一.常见标签详解 1.<iframe>标签 HTML内联框架元素 <iframe> 表示嵌套的浏览上下文,有效地将另一个HTML页面嵌入到当前页面中.在HTML 4.01中,文 ...

  5. 每个 JavaScript 工程师都应当知道的 10 个面试题

    1. 能说出来两种对于 JavaScript 工程师很重要的编程范式么? JavaScript 是一门多范式(multi-paradigm)的编程语言,它既支持命令式(imperative)/面向过程 ...

  6. Windows下利用virtualenvwrapper指定python版本创建虚拟环境

    默认已安装virtualenvwrapper 一.添加环境变量(可选) 在系统环境变量中添加 WORKON_HOME ,用来指定新建的虚拟环境的存储位置,如过未添加,默认位置为 %USERPROFIL ...

  7. 总结:利用asp.net core日志进行生产环境下的错误排查(asp.net core version 2.2,用IIS做服务器)

    概述 调试asp.net core程序时,在输出窗口中,在输出来源选择“调试”或“xxx-ASP.NET Core Web服务器”时,可以看到类似“info:Microsoft.AspNetCore. ...

  8. YiGo表单建立

    做一个请假单表单(下图是最后的成品图) 表单的类型 实体表单 1.可存储 2.可编辑 虚拟表单 视图(不可存储数据,只有显示功能) 不可编辑 字典 报表 备注 :一张表单是实体还是虚拟取决于其数据对象 ...

  9. 误删除所有redo日志的一组成员的处理过程

    系统中共有3个日志文件组,每个组中各有一个日志文件成员.往系统中添加一个日志文件组,组中日志文件成员数量是2.SQL> alter database add logfile group 4 (' ...

  10. 使用python3编写程序,生成10个随机数,每个元素的值介于1到100之间,并计算所有元素的和、平均值。

    代码如下: import random n = 0 sum = 0 while n < 10: num = random.randint(1, 100) sum = sum + num n += ...