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


本文转载自知乎,已获作者授权转载,请勿二次转载。

https://zhuanlan.zhihu.com/p/104447447

本文介绍我们最新的工作《Progressive Local Filter Pruning for Image Retrieval Acceleration》,采用剪枝方法解决深度网络图像检索的加速问题。

一、简介:

近年来,深度学习在图像检索领域取得了“垄断性”地位,而“深”层网络的应用,如Resnet, Densnet等,也在不断刷新图像检索领域的记录。然而,鲜有文章关注检索速度的优化。在实际应用中,图像检索速度是考核应用系统重要指标之一。

为提高图像检索网络的执行效率,模型压缩是一种可行的方案。现有模型压缩方法大多用于解决分类任务,其网络输出为离散的类别信息。与分类任务不同,图像检索网络的输出一般为连续的特征数据。

因此,图像检索网络对于压缩算法更加敏感。也就是说,网络微小改动,可能导致输出特征发生较大变化。为解决此问题,我们提出以下两点解决方案:

二、方法:

1. 尽量保持卷积层filter的原有分布

图1 不同剪枝方法对filter分布的影响

现有剪枝方法中,全局-中心(global center-based)法是一种被广泛应用的方法:针对某一卷积层,该类方法首先选定一个参考中心点,然后根据filter与该中心点的距离对filter进行排序,离中心越近的filter将会被优先删除(如图1(a)左边图中红色的圆点)。

然而,该剪枝方式容易造成剪枝后filter分布出现较大变化(如图1(b)的中间图)。

为解决这一问题,我们采用基于局部的方法:优先选择并删除局部关系最紧密的filter,即若某个filter与其邻接的filter足够相似,则其可被安全删除(如图1(a)右边图中红色的圆点)。由于该方法是对filter的局部修改,因此易于保持filter的整体分布不变(如图1(b)最右侧图)。

2. 尽量保持预训练模型的表征力(Representation ability)

我们希望尽量保持预训练模型表征力不变。然而,删除filter容易造成网络容量(Capacity)变小,进而影响网络输出特征。软剪枝(Soft pruning)类方法将待删除filter先置0,并在微调(finetune)过程中给予其一定机会恢复权重,能够在一定程度上缓解直接删除filter带来的网络容量损失的问题。但若删除filter的比例较大时,其也会严重影响网络表征力。为此,我们提出一种filter权重衰减策略,在训练过程中对待删除filter的权重缓慢减小,即权重乘以衰减因子г,直至其收敛为0或接近于0。

图2 剪枝方法流程

图2展示了我们方法的框架。以图中第二层网络为例,首先根据该层中filter的局部信息,筛选出冗余filter(如橘色的方框)并减小其权重值。在下一次训练(Epoch)中,所有的filter(包括冗余filter)又重新被finetune一次,这时如果有的冗余filter比较重要,则其权重会被重新恢复(如绿色方框)。重复执行此过程,直至冗余filter的权重均被置为0或者接近于0。这时,我们再从网络中删除这些冗余的filter得到压缩后的网络。

三、实验结果-局部信息重要性

我们在两个图像检索(基于VGG-16)数据集Oxford5K和Paris6K,和一个行人重识别(基于Resnet-50)Market-1501数据集上验证了所提出的方法。

表1显示了我们方法在行人重识别Market-1501数据集上的效果,其中k代表局部信息计算的范围,k越大则将在对每一个filter排序时考虑其更多邻接信息。

表1 不同方法行人重识别Market-1501数据集上的效果

从图中可以看出,我们的方法在不同剪枝比例上均优于其它方法,且剪枝比例越大,优势越大。当删除90%的filter时,我们的方法在mAP上至少超越其它方法8%。说明局部剪枝相对全局剪枝具有较大的优势。同时,我们发现,当剪枝比例较少时,大k容易获得好的效果,反之,当剪枝比例较大时,小k更有优势。这一现象有利于我们确定k的值。

同样,如下表,在图像检索应用上,我们方法同样能够在压缩率较高或者相当的情况下,取得要优于其它方法的结果。

四、实验结果-权重衰减的重要性

下图展示了我们的方法在给定不同权重衰减因子г的mAP值变化情况,其中,г越大权重衰减速度越慢,反之衰减越快。可以看出,当剪枝比例较小时,方法对于г并不敏感,反之,当剪枝比例较大时,较小г有利于获得好的结果。

同时,我们也对比了不同算法剪枝后网络(剪枝比例90%)与原始模型(未剪枝)输出特征的欧氏距离。从下表可以看出,我们的方法与原始模型输出特征最为接近。以上实验结果也验证了我们之前的假设,即当剪枝比例较大时,权重衰减策略有利于保持预训练模型表征力。

五、实验结果-特征图

下图我们的方法中(在剪枝90%情况下)Resnet-50第一个卷积层特征图(feature maps)(下标从0至63),其中红色边框图表示被剪枝的特征图。可以看出,这些被剪枝的特征图包括了行人的上衣(59)、帽子(57)、裤子(28)等的特征,这些图均可被其它特征图取代,如上衣(11,42),帽子(1,53),裤子(20,22)等。

文章链接:

https://arxiv.org/abs/2001.08878

目前作者在整理代码,后续会开源,欢迎大家持续关注。


图像视频检索交流群

关注最新最前沿的图像视频检索技术,扫码添加CV君拉你入群,(如已为CV君其他账号好友请直接私信)

(请务必注明:检索)

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

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


长按关注我爱计算机视觉

剪枝实践:图像检索如何加速和省显存 ?相关推荐

  1. 【半精度】Pytorch模型加速和减少显存

    如标题所示,这是PyTorch框架提供的一个方便好用的trick:开启半精度.直接可以加快运行速度.减少GPU占用,并且只有不明显的accuracy损失. 之前做硬件加速的时候,尝试过多种精度的权重和 ...

  2. GLM国产大模型训练加速:性能最高提升3倍,显存节省1/3,低成本上手

    作者|BBuf.谢子鹏.冯文 2017 年,Google 提出了 Transformer 架构,随后 BERT .GPT.T5等预训练模型不断涌现,并在各项任务中都不断刷新 SOTA 纪录.去年,清华 ...

  3. 深度学习之GPU显存与利用率 浅析小结

    相信很多人,包括我在内,都对GPU的显存抱有不小的怨念,CUDA out of memory之类的问题一直困扰着咱等,今天这篇文章就是来浅析一下,说不定会有所帮助 首先就一笔带过说一下GPU的重要性吧 ...

  4. 解决测试阶段显存增大问题

    转自简书:解决 pytorch 在训练时由于设置了验证集导致 out of memory (同样可用于测试时减少显存占用) 问题描述 在跑pytorch的时候,在训练阶段监控到显存占用2.7G左右,但 ...

  5. 模型训练慢和显存不够怎么办?GPU加速混合精度训练

    目录 混合精度训练 理论原理 三大深度学习框架的打开方式 Pytorch Tensorflow PaddlePaddle 混合精度训练 一切还要从2018年ICLR的一篇论文说起... <MIX ...

  6. 核心频率个加速频率_NVIDIA GTX 1650正式升级GDDR6显存:核心频率砍一刀

    NVIDIA近日正式升级了RTX 20.GTX 16系列游戏本显卡,全部标配GDDR6显存,与此同时,桌面上唯一还在使用GDDR5显存的入门级图灵显卡GTX 1650也得到了升级,搭上了GDDR6的末 ...

  7. STM32CubeMX | 42 - 使用DMA2D加速显存数据传输

    一.使用CPU搬运数据到显存 在上一篇文章中讲述了如何配置 LTDC 驱动 RGB 屏幕:STM32CubeMX | 41-使用LTDC驱动TFT-LCD屏幕(RGB屏). 本节中我们接着上一节的实验 ...

  8. 综述:PyTorch显存机制分析

    作者 | Connolly@知乎(已授权) 来源 | https://zhuanlan.zhihu.com/p/424512257 编辑 | 极市平台 导读 作者最近两年在研究分布式并行,经常使用Py ...

  9. 3_深度学习中显卡的使用和显存的分配(20181213)

    深度学习中显卡的使用和显存的分配(20181213) 1.查看机器上GPU的使用情况 2.tensorflow 中显卡使用和显存分配 1.显卡的使用,单显卡和多显卡调用 1.通过设置环境变量设置 禁用 ...

最新文章

  1. BYOD革命挑战企业IT安全
  2. 领悟Web设计模式(转)
  3. word图片自动换行不亮_Word自动换行版式不变形
  4. django安装--mac系统
  5. 对一致性Hash算法,Java代码实现的深入研究
  6. J-LINK序列号修改
  7. php动态渲染和静态渲染,php,vue,vue-ssr 做出来的页面有什么区别?
  8. (七)Vue 项目规范
  9. js触发asp.net的Button的Onclick事件
  10. delphi 异步 调用 带参数_如何在 Spring 异步调用中传递上下文
  11. android状态栏背景色和图标颜色更改总结
  12. 使用游标正确提取SQL Server数据并将其放置在Reporting Services矩阵中
  13. 为什么都建议学java而不是python-为什么入门大数据选择Python而不是Java?
  14. STM32CubeMX 安装提示需要java环境(1.8.0_45)
  15. 永久删除计算机文件怎么操作步骤,如何彻底删除电脑中的文件 永久删除文件方法...
  16. java available_关于InputStream类的available()方法
  17. python 在线客服_如何利用Python实现简单全双工在线客服系统!这个有点东西!...
  18. python如何创建一个新的文件夹
  19. 三种前端常用布局及其优缺点
  20. 已知抛物线与直线相交两点和抛物线顶点,求抛物线和直线所围成的面积?

热门文章

  1. php安装了openssl扩展,php如何安装openssl扩展?
  2. oracle数据库dblink创建语句_3场直播丨达梦DM8数据库安装部署初体验、新基建下的国产数据库应用和发展趋势、Oracle外部表创建与使用...
  3. JScharts快速入门
  4. Delphi 7下最小化到系统托盘
  5. 电脑qq收藏在哪里打开_外贸询盘怎么来?零成本用Linkedin批量开发客户!外贸人收藏...
  6. linux7给用户授权,CentOS7 添加新用户并授权
  7. wordpress php执行短代码_PHP 8.0发布日期和PHP中JIT的状态
  8. 网易云api如何调用_分析网易云音乐API的经历
  9. 老年机按键串号_为什么老人机依然很多人在用?
  10. android动态壁纸提取,[图]大神已提取出一加8T的动态壁纸:Android 8.0+设备均可使用...