Separable Convolution就是为了解决因为移动端硬件设备条件、计算资源有限,通过降低卷积运算参数量从而降低神经网络的运算量的一种方法,分为 depthwise和pointwise两步
https://blog.csdn.net/tintinetmilou/article/details/81607721
常规卷积操作
对于5×5像素,3通道彩色输入图片,经过3×3卷积核的卷积层,最终输出4个feature map,若same padding尺寸与输入层相同5×5,若无则为3×3
输入shape为5×5×3,卷积核shape为3×3×3×4
我的理解是每一个卷积核与图像卷积之后得到的feature map就表征了图像在某一个方面的特征,想得到几个不同方面的特征,卷积核就有几个,也就是说卷积核的数量是不定的,随需要的feature map而变,但是每个卷积核的shape都是 n × n × channel × f
从上面也可以看出,常规卷积操作是一步到位的
Separable Convolution
(上图有4个filters,每个filter有3个kernal)
separable convolution从字面就可以理解是可分离的卷积,可分离就意味着将一个大任务分解成几步来完成,当时在学computer vision的时候,苏老师在讲建立拉普拉斯金字塔和图像金字塔那里也给我们讲过二维图像的可分离卷积,不过采取的是先行卷积,再列卷积,而这里的分离虽然不是行列分离,但也是维度上的分离。
将三维空间内的卷积分离成二维卷积和一维卷积,先对一个channel的二维图像进行二维卷积(对于每个channel这个过程同步进行),卷积核的个数是确定的就是channel个,得到的也是确定的channel个maps,也就是说这一步只是对原图像的每一个channel做了一个简单的线性变换,互相的channel之间没有变换;第二步的卷积就会采集深度方向上的信息,卷积核大小为
1 × 1 × channel,卷积核的个数就视需要的feature map个数确定。
a separate layer for filtering and a separate layer for combining