CNN更新换代!性能提升算力减半,还即插即用
传统的卷积运算,要成为过去时了。
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更新换代!性能提升算力减半,还即插即用的更多相关文章
- SQL Server 2014里的性能提升
在这篇文章里我想小结下SQL Server 2014引入各种惊艳性能提升!! 缓存池扩展(Buffer Pool Extensions) 缓存池扩展的想法非常简单:把页文件存储在非常快的存储上,例如S ...
- YbSoftwareFactory 代码生成插件【二十一】:Web Api及MVC性能提升的几个小技巧
最近在进行 YbSoftwareFactory 的流程功能升级,目前已经基本完成,现将用到的一些关于 Web Api 及 MVC 性能提升的一些小技巧进行了总结,这些技巧在使用.配置上也相当的简单,但 ...
- paip.cache 缓存架构以及性能提升总结
paip.cache 缓存架构以及性能提升总结 1 缓存架构以及性能(贯穿读出式(LookThrough) 旁路读出式(LookAside) 写穿式(WriteThrough) 回写式 ...
- C# 程序性能提升篇-1、装箱和拆箱,枚举的ToString浅析
前景提要: 编写程序时,也许你不经意间,就不知不觉的使程序代码,发生了装箱和拆箱,从而降低了效率,不要说就发生那么一次两次,如果说是程序中发生了循环.网络程序(不断请求处理的)等这些时候,减少装箱和拆 ...
- C# 程序性能提升篇-2、类型(字段类型、class和struct)的错误定义所影响性能浅析
前景提要: 编写程序时,也许你不经意间,就不知不觉的定义了错误的类型,从而发生了额外的性能消耗,从而降低了效率,不要说就发生那么一次两次,如果说是程序中发生了循环.网络程序(不断请求处理的)等这些时候 ...
- Web 应用性能提升 10 倍的 10 个建议
转载自http://blog.jobbole.com/94962/ 提升 Web 应用的性能变得越来越重要.线上经济活动的份额持续增长,当前发达世界中 5 % 的经济发生在互联网上(查看下面资源的统计 ...
- async/await 的基本实现和 .NET Core 2.1 中相关性能提升
前言 这篇文章的开头,笔者想多说两句,不过也是为了以后再也不多嘴这样的话. 在日常工作中,笔者接触得最多的开发工作仍然是在 .NET Core 平台上,当然因为团队领导的开放性和团队风格的多样性(这和 ...
- 在MongoDB中创建一个索引而性能提升1000倍的小例子
在https://www.cnblogs.com/xuliuzai/p/9965229.html的博文中我们介绍了MongoDB的常见索引的创建语法.部分同学还想看看MongoDB的威力到底有多大,所 ...
- 再谈HTTP2性能提升之背后原理—HTTP2历史解剖
即使千辛万苦,还是把网站升级到http2了,遇坑如<phpcms v9站http升级到https加http2遇到到坑>. 因为理论相比于 HTTP 1.x ,在同时兼容 HTTP/1.1 ...
随机推荐
- C++走向远洋——63(项目二2、两个成员的类模板)
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- HTTP协议 有这篇文章足够了
HTTP 协议详解 HTTP(HyperText Transfer Protocol)超文本传输协议.其最初的设计目的是为了提供一种发布和接收HTML页面的方法. HTTP是一个客户端(用户)和服务端 ...
- 一位资深程序员大牛推荐的Java技术学习路线图
Web应用,最常见的研发语言是Java和PHP. 后端服务,最常见的研发语言是Java和C/C++. 大数据,最常见的研发语言是Java和Python. 可以说,Java是现阶段中国互联网公司中,覆盖 ...
- No CPU/ABI system image available for this target
在创建AVD设备的时候无法正常创建虚拟设备,CPU选项不能选择. 下面报错:No CPU/ABI system image available for this target 是因为SDK里面缺少了s ...
- mysql in与exists区别
1.exists是对外表做loop循环,每次loop循环再对内表(子查询)进行查询,那么因为对内表的查询使用的索引(内表效率高,故可用大表),而外表有多大都需要遍历,不可避免(尽量用小表),故内表大的 ...
- vue之initComputed模块源码说明
要想理解原理就得看源码,最近网上也找了好多vue初始化方法(8个init恶魔...) 因为也是循序渐进的理解,对initComputed计算属性的初始化有几处看得不是很明白,网上也都是含糊其辞的(要想 ...
- Object-Oriented Programming Summary Ⅳ
目录 UML单元总结博客 总结本单元两次作业的设计 总结自己在四个单元中架构设计以及OO方法理解的演进 总结自己在四个单元中测试理解与实践的演进 总结自己的课程收获 立足于自己的体会给课程组提三个具体 ...
- Python一键转Jar包,Java调用Python新姿势!
粉丝朋友们,不知道大家看故事看腻了没(要是没腻可一定留言告诉我^_^),今天这篇文章换换口味,正经的来写写技术文.言归正传,咱们开始吧! 本文结构: 需求背景 进击的Python Java和Pytho ...
- 内网渗透之信息收集-Linux系统篇
linux 系统信息 grep MenTotal /proc/meminfo #查看系统内存总量 cat /etc/issue #查看系统名称 cat /etc/lsb-release #查看系统名称 ...
- 音频相关 ALSA ffmpeg ffplay 命令用法 g7xx
采样率: samples 441100 每秒 DAC/ADC 采样的频率,声卡一般还支持 48k 8k 等模式. 通道:channels 2声道 左右声道 也有单声道的声音,5.1 声道 位数: 16 ...