Pointwise Depthwise Groupwise Co

2019-09-26  本文已影响0人  默写年华Antifragile

Pointwise/ Depthwise/ Groupwise

这三种方法都是在标准卷积的基础上进行修改,以达到参数削减,同时保证准确率能够满足要求的目的
标准卷积示意图:


image.png

这里假设卷积层的输入通道数为 C_{in},输出通道数为 C_{out},假设采用 k * k 大小的卷积核来进行卷积,那么最终需要 C_{out}个 尺寸为k * K * C_{in}的卷积核,即这一个卷积层所需要的参数量为 C_{out} * k * k * C_{in}

Pointwise convoltion

Pointwise convolution从名字上来看为“逐点卷积”,即采用卷积核大小为 1 x 1 来对feature map 逐个点来进行卷积

DepthWise Convolution

Depthwise 从字面上来看即逐深度(channel)卷积,即在每个channel进行卷积

image.png

如上图所示:

因此最后需要的参数量为:k*k*1*C_{in}+1*1*C_{in}*C_{out},比原来的参数量也大大减少。因为它对每一个通道都进行了学习(每个通道对应一个不同的过滤器),而不是所有通道对应同一个过滤器,得到的特征质量更佳。

Groupwise Convolution

Groupwise 从字面上来看即逐群进行卷积,这里的意思是把channel分成多个群,每一个群采用一种卷积核,如下图左所示:


image.png

假设将C_{in}个channel均分成 g 份,这样得到了 g 个群,每个群采用的kernel为 k * k * (C_{in}/g),因为有 g 个群,而我们最终输出为C_{out},因此我们为每个群都采用C_{out}/g个不同的 k*k*C_{in}/g个滤波器,然后把 g 个群产生的H*W*C_{out}/g进行cat组合起来就得到 H*W*C_{out}
因此需要的参数为:
[k * k * (C_{in}/g) * (C_{out}/g)]*g=k * k * C_{in} * C_{out} / g
相当于参数量是原来的 1/g

上一篇 下一篇

猜你喜欢

热点阅读