传统的卷积运算,要成为过去时了。

Facebook和新加坡国立大学联手提出了新一代替代品:OctConv(Octave Convolution),效果惊艳,用起来还非常方便。

OctConv就如同卷积神经网络(CNN)的“压缩器”。用它替代传统卷积,能在提升效果的同时,节约计算资源的消耗。

比如说一个经典的图像识别算法,换掉其中的传统卷积,在ImageNet上的识别精度能获得1.2%的提升,同时,只需要82%的算力和91%的存储空间。

如果对精度没有那么高的要求,和原来持平满足了的话,只需要一半的浮点运算能力就够了。

想实现这样的提升,怕不是要把神经网络改个天翻地覆吧?

根本不需要,OctConv即插即用,无需修改原来的网络架构,也不用调整超参数,方便到家。

就是这个新一代的卷积,让GAN的主要创造者、AI大牛Ian Goodfellow迫不及待,不仅转发力荐,还表示要持续关注进展,开源时再发推告诉大家。

OctConv也获得了众网友的认可。短短5个小时,Goodfellow的推文就收获了700赞,网友直呼“Excellent work!”

所以,OctConv到底是什么神仙网络?

算力↓↓,准确率↑↑

我们先来看看它效果究竟如何。

比如说经典的图像识别算法:ResNet-50,换了新的卷积运算会带来什么变化?

上图中粉红色的折线就是不同参数配置的OctConv对ResNet-50的影响。左起第二个粉红圆点显示了一种比较均衡的配置:比原版(最右黑点)略高的精度,所需的浮点算力却只有原版的一半。

其他折线代表的各种图像识别网络,小到ResNet-26、DenseNet,大到ResNet-200,在OctConv加持下,都体现出了成绩的提升和算力需求的下降。

调节OctConv的参数α,可以在性能提升和算力节约之间寻找平衡。

降低算力需求的同时,OctConv还能够缩短神经网络推断所需的时间。比如ResNet-50的推断时间,就会随着参数α的增大而逐步缩短。保持精度不变,推断时间能缩短到74毫秒,也就是原来的62%。

对大、中、小型的模型,研究人员们分别测试了OctConv会如何影响它们的图像分类能力。

大型神经网络ResNet-152用了OctConv后,仅用22.2GFLOP的算力,Top-1分类准确率就能达到82.9%。

OctConv的适用范围也不仅限于图像识别。

无论是2D还是3D的CNN,都能实现这种提升。论文不仅测试了ResNet、ResNeXt、DenseNet、MobileNet、SE-Net等2D CNN在ImageNet上的图像分类能力,还测试了C2D、I3D等视频行为识别算法改用OctConv之后的性能变化。

像压缩图像一样压缩卷积

OctConv节约的计算力,都是从哪儿省出来的?

对于普通卷积运算,所有输入和输出特征映射具有相同的空间分辨率。

实际上,一张图片可以分成粗略结构(低频部分)和边缘细节(高频)两个部分,比如一张企鹅照片能分离出两个成分:

企鹅身上毛色相近的部分、背景颜色变化比较缓慢,属于低频信息,信息量较少;而两种毛色交接的部分、企鹅身体边缘的颜色变化剧烈,属于高频信息,信息量较多。

既然这样,我们完全可以将信息量较少的低频部分压缩一下,减少冗余空间。

类似地,卷积层的输出特征映射和拍摄的照片一样,也可以被视为不同频率信息的混合,进行相似的处理。

研究人员从图片的频率分离和压缩中受到启发。Octave Convolution的思路就是对卷积网络也进行类似操作,压缩低频部分,分别处理高低频两个部分的数据,并在二者之间进行信息交换,从而减少卷积运算对存储和计算量的消耗。

为了适应新的特征表示,文章推广了传统卷积,提出了OctConv。Octave是指八音阶,在音乐中降低八音阶代表频率减半。

OctConv中低频部分张量的大小是0.5h×0.5w,长宽正好是的高频部分h×w的一半,从而节省了张量的存储空间和计算量。

虽然OctConv压缩了低频部分的信息,但同时也有效地扩大了原始像素空间中的感受野(receptive field),可以提高识别性能。

实现过程

对于普通的卷积方法,以W表示k×k的卷积核,X和Y分别表示输入和输出张量,X和Y的映射关系为:

(p, q)是X张量中的位置坐标,(i, j)表示所取的近邻范围。

而OctConv的目标是分开处理张量中的低频和高频部分,同时实现的高频和低频分量特征表示之间的有效通信。

我们将卷积核分成两个分量:

W=[WH, WL]

同时实现高低频之间的有效通信。因此,输出张量也将分成两个分量:

Y=[YH, YL]

YH=YH→H+YL→H,YL=YL→L+YH→L

其中YA→B表示从A到B的特征映射后更新的结果。YH→H和YL→L是频率内的信息更新,YL→H和YH→L是频率间的信息更新。

因此YH不仅包含自身的信息处理过程,还包含从低频到高频的映射。

为了计算这些项,我们将卷积核每个分量进一步分为频率内和频率间两个部分:

WH=WH→H+WL→H,WL=WL→L+WH→L

张量参数可以用更形象的方式表示:

OctConv的卷积核

这种形式有些类似于完全平方公式a^2+b^2+ab+ba,两个平方项WH→H、WL→L是频率内张量,两个交叉项是频率间张量WL→H、WH→L

OctConv的卷积核的“交叉”处理过程,红色箭头表示高低频之间的信息交换

输出张量的计算方式和前面普通卷积的方式相同:

在OctConv中比例α是一个可以调节的参数,就是前文提到过的那个可调节参数。在整个网络内部层中令αin = αout = α,第一层中αin = 0,αout = α,最后一层中αin = α,αout = 0。

OctConv的另一个非常有用的特性是低频特征映射有较大的感受野。与普通卷积相比,有效地将感受野扩大了2倍。这会进一步帮助每个OctConv层从远处捕获更多的上下文信息,并且有可能提高识别性能。

华人一作

这篇论文是Facebook联合新加坡国立大学共同完成的。

其中,Yunpeng Chen、Haoqi Fang、Bing Xu,、Zhicheng Yan、Yannis Kalantidis、Marcus Rohrbach等6人均来自Facebook AI实验室。

一作Yunpeng Chen,中文名为陈云鹏,2015年本科毕业于华中科技大学,去年开始在Facebook实习。

陈云鹏现就读于新加坡国立大学博士,师从颜水成冯佳时,两人也均为这篇论文的作者。今年毕业后,陈云鹏将成为Facebook的一名研究员。

此前作为一作,陈云鹏已有4篇论文被CVPR、NeurIPS、ECCV和IJCAI等顶会接收,主攻深度学习于视觉交叉领域的研究。

颜水成是新加坡国立大学的终身教授的颜水成,现在也是360副总裁、人工智能研究院院长和首席科学家。

他主要研究计算机视觉、机器学习与多媒体分析领域,目前发表学术论文近500篇,被引次数超2.5万次,曾三次入选全球高引用学者。目前,颜水成有诸多荣誉加持,并评为IEEE Fellow, IAPR Fellow和ACM杰出科学家等。

冯佳时现任新加坡国立大学电子与计算机工程系助理教授,为机器学习与视觉实验室负责人。

本科在中国科学技术大学毕业后,冯佳时在新加坡国立大学读博,此后又去UC伯克利人工智能实验室从事博士后研究,研究方向为图像识别、深度学习及面向大数据的鲁棒机器学习。

传送门

论文地址:

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

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

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

CNN更新换代!性能提升算力减半,还即插即用的更多相关文章

  1. SQL Server 2014里的性能提升

    在这篇文章里我想小结下SQL Server 2014引入各种惊艳性能提升!! 缓存池扩展(Buffer Pool Extensions) 缓存池扩展的想法非常简单:把页文件存储在非常快的存储上,例如S ...

  2. YbSoftwareFactory 代码生成插件【二十一】:Web Api及MVC性能提升的几个小技巧

    最近在进行 YbSoftwareFactory 的流程功能升级,目前已经基本完成,现将用到的一些关于 Web Api 及 MVC 性能提升的一些小技巧进行了总结,这些技巧在使用.配置上也相当的简单,但 ...

  3. paip.cache 缓存架构以及性能提升总结

    paip.cache 缓存架构以及性能提升总结 1         缓存架构以及性能(贯穿读出式(LookThrough) 旁路读出式(LookAside) 写穿式(WriteThrough) 回写式 ...

  4. C# 程序性能提升篇-1、装箱和拆箱,枚举的ToString浅析

    前景提要: 编写程序时,也许你不经意间,就不知不觉的使程序代码,发生了装箱和拆箱,从而降低了效率,不要说就发生那么一次两次,如果说是程序中发生了循环.网络程序(不断请求处理的)等这些时候,减少装箱和拆 ...

  5. C# 程序性能提升篇-2、类型(字段类型、class和struct)的错误定义所影响性能浅析

    前景提要: 编写程序时,也许你不经意间,就不知不觉的定义了错误的类型,从而发生了额外的性能消耗,从而降低了效率,不要说就发生那么一次两次,如果说是程序中发生了循环.网络程序(不断请求处理的)等这些时候 ...

  6. Web 应用性能提升 10 倍的 10 个建议

    转载自http://blog.jobbole.com/94962/ 提升 Web 应用的性能变得越来越重要.线上经济活动的份额持续增长,当前发达世界中 5 % 的经济发生在互联网上(查看下面资源的统计 ...

  7. async/await 的基本实现和 .NET Core 2.1 中相关性能提升

    前言 这篇文章的开头,笔者想多说两句,不过也是为了以后再也不多嘴这样的话. 在日常工作中,笔者接触得最多的开发工作仍然是在 .NET Core 平台上,当然因为团队领导的开放性和团队风格的多样性(这和 ...

  8. 在MongoDB中创建一个索引而性能提升1000倍的小例子

    在https://www.cnblogs.com/xuliuzai/p/9965229.html的博文中我们介绍了MongoDB的常见索引的创建语法.部分同学还想看看MongoDB的威力到底有多大,所 ...

  9. 再谈HTTP2性能提升之背后原理—HTTP2历史解剖

    即使千辛万苦,还是把网站升级到http2了,遇坑如<phpcms v9站http升级到https加http2遇到到坑>. 因为理论相比于 HTTP 1.x ,在同时兼容 HTTP/1.1 ...

随机推荐

  1. C++走向远洋——63(项目二2、两个成员的类模板)

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

  2. HTTP协议 有这篇文章足够了

    HTTP 协议详解 HTTP(HyperText Transfer Protocol)超文本传输协议.其最初的设计目的是为了提供一种发布和接收HTML页面的方法. HTTP是一个客户端(用户)和服务端 ...

  3. 一位资深程序员大牛推荐的Java技术学习路线图

    Web应用,最常见的研发语言是Java和PHP. 后端服务,最常见的研发语言是Java和C/C++. 大数据,最常见的研发语言是Java和Python. 可以说,Java是现阶段中国互联网公司中,覆盖 ...

  4. No CPU/ABI system image available for this target

    在创建AVD设备的时候无法正常创建虚拟设备,CPU选项不能选择. 下面报错:No CPU/ABI system image available for this target 是因为SDK里面缺少了s ...

  5. mysql in与exists区别

    1.exists是对外表做loop循环,每次loop循环再对内表(子查询)进行查询,那么因为对内表的查询使用的索引(内表效率高,故可用大表),而外表有多大都需要遍历,不可避免(尽量用小表),故内表大的 ...

  6. vue之initComputed模块源码说明

    要想理解原理就得看源码,最近网上也找了好多vue初始化方法(8个init恶魔...) 因为也是循序渐进的理解,对initComputed计算属性的初始化有几处看得不是很明白,网上也都是含糊其辞的(要想 ...

  7. Object-Oriented Programming Summary Ⅳ

    目录 UML单元总结博客 总结本单元两次作业的设计 总结自己在四个单元中架构设计以及OO方法理解的演进 总结自己在四个单元中测试理解与实践的演进 总结自己的课程收获 立足于自己的体会给课程组提三个具体 ...

  8. Python一键转Jar包,Java调用Python新姿势!

    粉丝朋友们,不知道大家看故事看腻了没(要是没腻可一定留言告诉我^_^),今天这篇文章换换口味,正经的来写写技术文.言归正传,咱们开始吧! 本文结构: 需求背景 进击的Python Java和Pytho ...

  9. 内网渗透之信息收集-Linux系统篇

    linux 系统信息 grep MenTotal /proc/meminfo #查看系统内存总量 cat /etc/issue #查看系统名称 cat /etc/lsb-release #查看系统名称 ...

  10. 音频相关 ALSA ffmpeg ffplay 命令用法 g7xx

    采样率: samples 441100 每秒 DAC/ADC 采样的频率,声卡一般还支持 48k 8k 等模式. 通道:channels 2声道 左右声道 也有单声道的声音,5.1 声道 位数: 16 ...