CondConv: Conditionally Parameterized Convolutions for Efficient Inference(CVPR2020)

paper:https://link.zhihu.com/?target=https%3A//arxiv.org/abs/1904.04971
code:https://link.zhihu.com/?target=https%3A//github.com/tensorflow/tpu/tree/master/models/official/efficientnet/condconv

该文是谷歌大神Quov V.Le出品,一种条件卷积,也有人称之为动态卷积。 卷积是当前CNN网络的基本构成单元之一,它的一个基本假设是:卷积参数对所有样例共享。作者提出一种条件参数卷积,它可以为每个样例学习一个特定的卷积核参数,通过替换标准卷积,CondConv可以提升模型的尺寸与容量,同时保持高效推理。作者证实:相比已有标准卷积网络,基于CondConv的网络在精度提升与推理耗时方面取得了均衡(即精度提升,但速度持平)。在ImageNet分类问题中,基于CondConv的EfficientNet-B0取得了78.3%的精度且仅有413M计算量。

Introduce

现有CNN的一个基本假设:对所有样例采用相同的卷积参数。这就导致:为提升模型的容量,就需要加大模型的参数、深度、通道数,进一步导致模型的计算量加大、部署难度提升。由于上述假设以及终端部署需求,当前高效网络往往具有较少的参数量。然而,在某些计算机视觉应用中(如终端视频处理、自动驾驶),模型实时性要求高,对参数量要求较低。
作者提出一种条件参数卷积用于解决上述问题,它通过输入计算卷积核参数打破了传统的静态卷积特性。特别的,作者将CondConvCondConvCondConv中的卷积核参数化为多个专家知识的线性组合(其中,α1,⋅⋅⋅,αnα_1,···,α_nα1​,⋅⋅⋅,αn​是通过梯度下降学习的加权系数):(α1W1+⋅⋅⋅+αnWn)∗x(α_1W_1+···+α_nW_n)*x(α1​W1​+⋅⋅⋅+αn​Wn​)∗x。为更有效的提升模型容量,在网络设计过程中可以提升专家数量,这比提升卷积核尺寸更为高效,同时专家知识只需要进行一次组合,这就可以在提升模型容量的同时保持高效推理。

Condconv可以替代现有的CNN架构中的卷积层,在我们的分析中,我们发现CondConv层通过示例学习语义上有意义的关系来计算条件卷积核。

Method

在常规卷积中,其卷积核参数经训练确定且对所有输入样本”一视同仁“;而CondConv中,卷积核参数通过对输入进行变换得到,该过程可以描述为:

其中αi=ri(x)\alpha_i = r_i(x)αi​=ri​(x)一个样本依赖加权参数。在CondConv中,每个卷积核WiW_iWi​具有与标准卷积核参数相同的维度。
常规卷积的容量提升依赖于卷积核尺寸与通道数的提升,将进一步提升的网络的整体计算;而CondConv则只需要在执行卷积计算之前通过多个专家对输入样本计算加权卷积核。关键的是,每个卷积核只需计算一次并作用于不同位置即可。这意味着:通过提升专家数据量达到提升网络容量的目的,而代码仅仅是很小的推理耗时:每个额外参数仅需一次乘加。
CondConv等价于多个静态卷积的线性组合,见上图b。
因此它具有与n个专家同等的容量,但计算更为高效。而这其中最关键的是:加权参数αi\alpha_iαi​。它必须具有数据依赖,否则CondConv将等价于静态卷积。
那么要如何设该数据依赖参数αi\alpha_iαi​?作者采用三个步骤计算该参数:

其中RRR是一个学习到的路由权值矩阵,将合并后的输入映射到n个专家权值。
对于输入xxx,首先做GlobalAveragePooling,随后右乘一个矩阵RRR(该矩阵的目的是将维度映射到n个expert上面,以实现后续的线性组合),最后通过sigmoid将每一个维度上的权值规约到[0,1]区间。
所提CondConv可以对现有网络中的标准卷积进行替换,它同时适用于深度卷积与全连接层。

很明显,这里所提的CondConv就是一种标准的动态滤波器卷积,只不过它这里卷积核设计方式与已有其他动态滤波器卷积存在一些区别,但本质不变:数据依赖性。

Conclusion

​ 总而言之,作者在静态卷积之外提出一种条件参数卷积:CondConv。它打破了静态卷积的假设:卷积核对所有输入“一视同仁”。这为提升模型容量同时保持高效推理打开了一个新的方向:提升卷积核生成函数的尺寸与复杂度。由于卷积核参数仅需计算一次,相比卷积计算,这些额外的计算量可以忽略。也就是说:提升卷积核生成的计算量要远比添加更多卷积或更多通道数高效。CondConv同样突出一个重要的研究问题:如何更好的覆盖、表达与利用样本的相关性以提升模型性能。

参考博客:

①https://zhuanlan.zhihu.com/p/141868898
②https://blog.csdn.net/m0_45447650/article/details/123994972

③https://blog.csdn.net/weixin_44402973/article/details/115055332?spm=1001.2014.3001.5501
CondConv代码实现流程图(Tensorflow)

计算输入样本对用的各自的卷积核的权重,具体流程如下:

CondConv: Conditionally Parameterized Convolutions for Efficient Inference论文解读相关推荐

  1. 【论文笔记】CondConv: Conditionally Parameterized Convolutions for Efficient Inference

    论文 论文题目:CondConv: Conditionally Parameterized Convolutions for Efficient Inference 论文地址:https://arxi ...

  2. CondConv: Conditionally Parameterized Convolutions for Efficient Inference

    用于有效推断的条件参数化卷积 摘要 引言 相关工作 条件参数化卷积 结论 对比 文章与代码 摘要 卷积层是现代深度神经网络的基本构件之一.一个基本假设是,卷积核应该为数据集中的所有示例共享.我们提出了 ...

  3. 【LeViT: a Vision Transformer in ConvNet’s Clothing for Faster Inference论文解读】

    LeViT: a Vision Transformer in ConvNet's Clothing for Faster Inference论文解读 前言 0.摘要 1.introduction 2. ...

  4. 一文看尽深度学习中的20种卷积(附源码整理和论文解读)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 引言 卷积,是卷积神经网络中最重要的组件之一.不同的卷积结构有着不一样的功能,但本质上都是用于提取特征 ...

  5. 2021-06-26一文看尽深度学习中的20种卷积(附源码整理和论文解读)

    卷积,是卷积神经网络中最重要的组件之一.不同的卷积结构有着不一样的功能,但本质上都是用于提取特征.比如,在传统图像处理中,人们通过设定不同的算子来提取诸如边缘.水平.垂直等固定的特征.而在卷积神经网络 ...

  6. 【论文笔记】Resolution Adaptive Networks for Efficient Inference (CVPR2020)

    Resolution Adaptive Networks for Efficient Inference Motivation Method Experiments 借鉴意义与思考 论文地址:http ...

  7. 韩松EIE:Efficient Inference Engine on Compressed Deep Neural Network论文详解

    EIE为韩松博士在ISCA 2016上的论文.实现了压缩的稀疏神经网络的硬件加速.与其近似方法的ESE获得了FPGA2017的最佳论文. 目录 一.背景与介绍 1.1 Motivation 1.2 前 ...

  8. 韩松 EIE: Efficient Inference Engine on Compressed Deep Neural Network论文详解

    EIE为韩松博士在ISCA 2016上的论文,实现了压缩的稀疏神经网络的硬件加速. 与其近似方法的ESE获得了FPGA2017的最佳论文. 背景与介绍 最新的DNN模型都是运算密集型和存储密集型,难以 ...

  9. [论文阅读] EIE: Efficient Inference Engine on Compressed Neural Network

    这是收录于ISCA16(International Symposium on Computer Architecture). 其是Deep Compression以及DSD的系列篇,其在Deep Co ...

最新文章

  1. 团队离职率30%,被CTO怼了:这5招记住了,再有人离职,先把自己裁了!
  2. python -opencv 使用滑动条 cv2.createTrackbar,cv2.getTrackbarPos(), cv2.setTrackbarPos
  3. 双11大幕拉开,菜鸟智能机器人也将测试运行
  4. Web开发者用什么编辑器?
  5. 比Visio快10倍的画图工具来了!赶紧整上~
  6. CentOS上Nginx服务器安装phpmyadmin
  7. 基于正则化的特征选择
  8. 推荐一个以动画效果显示github提交记录的黑科技工具:Gource
  9. Spring DAO之JDBC
  10. 深度学习——模型的压缩和加速
  11. python 提升工作效率_Python那些事——5个提升生产效率的Python开发和配置的小技巧...
  12. 如何做一个国产数据库(七) 网络传输 java做订阅客户端
  13. GBDT 算法:原理篇
  14. Python零基础:第一个Python程序“hello world“ 背后的运行你懂了吗?
  15. java 多线程 信号量_Java核心-多线程(7)-并发控制器-Semaphore信号量
  16. linux查询redis版本_Docker安装Redis并介绍漂亮的可视化客户端进行操作
  17. (丘维声)高等代数课程笔记:商空间
  18. 2038:最大数位置(题目来源于信息奥赛一本通官网)
  19. google chrome
  20. Android OpenGL ES(十一):绘制一个20面体

热门文章

  1. js+json实现哔哩哔哩番剧时间表
  2. 领带的打法10种——男士必看(图)
  3. CHI的Cache Stashing和DVM操作
  4. 20/06/27 charles安装报【User installations are disabled via policy on the machine】解决方法
  5. 学术论文中的“重点与难点”怎么写?
  6. 从南极之争谈软件架构十个技巧,及…
  7. 体会现实生活的两个月(上)
  8. SVN :one or more files are in a conflicted state 一个或多个文件处于冲突状态
  9. 批量提取PPT里面包含的图片教程
  10. java毕业生设计宠物医院管理计算机源码+系统+mysql+调试部署+lw