这个视频讲的不错:https://www.bilibili.com/video/BV1wA411Y7eB?from=search&seid=17430273320796788698
这里仅仅记录一下自己的理解。
Tip1: 深度可分离卷积是一种常规卷积(如tf.nn.conv2D)的替代方式,它与常规卷积有相同的输入tensor shape和相同的输出tensor shape, 但是有更小的参数量和计算量。
Tip2:深度可分离卷积包含两个步骤:
step1: 逐通道卷积。kernel_size = (input_channel,kernel_width,kernel_height, outputchannel=1)。相当于只有一个卷积核,但是卷积之后不计算不同通道的sum。所以输出张量的channel数不变。
step2:逐点卷积。是一个1*1的卷积,有多个卷积核。kernel_size = (input_channel,1,1,output_channel)。目的是计算不同通道同一位置的元素的加权和,融合不同通道的信息。
Tip3:深度可分离卷积的目的是:用更少的计算量和更少的参数,从相同shape的输入得到相同shape的输出,且计算过程中保证了空间信息的捕捉和跨channel信息的融合。
Tip4:深度可分离卷积命名的理解。“可分离”应该指的是空间维度和channel维度上卷积的分离。
“深度”在这里应该是指“channel”的意思,深度可分离的意思就是:逐个channel进行卷积,卷积之后不求和。所以就是channel可分离的意思了。然后再用一个1*1的常规卷积实现channel信息的融合。