最近放出来了一篇CVPR2019论文,文章提出了一种新的高效卷积方式:HetConv,在CIFAR10、ImageNet等数据集超过了标准卷积以及DW+PW的高效卷积组合形式,取得了更高的分类性能。

论文链接:https://arxiv.org/abs/1903.04120

【Motivation】

目前提高CNN性能的主要手段有:

  1. 增加模型宽度和深度。这样带来的代价是计算量会变得非常大。
  2. 设计更高效的卷积结构。比如depthwise conv、pointwise conv、groupwise conv等。这一类卷积结构的特点是计算量相比标准卷积小,代替原始的标准卷积方式可以较少一定的计算量,同时保持较高的精度。
  3. 为追求更快更小的网络结构,用剪枝(model pruning)的手段进行模型压缩(model compression),包括connection pruning、filter pruning、quantization等方式。模型剪枝的方式在某些方面很有效,缺点是得到一个好的模型通常需要大量的训练时间。训练-剪枝-再训练(fine-tune)的方式带来的计算资源和时间成本非常大,且最后不一定能得到令人满意的压缩模型。

目前来看,性价比最高的就是采用高效的轻量级网络,代表性的有:Xception、MobileNet系列、ShuffleNet系列。为了取得更高的性能,必须要精心设计网络结构,实现accuracy-speed trade-off。

设计一个新的有效的网络结构不是一件容易的事,需要不断的试错、总结,文章从卷积方式入手,提出了一种新的卷积方式来代替原来的卷积,取得了更好的实验效果。

像标准卷积、DW、PW、GW式的卷积的一个共同点就是所有的卷积核大小一致,称为“Homogeneous Convolution”,比如3x3x256的conv2d,每个卷积核的尺寸都是3x3大小。

文章提出的“Heterogeneous Convolution”,顾名思义,就是卷积核的尺寸大小不一。比如在有256个通道的卷积核中,一部分kernel size为1,另一部分kernel size为3。

HetConv带来的好处是可以无缝替换VGG、ResNet、MobileNet等结构的卷积形式,这种新的卷积形式,可以向标准卷积一样,从新开始训练,得到比pruning更好的性能效果。文章还指出,HetConv与标准卷积一样,实现latency zero。

【Method】

HetConvolution的方式很简单,就是将一部分卷积核尺寸设置为K,另一部分设置为1。更直观的可以看下图。

计算量的分析:

【标准卷积】计算量:

其中

是卷积输出特征图的尺寸,M是输入通道数,N是输出通道数,K是卷积核尺寸。

HetConvolution:假设输入通道数为M,有比例为P的卷积核尺寸为K,这样的kernel数为

,其他都是
大小,这样的kernel数为

那么

卷积的计算量为:
卷积的计算量为:

因此总的计算量为:

HetConvolution与标准卷积的计算量之比:

当P=1时,HetConv变为标准卷积,计算量之比为1。

【DW+PW】计算量:

(原文有误)

DW+PW与标准卷积的计算量之比:

由公式(3)可知,增大P,HetConv变为标准卷积,控制P的大小,可以控制accuracy和FLOPs。

极端情况下,P=M的时候,公式(3)和(5):

因此,MobileNet比HetConvolution计算量更大。

【GW+PW】计算量:

与标准卷积的计算量之比:

由公式(3)和(8)可知,P=G的时候:

HetConv的计算量比GW+PW更少。

【Experiments】

作者选取了VGG、ResNet、MobileNet等网络,通过在CIFAR-10、ImageNet数据集上的实验验证HetConv的有效性。

【总结】

文章提出了一种新的卷积方式,通过计算FLOPs和实验证明,HetConv可以在更少计算量的上面取得更高的精度,文章也和model conpression进行了对比,从实验结果来看,效果也挺明显。HetConv可以和现有的网络结构结合,操作简单方便。

对于HeConv的实用性方面可能还需要时间来证明,毕竟理论计算量和实际情况还是有些差距,另外作者没有在detection、segmentation任务做实验,但从分类任务来说,缺少一定的可信度。希望尽快有开源实现。

和卷积的区别_[CVPR2019]:最新高效卷积方式HetConv相关推荐

  1. padding和卷积的区别_池化、池化与卷积异同、zero-padding

    1 池化(pooling)层的理解 池化,也即降采样(subsample),降低数据的大小. 池化(pooling) 2 池化方法 常用的池化方法是:最大值池化(max_pooling),平均值池化. ...

  2. 拉普拉斯算子属于卷积方法吗_论文笔记 - 图卷积神经网络综述

    文献题目:图卷积神经网络综述 文献来源:计算机学报,2019 文献原文:https://kns.cnki.net/kcms/detail/11.1826.tp.20191104.1632.006.ht ...

  3. padding和卷积的区别_NiN:使用11卷积层替代全连接层

    微信公号:ilulaoshi, 原文发表在我的个人网站:https://lulaoshi.info/machine-learning/convolutional/nin.html LeNet.Alex ...

  4. zoho邮箱收费和免费区别_您需要了解有关适用于ios和android的新zoho vault移动应用程序的所有信息...

    zoho邮箱收费和免费区别 The secret phrase is the true standard of computerized validation and access. Any run ...

  5. CVPR2019| 最新CVPR2019论文:含目标检测、分割、深度学习、GAN等领域

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 推荐几篇CPRR2019最新论文,含目标检测.分割.深度表示.GAN等领域 [1]Strong-Weak Distr ...

  6. MobileNets:用于移动视觉应用的高效卷积神经网络

    MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications[翻译] {howarda,meng ...

  7. Winograd,GEMM算法综述(CNN中高效卷积实现)(下)

                   CNN高效卷积实现算法和应用综述(下) 论文分析 1. Fast Algorithms for Convolutional Neural Networks 分析的第一篇文 ...

  8. Winograd,GEMM算法综述(CNN中高效卷积实现)(上)

                           高效卷积实现算法和应用综述(上) 在下一篇文章会介绍Winograd算法的应用,在ICLR,CVPR,FPGA,FCCM等机器学习和FPGA领域的定会上的 ...

  9. 卷积神经网络结构_卷积神经网络

    卷积神经网络结构 CNN's are a special type of ANN which accepts images as inputs. Below is the representation ...

最新文章

  1. 机器学习算法加强——聚类
  2. java B2B2C电子商务平台分析之八--配置中心svn示例和refresh
  3. java虚拟机性能监控调优及原则
  4. 本期课程已满,欢迎关注后续期次 | 临床基因组学数据分析实战助力解析Case,快速发表文章...
  5. Spring Cloud 微服务实战系列-Eureka注册中心(二)
  6. 布客·ApacheCN 编程/后端/大数据/人工智能学习资源 2022.2
  7. linux修改vcf编码格式,VCF乱码终极解决大法
  8. 计算机课题推荐人意见,课题推荐人意见
  9. linux系统下回收站,Linux怎么开启回收站功能
  10. c语言 char *str 与char str[]区别
  11. #2013年Google官方技术求职大礼包#面试求职技巧篇
  12. 利用shell脚本解决区块链Fabric学习时下载Docker镜像失败和费时问题
  13. Linux系统用户添加到用户组
  14. java 历届试题 农场阳光 蓝桥杯1040
  15. app运营,如何提高用户的参与度?
  16. matlab三个商人三个随从,数学建模 商人过河
  17. 两周自制编程语言读书总结
  18. 研究生如何做好科研和发表文章
  19. iOS 应用退到管理后台 左上角图片未更新(或不显示)
  20. 财务管理系统是计算机,《计算机财务管理》PPT课件.ppt

热门文章

  1. 未明确定义列存储过程没问题_使用Apache Kudu和Impala实现存储分层
  2. python大数字计算时没有响应_linux-为什么在尝试计算非常大的数字时Python会“抢先”挂起?...
  3. 20211028 调节和跟踪
  4. Codeforces 1159A A pile of stones
  5. 操作系统及编程语言历史以及shell命令
  6. Andrew Ng机器学习课程7
  7. c# 中的as,is
  8. 线性回归与梯度下降法
  9. @Autowired注解警告Field injection is not recommended
  10. div实现返回符,倒三角,椭圆+小知识收集