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. Android状态机StateMachine使用举例及源码解析

    Android frameworks源码StateMachine使用举例及源码解析 工作中有一同事说到Android状态机StateMachine.作为一名Android资深工程师,我居然没有听说过S ...

  2. iMX287A开发环境搭建

    目录 1.开发套件简介 2.说明: 3.主机搭建交叉编译环境 4.编译第一个ARM Linux程序--Hello World 5.开发板运行U盘中的可执行文件 6.配置交叉编译工具到环境变量 7.sc ...

  3. 浅谈.NET Framework 与CLR

            承载公共语言运行时 (CLR) 的所有应用程序均需启动(或称“激活”)CLR 以运行托管代码.             通常,.NET Framework 应用程序在生成它的 CLR ...

  4. 7-31 jmu-分段函数l (20 分)

    本题目要求计算以下分段函数的值(x为从键盘输入的一个任意实数): 如果输入非数字,则输出“Input Error!” 输入格式: 在一行中输入一个实数x. 输出格式: 在一行中按”y=result”的 ...

  5. Css里的BFC

    一.BFC简介 BFC全称:Block Formatting Contexts (BFC,块级格式化上下文),就是 一个块级元素 的渲染显示规则 (可以把 BFC 理解为一个封闭的大箱子,,容器里面的 ...

  6. Spring Boot 2.x基础教程:使用MyBatis的XML配置方式

    上一篇我们介绍了如何在Spring Boot中整合我们国人最常用的MyBatis来实现对关系型数据库的访问.但是上一篇中使用了注解方式来实现,而对于很多MyBatis老用户还是习惯于XML的开发方式, ...

  7. c++ 中的单例类模板的实现方法

    1.什么是单例模式 在架构设计时,某些类在整个系统生命周期中最多只能有一个对象存在 ( Single Instance ).如超市收银系统,其外观主要由显示器(1个).扫描枪(1个).收款箱(1个)组 ...

  8. MySQL5.7 数据库的my.cnf配置

    [client] port socket=/tmp/mysql.sock default-character-set=utf8 [mysql] no-auto-rehash default-chara ...

  9. Simulink仿真入门到精通(三) Simulink信号

    3.1 Simulink信号概述 所谓信号,表示一种随着时间而变化的量,在时间轴上的采样时刻都对应有数值. 信号在Simulink中是相当重要的组成部分,有线(line)表示,在模型中穿针引线地将各模 ...

  10. 029.核心组件-Controller Manager

    一 Controller Manager原理 1.1 Controller Manager概述 一般来说,智能系统和自动系统通常会通过一个"控制系统"来不断修正系统的工作状态.在K ...