分组卷积计算量_对深度可分离卷积、分组卷积、空洞卷积、转置卷积的理解

深度可分离卷积

在《Python深度学习》(Keras之父执笔)这本书里看到:注意,大部分(或全部)普通卷积很可能不久后会被深度可分离卷积(depthwise separable convolution)所替代, 后者与前者等效,但速度更快,表示效率更高。

1. 简介

在可分离卷积中,它将对区域和通道的计算分离开,而普通卷积是同时考虑区域和通道的。

2. 通过例子对比可分离卷积和普通卷积的区别

假设一个3×3大小的filter,其输入通道为16,输出通道为32

普通卷积的参数: (3×3×16)×32=4068

可分离卷积:

先考虑区域,即每个通道对应一个3×3×1大小的filter, 然后考虑通道对应32个1×1×16大小的filter

参数计算: (3×3×1)×16 + (1×1×16)×32=656

下面这张图来自参考链接1分组卷积计算量_对深度可分离卷积、分组卷积、空洞卷积、转置卷积的理解_第1张图片

分组卷积

1. 简介

Group convolution最早在AlexNet中出现,受硬件资源的限制,无法将卷积操作在一个GPU进行处理。

分组卷积是沿通道方向将数据分组,假设分成g组,那么每一组中的通道数为c1/g,对应输出的通道数为c2/g。

2. 通过一个例子理解分组卷积

输入通道为256,输出通道为256,filter大小为3×3

普通卷积的参数: (3×3×256)×256

分组卷积:当组数为8时,每一组的输入通道数为32,输出通道数为32。((3×3×32)×32×8)

可见,分组卷积的参数变为原来的八分之一,极大地减小了参数。

空洞卷积

空洞卷积是针对图像语义分割问题中下采样(即池化操作)会降低图像分辨率,丢失信息而提出的一种卷积思路。空洞卷积通过对卷积核添加空洞来扩大感受野,感受野是指数级增长的。

空洞卷积并不增加参数量,多出的点给出的权值就是0,无需训练。

转置卷积

用转置卷积进行上采样,当用神经网络生成图片的时候,经常需要将一些低分辨率的图片转换为高分辨率的图片。

简单来说,转置卷积恢复了原来的shape,value并不一致,但是维持了对应关系,即进行卷积操作的时候,x4影响了y0, y2位置的数值生成,那么转置卷积的时候,y0, y2 的值会影响x4值的生成,只是此时x4的值和之前的值不相同罢了。

下图来自李宏毅老师的课件分组卷积计算量_对深度可分离卷积、分组卷积、空洞卷积、转置卷积的理解_第2张图片

你可能感兴趣的:(分组卷积计算量)