美文网首页机器学习
group convolution (分组卷积)详解

group convolution (分组卷积)详解

作者: 西北小生_ | 来源:发表于2019-08-18 15:15 被阅读0次

    普通卷积:

    图1 普通卷积
    上图为普通卷积示意图,为方便理解,图中只有一个卷积核,此时输入输出数据为:
    输入feature map尺寸: W×H×C ,分别对应feature map的宽,高,通道数;
    单个卷积核尺寸: k×k×C ,分别对应单个卷积核的宽,高,通道数;
    输出feature map尺寸 :W'×H' ,输出通道数等于卷积核数量,输出的宽和高与卷积步长有关,这里不关心这两个值。

    参数量 params=k^2C
    运算量FLOPs=k^2CW'H',这里只考虑浮点乘数量,不考虑浮点加。

    group convolution (分组卷积):

    图2 分组卷积
    将图一卷积的输入feature map分成组,每个卷积核也相应地分成组,在对应的组内做卷积,如上图2所示,图中分组数,即上面的一组feature map只和上面的一组卷积核做卷积,下面的一组feature map只和下面的一组卷积核做卷积。每组卷积都生成一个feature map,共生成个feature map。

    输入每组feature map尺寸:W×H× \frac {C} {g} ,共有g组;
    单个卷积核每组的尺寸:k×k×\frac {C} {g},一个卷积核被分成了g组;
    输出feature map尺寸:W'×H'×g,共生成g个feature map。

    现在我们再来计算一下分组卷积时的参数量和运算量:
    参数量 params=k^2×\frac {C} {g}×g=k^2C
    运算量FLOPs=k^2×\frac {C} {g}×W'×H'×g=k^2CW'H'

    我们居然用了同等的参数量运算量生成了g个feature map!!!

    所以group conv常用在轻量型高效网络中,因为它用少量的参数量和运算量就能生成大量的feature map,大量的feature map意味着能够编码更多的信息!

    从分组卷积的角度来看,分组数g就像一个控制旋钮,最小值是1,此时g=1的卷积就是普通卷积;最大值是输入feature map的通道数C,此时g=C的卷积就是depthwise sepereable convolution,即深度分离卷积,又叫逐通道卷积。

    深度分离卷积:

    图3 深度分离卷积
    如上图所示,深度分离卷积是分组卷积的一种特殊形式,其分组数,其中是feature map的通道数。即把每个feature map分为一组,分别在组内做卷积,每组内的单个卷积核尺寸为,组内一个卷积核生成一个feature map。这种卷积形式是最高效的卷积形式,相比普通卷积,用同等的参数量和运算量就能够生成个feature map,而普通卷积只能生成一个feature map。
    所以深度分离卷积几乎是构造轻量高效模型的必用结构,如Xception, MobileNet, MobileNet V2, ShuffleNet, ShuffleNet V2, CondenseNet等轻量型网络结构中的必用结构。

    相关文章

      网友评论

        本文标题:group convolution (分组卷积)详解

        本文链接:https://www.haomeiwen.com/subject/jkoksctx.html