W:输入特征图的宽,H:输入特征图的高
K:kernel size卷积核宽和高,P:padding(特征图需要填充的0的个数),S:stride步长
width_out:卷积后输出特征图的宽,height_out:卷积后输出特征图的高
普通卷积
功能:特征图大小不变或缩小。根据公式通过调整P和S参数可实现特征图大小不变以及缩小。
特征图大小计算公式:
width_out = (W - K + 2 * P)/ S + 1(向下取整)
height_out = (H - K + 2 * P) / S + 1(向下取整)
每层的参数量计算公式:
输入通道数*输出通道数*kernel_size_w*kernel_size_h
每层的计算量计算公式:
输入通道数*输出通道数*kernel_size_w*kernel_size_h*输入特征图w*输入特征图h
感受野:
kernel_size_w*kernel_size_h
池化
特征图大小计算公式:
width_out = (W - K)/ S + 1(向下取整)
height_out = (H - K) / S + 1(向下取整)
上采样UpSampling2D
上采样相当于放大多少倍,size=倍数
特征图大小计算公式:
width_out = W * size
height_out = H * size
转置卷积
转置卷积俗称反卷积,是上采样方式中的一种,转置卷积在特征图中填充0,用来增大特征图的分辨率。
功能:特征图变大(上采样)。将低分辨率的特征图样上采样到原始图像的分辨率大小,以给出原始图片的分割结果。
用途:
1)在 DCGAN,生成器将随机值转变为一个全尺寸图片,此时需用到转置卷积。
2)在语义分割中,会在编码器中用卷积层提取特征,然后在解码器中恢复原先尺寸,从而对原图中的每个像素分类。该过程同样需用转置卷积。经典方法有 FCN 和 U-net。
3)CNN 可视化:通过转置卷积将 CNN 的特征图还原到像素空间,以观察特定特征图对哪些模式的图像敏感。
特征图大小计算公式:
width_out = (W - 1)* S - 2 * P + K
height_out = (H - 1)* S - 2 * P + K
每层的参数量计算公式:
输入通道数*输出通道数*kernel_size_w*kernel_size_h
每层的计算量计算公式:
输入通道数*输出通道数*kernel_size_w*kernel_size_h*[输入特征图w+2*(kernel_size_w-P-1)]*[输入特征图h+2*(kernel_size_h-P-1)] 由于填充0
感受野:
kernel_size_w*kernel_size_h
空洞卷积
又叫膨胀卷积,是在标准卷积的Convolution map的基础上注入空洞,以此来增加感受野(reception field)。因此,膨胀卷积在标准卷积的基础上又多了一个超参数(hyper-parameter)称之为膨胀率(dilation rate),该超参数指的是kernel的间隔数量。膨胀卷积是为解决语义分割任务而提出的。
功能:增大感受野,卷积核中间填充0。在于普通卷积相同的计算条件下的情况下,该卷积可以增大特征图的感受野。另外,通过修改padding的大小,可以保证输入输出特征图的shape不变。
用途:膨胀卷积(Dilated Convolution),广泛应用于语义分割与目标检测等任务中,语义分割中经典的deeplab系列与DUC对空洞卷积进行了深入的思考。目标检测中SSD与RFBNet,同样使用了空洞卷积。
特征图大小计算公式:
width_out = (W-[K+(K-1)*(A-1)]+2P) / S + 1 A为膨胀率
height_out = (H-[K+(K-1)*(A-1)]+2P) / S + 1
每层的参数量计算公式:
输入通道数*输出通道数*kernel_size_w*kernel_size_h
分组卷积
分组卷积(Group Convolution)顾名思义,在对特征图进行卷积的时候,首先对特征图分组再卷积。
功能:1)减少参数量,分成G组,则该层的参数量减为原来的1/G。
2)分组卷积可以看做是对原来的特征图进行了一个dropout,有正则的效果
用途:分组卷积,最早在AlexNet中出现,由于当时的硬件资源有限,训练AlexNet时卷积操作不能全部放在同一个GPU处理,因此作者把feature maps分给多个GPU分别进行处理,最有把多个GPU的结果进行融合。
特征图大小计算公式:
width_out = (W - K + 2 * P)/ S + 1(向下取整)
height_out = (H - K + 2 * P) / S + 1(向下取整)
每层的参数量计算公式:
输入通道数*输出通道数*kernel_size_w*kernel_size_h*1/G G是组数
每层的计算量计算公式:
输入通道数*输出通道数*kernel_size_w*kernel_size_h*输入特征图w*输入特征图h*1/G
感受野:
kernel_size_w*kernel_size_h
深度可分离卷积
在计算资源受限制的移动端设备上,常规的卷积操作由于计算量大,经常难以满足实际运行速度的要求,这时深度可分离卷积(Depthwise Separable Convolution)就派上了用场。深度可分离卷积是由Depthwise(DW)卷积与Pointwise(PW)卷积组成。该结构和常规卷积类似,可用来提取特征,但相比常规卷积,其参数量和运算成本较低,所以在一些轻量级网络中经常用到此结构,如MobileNet、ShuffleNet。
功能:深度可分离卷积比普通卷积减少了所需要的参数。重要的是深度可分离卷积将以往普通卷积操作同时考虑通道和区域改变成,卷积先只考虑区域,然后再考虑通道。实现了通道和区域的分离。