tensorflow

卷积-conv, depthwise conv, separab

2019-08-26  本文已影响0人  Persistently

Contents:

1. Convolution
2. Depthwise Convolution
3. Separable Convolution
4. Group Convolution


1. convolution (卷积)

简单理解如下面图像所示,每个channel的图像与filter做卷积,然后将每个通道进行合并。

具体步骤分解




Reference:
CNN中卷积计算的内存和速度优化


2. Depthwise Convolution

tf.nn.depthwise_conv2d(input, filter, strides, padding, rate=None, name=None, data_format=None)

depthwise_conv2d将不同的卷积核独立地应用在in_channels的每个通道:我们一般对于三通道图像做卷积,都是先加权求和再做卷积(注意先加权求和再卷积与先卷积再加权求和结果一样),形象化描述就是我先把3通道压扁成1通道,在把它用x个卷积核提溜成x通道(或者我先把3通道用x个卷积核提溜成3x个通道,再分别压扁成得到x通道); 而depthwise_conv2d就不加权求和了,直接卷积,所以最后输出通道的总数是in_channels*channel_multiplier

Reference:
TensorFlow网络操作API_上


3.Separable Convolution

tf.nn.separable_conv2d(input, depthwise_filter, pointwise_filter, strides, padding, name=None)

 Depthwise Separable Convolution 是将一个完整的卷积运算分解为两步进行,
 即 Depthwise Convolution 与 Pointwise Convolution。

1). Depthwise convolution

    Depthwise Convolution完成后的Feature map数量与输入层的通道数相同,无法扩展Feature map。
    而且这种运算对输入层的每个通道独立进行卷积运算,
    没有有效的利用不同通道在相同空间位置上的feature信息。
    因此需要Pointwise Convolution来将这些 Feature map 进行组合生成新的 Feature map。

2).Pointwise Convolution

 Pointwise Convolution的运算与常规卷积运算非常相似,
 它的卷积核的尺寸为 1×1×M,M为上一层的通道数。
 所以这里的卷积运算会将上一步的map在深度方向上进行加权组合,
 生成新的Feature map。有几个卷积核就有几个输出Feature map。

Xception architecture:

Reference:
卷积神经网络中的Separable Convolution


4. Group convolution (分组卷积)

最早见于AlexNet——2012年Imagenet的冠军方法,Group Convolution被用来切分网络,使其在2个GPU上并行运行




Reference
Convolution VS Group Convolution
A Tutorial on Filter Groups (Grouped Convolution)


Dilated convolution


Deformable convolution



Reference:
1. Depthwise卷积与Pointwise卷积

上一篇下一篇

猜你喜欢

热点阅读