[模型压缩/加速]-加速卷积计算的三种方法-Depth-wise Conv、Group Conv、Channel-wise Conv

1.概念简介

假设输入尺寸大小为aa、通道 为n,输出通道数为m,卷积核大小为bb,步长为1.那么
计算量为 FLOPs = a * a * n * m * b * b
参数量为 b * b * n * m
这就是传统卷积的计算方式,可以看到,当a、b、n、m相对较大的时候,造成的计算量是非常大的,所以就有降低模型大小与计算量的需要。

2.Depth-wise Conv

出自论文《MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications》,这个DwConv的提出是它的核心工作之一,它可以将标准卷积分解成一个深度卷积和一个点卷积(1 × 1卷积核)。深度卷积将每个卷积核应用到每一个通道,而1 × 1卷积用来组合通道卷积的输出。
在这里插入图片描述
对一个大小为aan的输入图,传统的方法是使用大小为bbn*m的卷积核进行卷积。

而depth-wise separable convolution则首先使用大小为bb1n的卷积核进行depth-wise convolution。具体来说,在depth-wise convolution中,n个输入通道中的每一个都有相应的卷积核,两两进行卷积。得到的输出通道数为n,如果stride为1且padding为same的话,大小就是aa*n。

接下来再进行1x1卷积,卷积核为11nm,得到aa*m的最终输出。

这种方法的计算量为FLOPs=a*a*n*b*b+a*a*n*m,参数大小为aan+n*m

可以发现参数量和计算量都大幅下降。现在大多数的卷积核大小为3*3,可以大致减少1/8-1/9的计算量。

但是可以发现仍然没有规避一个巨大的n*m,在现代网络通道数动辄512、1024的情况下,仍然有优化余地。

3.Group Conv

最早见于AlexNet——2012年Imagenet的冠军方法,Group Convolution被用来切分网络,使其在2个GPU上并行运行。
Group Convolution顾名思义,则是对输入feature map进行分组,然后每组分别卷积。
在这里插入图片描述
我们假设输入通道数和输出通道数都能被g整除,那么计算量就是FLOPs = a * a * n * m * b * b / g,参数量是b * b * n * m / g
缺点很明显,就是形成的新的特征图只来源于他们上一级的同组,而不同组别之间的信息没有任何交流,这就会导致性能损失。

后面有ShuffleNet对group convolution进行改进,就是在卷积完成后加入一个channel shuffle。进行均匀的打乱,这样接下来进行group convolution时,每一个group的输入不是只来自相邻组,这样就实现了特征融合。
在这里插入图片描述
利用channel shuffle就可以充分发挥group convolution的优点,而避免其缺点

4.Channel-wise Conv

出自论文: ChannelNets: Compact and Efficient Convolutional Neural Networks via Channel-Wise Convolutions
论文地址:https://arxiv.org/abs/1809.01330
论文代码:https://github.com/HongyangGao/ChannelNets

Channel-wise卷积的核心在于输入和输出连接的稀疏化,每个输出仅与部分输入相连,概念上区别于分组卷积,没有对输入进行严格的区分,而是以一定的stride去采样多个相关输入进行输出(在channel维度滑动),能够降少参数量以及保证channel间一定程度的信息流

假设我们输入一个2 * 2 * 9的图像,将图像平铺,我们会得到一个6 * 6的 二维图,卷积核大小为 1 * 1 * 4
在这里插入图片描述
channel-wise convolution的卷积核为公用的,大小为11c的卷积核,代表着参数量也仅为c 。它的计算量为cnaa,规避了 巨大的mn,效率比较高。

5.补充

感觉4还有点不太明白,有没有人讨论下,他这个实现分组交流是靠什么?是平铺成2d图后,根据步长来进行滑动,直接完全跳出一个2*2的小的子图吗?
这个点还需要再看下。

  • 0
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Group-wise convolution是一种卷积操作,其基本思想是将特征通道分为若干个组,并按组进行相关计算。通常情况下,特征通道会被平均分为多个组,每个组包含一部分通道。通过这种方式,可以实现特征的分组合并,从而进行特征融合的操作。 在ShuffleNet中,对group convolution进行了改进,引入了channel shuffle。在卷积完成后,通过channel shuffle对特征进行均匀的打乱。这样,在进行group convolution时,每个group的输入不再只来自相邻组,而是实现了特征的融合。通过利用channel shuffle,可以充分发挥group convolution的优点,同时避免其缺点。 总结来说,group-wise convolution是一种将特征通道分为若干组并进行相关计算卷积操作。通过这种方式,可以实现特征融合并发挥group convolution的优势。而ShuffleNet则在group convolution基础上引入了channel shuffle,进一步提高了特征的融合效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [[模型压缩/加速]-加速卷积计算三种方法-Depth-wise ConvGroup ConvChannel-wise Conv](https://blog.csdn.net/ai_faker/article/details/109469478)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【论文简述及翻译】GWCNet:Group-wise Correlation Stereo Network(CVPR 2019)](https://blog.csdn.net/qq_43307074/article/details/127178835)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值