深度学习-卷积以及各种形式的卷积
卷积也内卷,简单朴素的卷积已经不能满足人们的需求,因此出现了各种形式的卷积,比如反卷积(Deconvolution\Transposed Convolution), 空洞卷积 (Dilated Convolution),组卷积 (Group Convolution),深度可分离卷积 (Depthwise Separable Convolution),可变形卷积 (Deformable Convolution)。
1. 卷积
卷积运算本身十分简单,
假设一个大小为的特征图,与一个大小为的卷积核做卷积,padding大小为,stride大小为,得到的输出特征图的尺寸为。
卷积操作让神经网络能够提取到图片的抽象特征,在图像分类上应用十分广泛。
但是用于目标检测,语义分割等任务时,往往需要原始的图像位置信息,用于预测边界框或者物体的分割线。一种常见的作法是将网络分为下采样和上采样两部分,下采样部分就是卷积神经网络,用于提取特征;上采样部分将提取到的特征信息重新恢复到原来的输入尺寸,也就是反卷积发挥作用的地方。
2. 反卷积
反卷积的作用是让通过卷积得到的的特征图回到原来的大小,并保持原来的位置关系。
反卷积,输入特征2*2,padding为2,反卷积的卷积核为3*3(与前面的卷积核大小一致),输出的特征大小为4*4.与上面图中的输入特征大小相同。由上面的特征图计算式可以得到
改写以满足卷积计算的尺寸公式:
可以理解为:
反卷积操作之后的输出大小为
当正向的卷积中不为1时,做反卷积的适合会在每个元素之间插入个0.
做时反卷积的padding, stride 和卷积核大小分别为
当不能整除的时候,在padding之后,在右边和下边再多加将余数行0和余数列0,然后进行卷积。
卷积核的参数可以与正向的卷积共享,但是需要进行中心对称;也可以通过学习得到。
反卷积可能会受到棋盘伪影的影响,原因可能是图像再某些部分的不均匀重叠,可以通过使用可整除的卷积核来避免这种状况。
3. 空洞卷积
空洞卷积是通过在卷积核的元素之间插入0,将原来的卷积核扩展成为一个更大的卷积核,这么做的目的是在不增加实际核函数参数数目的情况下,增大输出的感受野大小。
空洞卷积,卷积核中间插入了0,由3*3扩展到了5*5,输出特征对应的感受野扩大(输出特征尺寸减小了)
空洞卷积的空洞率可以理解为每个核元素之间出入个0,当时就是一般的卷积形式。一个大小为的卷积,经过空洞率为的处理之后得到的空洞卷积大小为:。根据上面计算卷积输出大小的公式,可以得到经过空洞卷积后输出的大小:
在经典的CNN流程中,在卷积层后会有pooling层,作用是减少特征图尺寸的同时保留相对的空间信息,增大感受野。但是pooling的下采样操作会损失一些信息。而空洞卷积可以在扩大感受野的同时避免下采样过程中的信息损失,用于语义分割可以有效提高准确性。
4. 分组卷积
分组卷积指的是对输入特征图分成组,然后分别对每组的特征进行卷积。这个概念最初是在AlexNet中被提出来将模型分布在多个GPU上训练,在后来被发现可以提高模型的精度。
假设输入特征尺寸为,每个分组内的特征为,每个组内对应的卷积核大小为,所有分组合在一起得到的输出特征尺寸为。对比不分组的情况下,通过卷积得到的输出特征为。也就是说,在参数量相同的情况下,获得了倍多的特征;或者在获得相同输出的情况下参数量更少。
5. 深度可分离卷积
当分组卷积的分组数,就成了深度分离卷积。
Depthwise Convolution: 以通道数分组,一个输入为的特征经过卷积后会得到个特征。但是这个操作并没有利用到不同通道在空间上的信息,因此接着还有一步。
Pointwise Convolution:上一步得到的特征图,与个的卷积核做卷积,得到的输出为。结果与和个卷积核做卷积是一样的。但是对比参数数量,可分离卷积的计算量减少了.
在生成特征上,Depthwise Convolution 用于捕获空间信息,Pointwise Convolution 用于捕获通道相关的相关性。深度可分离卷积由于在生成相同尺寸特征的情况下参数更少,被应用在轻量级网络比如MobileNet等网络上。