点击我爱计算机视觉标星,更快获取CVML新技术


本文经授权转自机器之心,作者立早。

怎样用量化方法解决模型压缩问题?Facebook 近日提出了一个基于向量的量化方法,无需标注数据即可对 ResNet 模型进行20倍压缩,还能够获得很高的准确率。

概述

本文旨在解决类似 ResNet [1] 这类卷积网络的模型过大,推理速度慢的问题。相比较之前的量化方法,本文提出来一个向量量化方法,其主要思想是保存网络重建之后的输出而不是原始无压缩网络的权重。本文提出的方法无需标注数据,并且使用对 CPU 推理友好的字节对齐码本。实验证明,使用本文方法可对 ResNet 模型进行20倍压缩,并在ImageNet 上获得 76.1% 的 top-1准确率。与此同时,可将 Mask R-CNN 压缩至6MB的大小并保持不错的准确率。

论文地址:https://arxiv.org/abs/1907.05686

压缩方法的介绍和比较

神经网络压缩一直是个热门的研究方向,目前的主流方法主要有以下几种:

  • 低精度训练[2]。这类方法用低bit权重,优点是可以加速推理过程,利用位操作代替复杂的逻辑操作,但是同时也会带来一个比较大的精度下降。

  • 量化。向量量化(VQ[3])和乘积量化(PQ[4])是其中的典型。这种量化方法是将原始的高维向量分解至低维笛卡尔积,然后对分解得到的低维向量做量化,这种方法的缺点是对于深度网络会产生一个笛卡尔漂移。

  • 剪枝。根据一些特定的规则去除部分冗余的连接或者结构,剪枝方法的训练时间较长,且需要剪枝和再微调的反复迭代进行。

  • 调整结构。类似 SqueezeNet[5],NASnet,shuffleNet,MobileNet等,主要依赖的 DepthWise 和 PointWise 卷积,或者通道分类和通道打乱等等。

  • 蒸馏[6-7]。这种方法通常利用大模型或模型组的知识(概率分布)来训练小模型。

相比较以上的压缩方法,本文提出的量化方法注重于恢复网络的输出。跟PQ方法相比,本文是注重恢复压缩后的权重。同时,在训练的过程中,本文也运用了蒸馏的思想,用于提升压缩网络的精度。

算法介绍

全连接层量化

  • 背景介绍--PQ 方法介绍

我们知道,PQ 算法(Product Quantization)一开始是由法国 INRIA 实验室团队提出的用于图像压缩的一种算法,通常被用于信息压缩和检索方向。PQ 算法中,以全连接层量化为例。处理全连接层时,我们关注全连接权重,忽略偏差。首先将 W 的每一列分割成 m 个连续的子向量,然后对m*的子向量学习一个码本。

对于包含 k 个聚类中心的模板 C={c1,c2,,,ck},任意 W 的列向量 Wj 可以映射为量化的版本 q(wj)= (ci1,,,cim),其中下标 i1 表示的是 wj 的第一个子向量归属的码本的索引,以此类推其余的下标。通过量化如下的目标函数(1)来学习码本。

其中,w^ 表示量化的权重。这个目标函数可以通过 k-means 来最小化。当 m=1 时,PQ等价于 VQ(Vector Quantization),当 m=Cin 时,PQ  等价于标量 k-means。最后,PQ 生成了一个 k^m 大小的隐式码本。

通过对该算法的一个简要的回顾,我们不难看出,PQ 算法的重点点在于对权重的恢复,旨在减小压缩前后的权重信息损失。那么,这个方法在使用时有何缺点呢?我们可以看看如下的图(1)。

  • 本文算法以及算法求解

在这之前,我们一直强调本文的主要目的是恢复网络之后的输出值,而不是权重值。这其中的原因可以追溯到模型对样本的拟合能力,具体如下图所示:

图1:量化保存权重和本文方法的比较

在图1中,灰色线代表真实的分类器,红色线表示量化保存权重的标准方法训练得到的分类器,而绿色线是本文提出的方法。在in-domain中,可以看出,本文的方法可以比较好的拟合真实的分类器,而标准方法为了拟合out-of-domin领域的数据,在in-domain中反而带来了错误的分类。

笔者认为,该图从本质上显示了神经网络模型在拟合样布分布的时候,有一定的容错能力,也就是说对于噪声点或者异常信息有忽所忽略,而关注于正确的样本的分布,可以避免模型的过拟合。因此,在量化的时候,算法应该同时学习到模型的拟合能力以及泛化信息,而不是仅仅学习模型的参数信息。因此,引申出本文算法的压缩目的,恢复压缩输出信息,而不是PQ的恢复压缩权重信息。

因此,本文提出直接最小化重建输出值误差,在给定的输入值x的前提下,本文旨在缩小输出和重建输出之间的误差。改写目标函数(1)为如下函数(2)。

其中,y=xW表示原始网络的输出,

表示重建输出。

  • EM求解

    • E步:分配向量至最近的聚类中心

    • M步:根据E步组成的集合,更新码本C。

  • 复杂度分析

此类方法的本质上和 k-means 一致,每一列 m 个维度为 d 的子向量选择 k 个聚类中心,其算法的时间复杂度为 mkd。因此一个全连接矩阵的 PQ 的时间复杂为C_inC_out*k 。

对于一个常见的网络结果,卷积层是必不可少的部分,接下来,笔者将介绍如何对卷积层进行压缩处理的。

卷积层量化

  • 4D卷积分离求解

全连接的权重是个4D的矩阵,首先将这个矩阵reshape成一个二维的矩阵(C_inKK)Cout。然后将转换之后的矩阵每一维分离成C_in个大小为(kk)大小的子向量。具体如图(2)所示:
图2:4D卷积的reshape示意图

为了保证结果的一致性,同样的将输入 X 也 reshape 一下。然后运用目标函数中量化权重。

  • 算法复杂度分析

上面说到,对卷积运用算法压缩时,首先将 4D 的矩阵 reshape 成(C_inKK)Cout的矩阵,该矩阵可以看为全连接层的权重。接着,对矩阵运用 PQ压缩。结合3.1中PQ算法的时间复杂度,本文算法的时间复杂度可以表示为(C_inKK)C_out*k(可类比k-means算法)。

其中,K 为卷积核大小,k 为聚类中心的个数。

整个网络的量化

  • 自底向上的逐层量化

本文输入一个 batch 的图像,并从底层向上逐层量化网络。需要注意的是,在量化的过程中,使用的是当前层的输出值而不是非压缩网络的输出值。因为,在实验过程中,使用非压缩网络的输出值会带来一定的误差。

  • 微调 codebook

进行了逐层的量化学习之后,需要对整个网络进行微调。在这个过程中,本文使用非压缩网络作为 teacher 网络来指导压缩网络学习。蒸馏学习中,用 Kl 散度来作为蒸馏的损失,并用 SGD 来更新码本。

  • 整体微调 BN 参数

跟前一个过程相比较,这个过程将BN设置为训练模式,重复上述微调码本的过程。

实验介绍

  • ImageNet实验

图(3):resnet-18和resnet-50的压缩结果

图(3)表示的是在resnet-18和resnet-50的压缩大小和TOP-1之间的关系图。对比其他的算法,本文的量化方法在更高的压缩率上保证模型的精度。

表(1) 在给定大小的前提下的模型准确率对比

表(1)表示的是,在限定模型大小的前提下,本文的方法对比目前最优结构的 top-1 准确率,可以发现,本文的方法在半监督的情况下,准确率较高。

  • Detection实验

表(2)Mask R-CNN 实验

表(2)展示的是在 k=256(8bits) 的情况下,模型压缩因子大概 26 的情况下,量化模型下降约 4 个 AP 。

论文总结和分析

本文作为一篇网络压缩方向的论文,从本质上提出来了独特的量化方法,其提出的保存输出结果而不是保存权重的思想,从而可以拟合in-domain数据并且忽略out-of-domain的数据,这是很值得借鉴和思考的。从这个思想引申出来的量化方法,延续PQ方法的优点。

  1. 本文首要值得借鉴的是对压缩本质的思考,脱离传统的压缩权重的思想,另辟蹊径恢复输出。

  2. 从操作上来说,PQ等方法都是经典的算法,本文方法延续其内容,因此实现上难度不大。

但是,作为一个算法类的研究论文,笔者认为以下的方面还值得继续研究和探讨。

  1. 在训练过程中,k-means的思想是其重点,那么对于算法的复杂度分析部分,是否需要更具体的讨论。

  2. 在本文中,对于样本的采样和计算过程,也是值得继续研究的一个课题。

总体来说,本文的实验结果很充分地说明该方法的有效性。但是,这种带有训练机制的量化方法,从样本的采样,算法复杂度,训练过程上来说,都是一个耗时且不太可控的过程。

作者介绍:
立早,工学硕士,研究方向为模式识别。目前从事人脸识别、检测和神经网络压缩方向的工作。希望能够一直学习,多多交流,不断进步。

参考文献

[1] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for image
recognition. CoRR, 2015.
[2] Shuchang Zhou, Zekun Ni, Xinyu Zhou, He Wen, Yuxin Wu, and Yuheng Zou. Dorefa-net:
Training low bitwidth convolutional neural networks with low bitwidth gradients. CoRR, 2016.
[3] Yunchao Gong, Liu Liu, Ming Yang, and Lubomir Bourdev. Compressing deep convolutional
networks using vector quantization. arXiv preprint arXiv:1412.6115, 2014.
[4] Herv´ e J´ egou, Matthijs Douze, and Cordelia Schmid. Product Quantization for Nearest Neigh-
bor Search. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2011.
[5]Jie Hu, Li Shen, and Gang Sun. Squeeze-and-excitation networks. In Conference on Computer
Vision and Pattern Recognition, 2018.
[6] Geoffrey Hinton, Oriol Vinyals, and Jeff Dean. Distilling the knowledge in a neural network.
NIPS Deep Learning Workshop, 2014.
[7] Yu Cheng, Duo Wang, Pan Zhou, and Tao Zhang. A survey of model compression and accel-
eration for deep neural networks. CoRR, 2017.


模型压缩与应用部署交流群

关注最新最前沿的模型压缩、网络剪枝、知识蒸馏、轻量级网络设计、边缘设备算法部署技术,扫码添加CV君拉你入群,(如已为CV君其他账号好友请直接私信)

(请务必注明:部署)

喜欢在QQ交流的童鞋,可以加52CV官方QQ群:805388940。

(不会时时在线,如果没能及时通过验证还请见谅)


长按关注我爱计算机视觉

ResNet压缩20倍,Facebook提出新型无监督模型压缩量化方法相关推荐

  1. Github大热论文 | U-GAT-IT:基于GAN的新型无监督图像转换

    作者丨武广 学校丨合肥工业大学硕士生 研究方向丨图像生成 生成对抗网络(GAN)在这几年的发展下已经渐渐沉淀下来,在网络的架构.训练的稳定性控制.模型参数设计上都有了指导性的研究成果.我们可以看出 1 ...

  2. 真·无监督!延世大学提出图像到图像无监督模型,实验结果超SOTA

    图像翻译目的是用模型将源域图像转换到目标域图像,通常涉及标签图到场景图的转换.图像风格.人脸的属性变换.标签图到场景图的转换. 图像翻译任务自生成对抗网络提出就得到了快速发展,例如经典的pix2pix ...

  3. 图像太宽无法输出请裁剪图像或降低分辨率然后重试_真·无监督!延世大学提出图像到图像无监督模型,实验结果超SOTA...

    作者 | 蒋宝尚 编辑 | 丛 末 图像翻译目的是用模型将源域图像转换到目标域图像,通常涉及标签图到场景图的转换.图像风格.人脸的属性变换.标签图到场景图的转换. 图像翻译任务自生成对抗网络提出就得到 ...

  4. 【阅读论文】基于统计特征的无监督时间序列异常检测方法

    文章目录 摘要 1.介绍 2.相关工作 3.问题描述 4.方法 4.1 统计特征 4.2提取特征总结 4.3 学习阶段算法 4.4测试阶段算法 5.结果 5.1 YOB评价:单变量 5.3对合成数据集 ...

  5. 从易到难,针对复杂问题的无监督式问题分解方法

    论文标题: Unsupervised Question Decomposition for Question Answering 论文作者: Ethan Perez (FAIR,NYU), Patri ...

  6. NeurIPS 2021 Transformer部署难?北大华为诺亚提出Vision Transformer的后训练量化方法...

    关注公众号,发现CV技术之美 本文分享 NeurIPS 2021 论文『Post-Training Quantization for Vision Transformer』,由北大&华为诺亚联 ...

  7. 一种新的无监督前景目标检测方法 A New Unsupervised Foreground Object Detection Method

    14.一种新的无监督前景目标检测方法 A New Unsupervised Foreground Object Detection Method 摘要:针对基于无监督特征提取的目标检测方法效率不高的问 ...

  8. 腾讯优图提出LAP无监督多视角人脸3D重建算法,高清还原面部细节

    编辑丨腾讯优图AI开放平台 近日,腾讯优图实验室提出无监督多视角人脸3D重建算法LAP(Learning to Aggregate and Personalize),摆脱人脸3D训练样本真值依赖,高清 ...

  9. “张量网络压缩感知(TNCS)与无监督机器学习”学习笔记

    TNCS学习笔记 一.前情小故事 二.张量网络压缩感知(TNCS) 如何构造和优化∣ψ⟩\left| \psi \right\rangle∣ψ⟩ 如何通过在∣ψ⟩\left| \psi \right\ ...

最新文章

  1. 《Oracle从入门到精通》读书笔记第八章 管理表空间和数据文件之二
  2. Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 't
  3. 使用logrotate做nginx日志分割
  4. Python中type()详解:动态创建类
  5. Java多线程中的死锁问题
  6. 计算机应用基础教案本中职,计算机应用基础教案:计算机概述(中职教育)
  7. redis 查看key的有效期_redis中key设置过期时间
  8. 深入理解CSS六种颜色模式
  9. 修改ECSHOP后台的商品列表里显示该商品品牌
  10. linux内核的冷热页分配器
  11. 【论文写作】毕业论文怎么写?
  12. 定义一个复数类Complex,重载运算符“+”,
  13. 廖雪峰全套Java教程下载(稀有资源)
  14. linux压缩超过4g的文件吗,使用tar压缩文件,不能超过4G,有什么办法解决-
  15. 冒泡排序c语言子程序,C语言之冒泡排序算法
  16. 把代码和环境做成docker镜像_Jenkins把GitHub项目做成Docker镜像
  17. golang爬取免费代理IP
  18. 移动硬盘安装centos8
  19. 关键词竞争度如何分析?
  20. 『摄影知识』自然光的应用

热门文章

  1. 设计模式学习笔记——适配器(Adapter)模式
  2. 各种搜索算法比较--2015年7月26日16:42:45V1.0版
  3. 蔡高厅老师 - 高等数学阅读笔记 - 04 - 函数的连续性(18、19、20、21)
  4. java反射基础_Java反射基础(一)--Class对象获取
  5. java代码_Java 代码优化
  6. js计算器代码加减乘除_理不清亲戚关系,程序员直接写了一个亲戚关系计算器,来试试?...
  7. 注入点批量收集工具_如何批量处理短视频,剪辑片头片尾、加图片水印
  8. Docker 安装Node-Exporter+ Prometheus Server +Grafana
  9. php swoole hyperf,【php】Hyperf为什么要关闭Swoole协程短名称
  10. t分布表精确完整图_如何快速绘制临床论文基线特征表