More is Less——卷积网络加速

一篇讲网络加速的论文,来自2017CVPR。

文章链接: 《More is Less: A More Complicated Network with Less Inference Complexitv》

Introduction

目前做神经网络加速的主要有这几个方面: 低秩分解,定点运算、矢量量化、稀疏表示、特殊的轻量级网络结构

再介绍本文方法之前,需要了解一下常见的卷积是怎样实现的。以caffe中的卷积为例,首先通过im2col将输入展开重排成一个大矩阵,然后执行矩阵乘法。具体可参考知乎上的一个高票回答,图示很清楚,

https://www.zhihu.com/question/28385679?sort=created

下面用公式说明一下:

假设输入 \(X\in R^{H\times W\times C}\), 一共有 \(T\)个 \(k\times k \times C\)大小的卷积核,再假设卷积stride=1且存在padding,即保证输出 \(V\) 的大小与输入一致。

首先,通过im2col将输入展开重排成一个大矩阵 \(\hat X\in R^{HW\times kkC}\), 卷积核也被整理成了一个矩阵 \(W \in R^{kkC\times T}\), 于是输出 \(V\in R^{H\times W\times T}\) 直接通过矩阵乘法计算:\(V = \hat X \times W\).

另一方面,我们通常使用ReLu来对进行激活处理: \(\hat V_{i,j,c} = max(V_{i,j,c},0)\). 结合上面的卷积实现原理,我们可以看出如果激活后某个点的所有通道都为0,就相当于在矩阵乘法时可以直接省略 \(\hat X\)的相应行。 遗憾的是,这有一点马后炮的感觉,因为我们计算完之后才知道是不是会得到0.

本文实现加速的核心就是:提前锁定哪些值将会为0,从而在矩阵乘法时直接避免相应运算。

Method

整体的实现如下图:

如上图,还是先假设输入 \(X\in R^{H\times W\times C}\), 一共有 \(T\)个 \(k\times k \times C\)大小的卷积核,再假设卷积stride=1且存在padding,即保证输出 \(V\) 的大小与输入一致。

黑色部分表示原始结构的卷积,橘黄色部分表示新增的一个辅助层,该辅助层的卷积参数有两种选择,第一种是 \(1\times1 \times C\times T\),第二种是 \(k\times k\times C\times 1\),以第二种为例,其卷积输出为 \(V^{‘} \in R^{H\times W\times 1}\)。

\(V^{‘}\)由于经过ReLU和一些稀疏约束,因此只有一部分值不为0。因此,根据\(V^{‘}\)我们可以控制计算原始卷积 \(V\)时,省略掉展开矩阵 \(\hat X\) 的对应行,从而完成加速

文章解释了为什么不使用第一种\(1\times1 \times C\times T\)来产生\(V^{‘}\),主要是因为这会导致没办法一次完成所有矩阵乘法。

从上面的解释来看,\(V^{‘}\)的稀疏度决定了加速比。

为了让 \(V^{‘}\) 更稀疏,文章一方面使用了ReLU激活,同时也尝试对 \(V^{‘}\)进行平滑的稀疏正则化\(L_1L_2(x) = \mu||x||+\rho |x|\), 但是发现很难优化。

后来作者发现BN+ReLU可以使得输出更稀疏:

Conclusion

文章将该方法称为low-cost collaborative layer (LCCL)。 Idea很赞,但是考虑到带来的训练难度,其产生的加速效果就不是很令人满意了。

文章在ResNet上进行了实验,下图是网络的基本模块:

下图是在ImageNet上的实验结果:

时间: 2024-11-01 16:52:17

More is Less——卷积网络加速的相关文章

深度卷积网络CNN与图像语义分割

转载请注明出处: http://xiahouzuoxin.github.io/notes/ 级别1:DL快速上手 级别2:从Caffe着手实践 级别3:读paper,网络Train起来 级别3:Demo跑起来 读一些源码玩玩 熟悉Caffe接口,写Demo这是硬功夫 分析各层Layer输出特征 级别4:何不自己搭个CNN玩玩 级别5:加速吧,GPU编程 关于语义分割的一些其它工作 说好的要笔耕不缀,这开始一边实习一边找工作,还摊上了自己的一点私事困扰,这几个月的东西都没来得及总结一下.这就来记录

R-FCN:基于区域的全卷积网络来检测物体

http://blog.csdn.net/shadow_guo/article/details/51767036 原文标题为"R-FCN: Object Detection via Region-based Fully Convolutional Networks ",作者代季峰 1,14年毕业的清华博士到微软亚洲研究院的视觉计算组,CVPR 16 两篇一作的会议主持人~ ╰(°▽°)╯ 同时公布了源码~ 2 后面主要内容为原文随便的翻译或概括.必有不紧贴原文原意之处,曲解请指出,否则

德国精品软件 Throttle 网络加速软件

Throttle(网络加速软件)是PGWare出品的网络加速软件,可自动根据处理器系列及操作系统版本进行优化!Throttle(网络加速软件)号称可以将你的 Internet 连接速度优化到200% 或者更高. 支持14.4.28.8.36.56K.Cable.ISDN.DSL等各种Modem.Throttle 可以使你的拨号连接更稳定和减少重新连接的次数, 这意味着你可以更快地下载和浏览 Internet. Throttle(网络加速软件)软件特点: 优化网速,直接提升下载速度,节约下载时间:

深度卷积网络

深度卷积网络 涉及问题: 1.每个图如何卷积: (1)一个图如何变成几个? (2)卷积核如何选择? 2.节点之间如何连接? 3.S2-C3如何进行分配? 4.16-120全连接如何连接? 5.最后output输出什么形式? ①各个层解释: 我们先要明确一点:每个层有多个Feature Map,每个Feature Map通过一种卷积滤波器提取输入的一种特征,然后每个Feature Map有多个神经元. C1层是一个卷积层(为什么是卷积?卷积运算一个重要的特点就是,通过卷积运算,可以使原信号特征增强

全卷积网络 FCN 详解

背景 CNN能够对图片进行分类,可是怎么样才能识别图片中特定部分的物体,在2015年之前还是一个世界难题.神经网络大神Jonathan Long发表了<Fully Convolutional Networks for Semantic Segmentation>在图像语义分割挖了一个坑,于是无穷无尽的人往坑里面跳. 全卷积网络 Fully Convolutional Networks CNN 与 FCN 通常CNN网络在卷积层之后会接上若干个全连接层, 将卷积层产生的特征图(feature m

基于图卷积网络的图深度学习

基于图卷积网络的图深度学习 先简单回顾一下,深度学习到底干成功了哪些事情! 深度学习近些年在语音识别,图片识别,自然语音处理等领域可谓是屡建奇功.ImageNet:是一个计算机视觉系统识别项目, 是目前世界上图像识别最大的数据库,并且被业界熟知. 我们先回顾一下,没有大数据支撑的欧式深度学习技术.对于一个字母"Z"的识别,我们通常是建立一个2D网格(点阵),如果将其中的点连接起来,定义这样的连接方式所形成的就是"Z".然后是用其他字母来测试,这个模型的正确性. 传统

使用Caffe完成图像目标检测 和 caffe 全卷积网络

一.[用Python学习Caffe]2. 使用Caffe完成图像目标检测 标签: pythoncaffe深度学习目标检测ssd 2017-06-22 22:08 207人阅读 评论(0) 收藏 举报  分类: 机器学习(22)  深度学习(12)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 2. 使用Caffe完成图像目标检测 本节将以一个快速的图像目标检测网络SSD作为例子,通过Python Caffe来进行图像目标检测. 必须安装windows-ssd版本的Ca

卷积网络训练太慢?Yann LeCun:已解决CIFAR-10,目标 ImageNet

卷积网络训练太慢?Yann LeCun:已解决CIFAR-10,目标 ImageNet Kaggle近期举办了一场 关于CIFAR-10数据集的竞赛,该数据集包含有6万个32*32的彩色图像,共分为10种类型,由 Alex Krizhevsky, Vinod Nair和 Geoffrey Hinton收集而来. 很多竞赛选手使用了卷积网络来完成这场竞赛,其中一些在该分类任务中靠着超乎人类能力的表现而得分.在本系列的博客中,我们将会分别采访三位选手和卷积网络之父.Facebook人工智能实验室主任

TensorFlow 中的卷积网络

TensorFlow 中的卷积网络 是时候看一下 TensorFlow 中的卷积神经网络的例子了. 网络的结构跟经典的 CNNs 结构一样,是卷积层,最大池化层和全链接层的混合. 这里你看到的代码与你在 TensorFlow 深度神经网络的代码类似,我们按 CNN 重新组织了结构. 如那一节一样,这里你将会学习如何分解一行一行的代码.你还可以下载代码自己运行. 感谢 Aymeric Damien 提供了这节课的原始 TensorFlow 模型. 现在开看下! 数据集 你从之前的课程中见过这节课的