1 写在前边的话

HetConv性能:当使用HetConv取代标准卷积之后,FLOPs大概是之前的1/8到1/3,更重要的是精度几乎不变!!!

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

2 HetConv的结构

实质:是分组卷积与逐点卷积结合的产物。具体如下:

对于卷积(标准卷积;深度卷积;分组卷积;逐点卷积)来讲,每一个filter的尺寸是完全一样的,文章中也称之为同构卷积。

所谓异构卷积,也就是说,对于同一个filter来讲,它的尺寸是不一样的,文章中是有两种。

这样讲可能有点抽象,举个例子来体会一下:

假设原有的一个fliter为:3x3xM,HetConv将M中M/P的3x3卷积核尺寸保留,剩余的M-M/P卷积核尺寸变为1x1的,其中P是一个比例系数。

上边讲的只是一个filter,现假设输出的通道数为N,HetConv是这样做的,假设第一个通道第一个3x3为在第一个位置开始,那么第二个通道中第一个3x3在第二个位置开始,以此类推,如下图所示:

3 计算量比较

假设输入特征图为:\(D_{i} \times D_{i} \times M\),输出的特征图为:\(D_{o} \times D_{o} \times N\),标准的卷积核为:\(K \times K \times M\)。

对于标准卷积来讲:

计算量为:\(D_{o} \times D_{o} \times M \times N \times K \times K\)

对于异构卷积来讲:

计算量为\(\left(D_{o} \times D_{o} \times M \times N \times K \times K\right) / P\) + \(\left(D_{o} \times D_{o} \times N\right) \times\left(M-\frac{M}{P}\right)\)

异构卷积的计算量/标准卷积的计算量=\(=\frac{1}{P}+\frac{(1-1 / P)}{K^{2}}\)

通过上式中,我们发现,当P=1时,异构卷积就是标准卷积!

对于深度可分离卷积来讲:

计算量为\(D_{o} \times D_{o} \times M \times K \times K+M \times N \times D_{o} \times D_{o}\)

深度可分离卷积的计算量/标准卷积的计算量=\(=\frac{1}{N}+\frac{1}{K^{2}}\)

论文中给出一个极端的case,当P=M时此时效果也比深度可分离卷积好,同时计算量也少,如下所示:

\(\frac{1}{M}+\frac{(1-1 / M)}{K^{2}}<\frac{1}{M}+\frac{1}{K^{2}}\)

对于分组卷积+逐点卷积来讲:

计算量为\(\left(D_{o} \times D_{o} \times M \times N \times K \times K\right) / G+M \times N \times D_{o} \times D_{o}\)

分组卷积+逐点卷积的计算量/标准卷积的计算量=\(\frac{1}{G}+\frac{1}{K^{2}}\)

当P=G时,有:

\(\frac{1}{P}+\frac{(1-1 / P)}{K^{2}}<\frac{1}{P}+\frac{1}{K^{2}}\)

综上所述:

异构卷积比深度可分离卷积,分组卷积计算量都少,并且识别精度还高!

4 代码实现

pytorch实现:https://github.com/sxpro/HetConvolution2d_pytorch

论文阅读笔记---HetConv的更多相关文章

  1. 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  2. 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  3. 论文阅读笔记 Word Embeddings A Survey

    论文阅读笔记 Word Embeddings A Survey 收获 Word Embedding 的定义 dense, distributed, fixed-length word vectors, ...

  4. 论文阅读笔记 Improved Word Representation Learning with Sememes

    论文阅读笔记 Improved Word Representation Learning with Sememes 一句话概括本文工作 使用词汇资源--知网--来提升词嵌入的表征能力,并提出了三种基于 ...

  5. [置顶] 人工智能(深度学习)加速芯片论文阅读笔记 (已添加ISSCC17,FPGA17...ISCA17...)

    这是一个导读,可以快速找到我记录的关于人工智能(深度学习)加速芯片论文阅读笔记. ISSCC 2017 Session14 Deep Learning Processors: ISSCC 2017关于 ...

  6. Nature/Science 论文阅读笔记

    Nature/Science 论文阅读笔记 Unsupervised word embeddings capture latent knowledge from materials science l ...

  7. 论文阅读笔记(二十一)【CVPR2017】:Deep Spatial-Temporal Fusion Network for Video-Based Person Re-Identification

    Introduction (1)Motivation: 当前CNN无法提取图像序列的关系特征:RNN较为忽视视频序列前期的帧信息,也缺乏对于步态等具体信息的提取:Siamese损失和Triplet损失 ...

  8. 论文阅读笔记(十八)【ITIP2019】:Dynamic Graph Co-Matching for Unsupervised Video-Based Person Re-Identification

    论文阅读笔记(十七)ICCV2017的扩刊(会议论文[传送门]) 改进部分: (1)惩罚函数:原本由两部分组成的惩罚函数,改为只包含 Sequence Cost 函数: (2)对重新权重改进: ① P ...

  9. [论文阅读笔记] GEMSEC,Graph Embedding with Self Clustering

    [论文阅读笔记] GEMSEC: Graph Embedding with Self Clustering 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问题 已经有一些工作在使用学习 ...

随机推荐

  1. [JZOJ 5810] 简单的玄学

    思路: 就是考虑一个结论 对于\(1<=x<=2^n\),那么\(x\)与\(2^n - x\)中的2的个数相等. 证明: 我们将\(x\)表示成\(2^k*b\),那么\(2^n - x ...

  2. 奇思妙想:利用野指针和lower_bound()/upper_bound()函数实现整数二分

    众所周知,c++的STL中提供了三个二分查找函数,binary_search(),lower_bound(),upper_bound(),功能分别是找某值是否在数组中出现,找到数组中第一个大于等于某值 ...

  3. centos6 & centos7搭建ntp服务器

    原理 NTP(Network TimeProtocol,网络时间协议)是用来使计算机时间同步的一种协议.它可以使计算机对其服务器或时钟源做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1 ...

  4. Devstack — screen 调试工具的使用

    目录 目录 为什么要使用 screen 工具 启动 screen screen 的切换常用 退出和重新连接 screen Restart Openstack Services screen 指令选项总 ...

  5. MDK KEIL 机构体初始化 . 点 成员 初始化, C99

    C99介绍,参考这里:C89,C99: C数组&结构体&联合体快速初始化 MDK 设置: 只需添加 ”--c99"参数即可,如图:

  6. vue中excal表格的导入和导出

    注意:vue中要实现表格的导入与导出,首先要install两个依赖, npm install -S file-saver xlsx  和  npm install -D script-loader.其 ...

  7. C#让两个长度相同的数组一一对应

    比如: string a[]={"x","y","z"} "} 用字典使其一一对应 Dictionary<string, s ...

  8. 2019牛客暑期多校训练营(第八场)D-Distance 定期重构

    题目传送门 题意: 在一个三维空间中,给出q次操作,每次操作可以在空间中加上一个固定点,或者询问一个点,对于一个询问操作,输出距离这个点最近的固定点的曼哈顿距离. 思路: 官方题解:先假设所有询问都在 ...

  9. CSS动画库——animate.css的使用

    Animate.css是一款强大的CSS3动画库 官网地址:https://daneden.github.io/animate.css/ 使用方法如下所示: (1)下载animate.css 下载地址 ...

  10. python 基本常用数据类型

    #字典类型 result={1:2222,2:2221111}; result.items();#获取字典中所有元素 result.keys();#获取字典的key result.values();# ...