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. 记php封装app 广告植入问题

    <meta http-equiv="X-Frame-Options" content="DENY"> <script type="t ...

  2. C++走向远洋——55(项目一3、分数类的重载、>>

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  3. CentOS 7 国内源配置

    CentOS 7 国内源配置 1. 备份自带源 # 首先要确认你有 wget 命令, 并且连着网 # cd /etc/yum.repos.d/ # mkdir repo # mv *.repo rep ...

  4. 自然语言处理NLTK之入门

    环境:window10 + python3 一.安装NLTK pip install nltk # 或者 PyCharm --> File --> Settings --> Proj ...

  5. LeetCode--链表3-经典问题

    LeetCode--链表3-经典问题 题1 反转链表 第一次代码超出时间限制 原因是,反转之后链表的尾部节点和头结点连上了 /** * Definition for singly-linked lis ...

  6. qt creator源码全方面分析(3-2)

    目录 qtcreator.pri 判断重复包含 定义版本信息 VERSION 定义IDE名称 启用C++14 CONFIG 自定义函数 Replace Functions Test Functions ...

  7. tensorflow feature_column踩坑合集

    踩坑内容包含以下 feature_column的输入输出类型,用一个数据集给出demo feature_column接estimator feature_column接Keras feature_co ...

  8. GZOJ 1361. 国王游戏【NOIP2012提高组DAY1】

    国王游戏[NOIP2012提高组DAY1] Time Limit:1000MS Memory Limit:128000K Description 国王游戏(game.cpp/c/pas) [问题描述] ...

  9. 关于vue-cli3打包时遇到Cannot assign to read only property 'exports' of object '#<Object>'问题的解决方法。

    vue-cli3打包时遇到Cannot assign to read only property 'exports' of object '#<Object>'问题的解决方法. 大致是说, ...

  10. JAVA用geotools读取shape格式文件

    Shapefile属于一种矢量图形格式,它能够保存几何图形的位置及相关属性.但这种格式没法存储地理数据的拓扑信息. 其中,要组成一个Shapefile,有三个文件是必不可少的,它们分别是". ...