关闭

ShiftCNN —— 基于量化的低精度网络表达

标签: 神经网络压缩
1524人阅读 评论(0) 收藏 举报
分类:

一个利用低精度量化技术实现的神经网络压缩与加速方案。 个人认为,这是低精度量化方面少有的具有一定工程可行性的方案(虽然文中没有给出详细的模型大小速度方面的指标)。

文章链接: 《ShiftCNN: Generalized Low-Precision Architecture for Inference of Convolutional Neural Networks》

模型转换示例代码: https://github.com/gudovskiy/ShiftCNN

相关背景

(1) 低精度数据表达

通常神经网络计算使用float32位。 有些人尝试用16bit或者8bit数据,但由于不再能使用现成的一些BLAS库,导致实际部署效率可能和设想相差较多。 另外,像BinaryNet(-1,+1)、ternary quantization(-1,0,+1)等,虽然可以采用移位操作来代替乘法,但往往导致网络性能下降较多。

(2) 卷积计算方式

除了在频率域计算卷积之外,利用矩阵乘法结合BLAS库是采用最多的卷积计算方法。 此外,也有一些采用查表法计算卷积的,但往往受限于码本导致性能不足。

(3) 最优量化

量化可以看作用离散码本描述样本分布。 优化目标(最大概率准则)和优化方法(L1和L2正则化)通常导致了神经网络参数呈现中心对称的非均匀分布。 因此,一个最佳的量化码本应当是一个非均匀分布的码本。 这也是为什么BinaryNet(-1,+1)、ternary quantization(-1,0,+1)这种策略性能不足的一个重要原因。


量化

ShiftCNN所采用是一种相当巧妙的类似于残差量化的方法。

完整的码本包含 \(N\) 个子码本。 每个码本包含 \(M=2^{B}-1\) 个码字,即每一个码字可以用 \(B\ bit\) 表示。
每个码本定义如下:

\(C_n = {0, \pm2^{-n+1},\pm2^{-n},…,\pm2^{-n-\lfloor M/2 \rfloor + 2}}\)

假设 \(N = 2,B=4\),则码本为

\(C_1 = {0,\pm2^{-1},\pm2^{-2},\pm2^{-3},\pm2^{-4},\pm2^{-5},\pm2^{-6}}\)

\(C_2 ={0,\pm2^{-2},\pm2^{-3},\pm2^{-4},\pm2^{-5},\pm2^{-6}},\pm2^{-7}\)

于是,每一个权重都可以使用 \(NB\ bit\) 的索引通过下式求和计算得到:

\(\hat{w_i}=\sum_{n=1}^{N}C_n[idx_i(n)]\)

整个对参数进行量化的流程如下:

需要注意的是,量化之前需要对参数进行范围归一化,即除以最大值的绝对值,这样保证参数的绝对值都小于1。

该量化方法具有码本小、量化简单、量化误差小的优点。


卷积计算

卷积计算的复杂度主要来自乘法计算。 ShiftCNN采用简单的移位和加法来实现乘法,从而减少计算量。

比如计算 \(y = wx\), 而 \(w\) 通过量化已经被我们表示成了类似于 \(2^{-1}+2^{-2}+2^{-3}\) 这种形式,于是 \(y = x>>1 + x>>2+x>>3\)。

应该注意到,尽管\(N\) 个子码本,每个码本都包含 \(M=2^{B}-1\) 个码字,但其实只有 \(P=M+2(N-1)\) 个不同的码字。

因此,本文的卷积的核心是对输入数据进行预计算,因为移位的情况有限。 假设输入纬度为 \(C\times H\times W\), 则我们可以提前计算所有可能的移位情况,得到 \((P-1)\times C\times H\times W\)。 这里减1是因为忽略码字为0的情况。

整个卷积的计算如下所示:其核心为一个移位单元以及一个累加单元。

其中累加单元如下:(主要是逻辑控制与求和)


实验

ShiftCNN量化后无需再训练。 个人觉得再训练应该会更好一点。

理论复杂度就不说了,没意思。虽然我预估计算量依然比较大。 文章还给出了一部分FPGA上的实验,但我其实最想看的是更多的横向对比,比如在PC或者Android设备上的速度对比之类的。

1
0
查看评论

CNN网络量化 - Quantized Convolutional Neural Networks for Mobile Devices

Quantized Convolutional Neural Networks for Mobile DevicesCVPR2016GitHub code: https://github.com/jiaxiang-wu/quantized-cnn本文主要是通过对CNN网络的量化,达到压缩模型大小及加...
  • cv_family_z
  • cv_family_z
  • 2016-08-24 14:35
  • 4191

【深度学习-CNN】CNN中的参数与计算量

一个卷积神经网络的基本构成一般有卷积层(convolutional layer)、池化层(pooling layer)、全连接层(fully connection layer)。本文以caffe中的LeNet-5为例,分析卷积层和全连接层的参数数量和计算量情况。 卷积层的基本原理就是图像的二维卷积,...
  • dzkd1768
  • dzkd1768
  • 2017-05-26 09:54
  • 4697

ShiftCNN —— 基于量化的低精度网络表达

一个利用低精度和量化技术实现的神经网络压缩与加速方案。 个人认为,这是低精度量化方面少有的具有一定工程可行性的方案(虽然文中没有给出详细的模型大小速度方面的指标)。 文章链接: 《ShiftCNN: Generalized Low-Precision Architecture for I...
  • zhongshaoyy
  • zhongshaoyy
  • 2017-11-16 16:05
  • 180

优化CNNs--量化方法进展介绍

介绍了最新的几种通过量化方法来优化卷积神经网络的网络结构
  • dnvtmf
  • dnvtmf
  • 2017-07-09 18:31
  • 921

论文笔记《Fully Convolutional Networks for Semantic Segmentation》

《Fully Convolutional Networks for Semantic Segmentation》,CVPR 2015 best paper,pixel level, fully supervised。 主要思路是把CNN改为FCN,输入一幅图像后直接在输出端得到dense pred...
  • happyer88
  • happyer88
  • 2015-08-02 11:50
  • 15062

MTCNN(Multi-task convolutional neural networks)人脸对齐

该MTCNN算法出自深圳先进技术研究院,乔宇老师组,是今年2016的ECCV。(至少我知道的今年已经一篇cvpr,一篇eccv了)。     进入正题 理论基础: 正如上图所示,该MTCNN由3个网络结构组成(P-Net,R-Ne...
  • AMDS123
  • AMDS123
  • 2017-02-08 18:17
  • 9656

图森未来开源:Mask R-CNN的完整MXNet复现

当地时间 10 月 22 日,计算机视觉国际顶级会议 ICCV 2017 公布了获奖论文。Facebook AI 研究员何恺明获得最佳论文奖,同时他也是最佳学生论文的作者之一。这篇文章是国内自动驾驶创业公司图森未来对最佳论文《Mask R-CNN》的完整复现,并将其开源到了Github 上。 ...
  • Uwr44UOuQcNsUQb60zk2
  • Uwr44UOuQcNsUQb60zk2
  • 2017-10-28 06:43
  • 317

深度学习CNN在FPGA上的加速方案

  • 2017-11-22 12:33
  • 1.92MB
  • 下载

FasterRCNN:提升网络的分类精度海康威视

目标检测FasterRCNN:提升网络的分类精度海康威视
  • wfei101
  • wfei101
  • 2017-12-03 18:14
  • 338

ShiftCNN —— 基于量化的低精度网络表达

一个利用低精度和量化技术实现的神经网络压缩与解决方案。 个人认为,这是低精度量化方面少有的具有高度工程可行性的一个方案(虽然文中没有给出详细的模型大小速度方面的指标)。文章链接: 《ShiftCNN: Generalized Low-Precision Architecture for Infere...
  • shuzfan
  • shuzfan
  • 2017-09-05 21:28
  • 1524
    个人资料
    • 访问:650007次
    • 积分:6839
    • 等级:
    • 排名:第4069名
    • 原创:135篇
    • 转载:11篇
    • 译文:1篇
    • 评论:523条