美文网首页Machine Learning
深度学习-卷积以及各种形式的卷积

深度学习-卷积以及各种形式的卷积

作者: 升不上三段的大鱼 | 来源:发表于2021-04-16 07:59 被阅读0次

    卷积也内卷,简单朴素的卷积已经不能满足人们的需求,因此出现了各种形式的卷积,比如反卷积(Deconvolution\Transposed Convolution), 空洞卷积 (Dilated Convolution),组卷积 (Group Convolution),深度可分离卷积 (Depthwise Separable Convolution),可变形卷积 (Deformable Convolution)。

    1. 卷积

    卷积运算本身十分简单,(f *g)(x,y) = \int\limits_\infty^\infty f(\tau)g(x-\tau) d\tau

    卷积,输入特征为4*4,卷积核3*3,得到2*2的输出大小

    假设一个大小为x \times x的特征图,与一个大小为k \times k的卷积核做卷积,padding大小为p,stride大小为s,得到的输出特征图的尺寸为y = (x-k+2p)/s+1

    卷积操作让神经网络能够提取到图片的抽象特征,在图像分类上应用十分广泛。

    但是用于目标检测,语义分割等任务时,往往需要原始的图像位置信息,用于预测边界框或者物体的分割线。一种常见的作法是将网络分为下采样和上采样两部分,下采样部分就是卷积神经网络,用于提取特征;上采样部分将提取到的特征信息重新恢复到原来的输入尺寸,也就是反卷积发挥作用的地方。

    2. 反卷积

    反卷积的作用是让通过卷积得到的y \times y的特征图回到原来的大小x \times x,并保持原来的位置关系。

    反卷积,输入特征2*2,padding为2,反卷积的卷积核为3*3(与前面的卷积核大小一致),输出的特征大小为4*4.与上面图中的输入特征大小相同。

    由上面的特征图计算式可以得到
    x = ys - s+k-2p
    改写以满足卷积计算的尺寸公式:
    x = (y - k'+2p')/s' + 1
    \quad = ((y+(s-1)(y-1)) -k + (k-1)+(k-2p-1))/1 +1
    可以理解为:
    反卷积操作之后的输出大小为x^* = y+(s-1)(y-1)
    当正向的卷积中s不为1时,做反卷积的适合会在每个元素之间插入s-1个0.
    做时反卷积的padding, stride 和卷积核大小分别为p' = ((k-1)+(k-2p-1))/2= k-p-1
    s' = 1, k' =k

    (x-k+2p)/s不能整除的时候,在padding之后,在右边和下边再多加将余数行0和余数列0,然后进行卷积。

    卷积核的参数可以与正向的卷积共享,但是需要进行中心对称;也可以通过学习得到。

    反卷积可能会受到棋盘伪影的影响,原因可能是图像再某些部分的不均匀重叠,可以通过使用可整除的卷积核来避免这种状况。

    3. 空洞卷积

    空洞卷积是通过在卷积核的元素之间插入0,将原来的卷积核扩展成为一个更大的卷积核,这么做的目的是在不增加实际核函数参数数目的情况下,增大输出的感受野大小。


    空洞卷积,卷积核中间插入了0,由3*3扩展到了5*5,输出特征对应的感受野扩大(输出特征尺寸减小了)

    空洞卷积的空洞率d可以理解为每个核元素之间出入d-1个0,当d=1时就是一般的卷积形式。一个大小为k的卷积,经过空洞率为d的处理之后得到的空洞卷积大小为:\hat{k} = k+(k-1)(d-1)。根据上面计算卷积输出大小的公式,可以得到经过空洞卷积后输出的大小:y = \frac{(x -(k+(k-1)(d-1))+2p)}{s}+1

    在经典的CNN流程中,在卷积层后会有pooling层,作用是减少特征图尺寸的同时保留相对的空间信息,增大感受野。但是pooling的下采样操作会损失一些信息。而空洞卷积可以在扩大感受野的同时避免下采样过程中的信息损失,用于语义分割可以有效提高准确性。

    4. 分组卷积

    分组卷积指的是对输入特征图分成G组,然后分别对每组的特征进行卷积。这个概念最初是在AlexNet中被提出来将模型分布在多个GPU上训练,在后来被发现可以提高模型的精度。

    假设输入特征尺寸为C \times H \times W,每个分组内的特征为C/G \times H \times W,每个组内对应的卷积核大小为C/G \times K \times K,所有分组合在一起得到的输出特征尺寸为G \times H' \times W'。对比不分组的情况下,通过卷积得到的输出特征为1 \times H’ \times W’。也就是说,在参数量相同的情况下,获得了G倍多的特征;或者在获得相同输出的情况下参数量更少。

    5. 深度可分离卷积

    当分组卷积的分组数G=C,就成了深度分离卷积。

    卷积和深度可分离卷积

    Depthwise Convolution: 以通道数分组,一个输入为C \times H \times W的特征经过卷积后会得到C个特征。但是这个操作并没有利用到不同通道在空间上的信息,因此接着还有一步。

    Pointwise Convolution:上一步得到的C \times H' \times W'特征图,与NC \times 1 \times 1的卷积核做卷积,得到的输出为N \times H' \times W'。结果与和N个卷积核做卷积是一样的。但是对比参数数量,可分离卷积的计算量减少了\frac{1}{N}+\frac{1}{K^2}.

    在生成特征上,Depthwise Convolution 用于捕获空间信息,Pointwise Convolution 用于捕获通道相关的相关性。深度可分离卷积由于在生成相同尺寸特征的情况下参数更少,被应用在轻量级网络比如MobileNet等网络上。

    参考:

    相关文章

      网友评论

        本文标题:深度学习-卷积以及各种形式的卷积

        本文链接:https://www.haomeiwen.com/subject/lpqzkltx.html