深度卷积|深入卷积神经网络:高级卷积层原理和计算的可视化( 二 )


将所有添加的像素用0代入后,再对放大后的feature map进行普通卷积。这就是我们如何在对feature map执行卷积操作的同时增加它的大小。
 深度卷积|深入卷积神经网络:高级卷积层原理和计算的可视化
文章图片
上采样
【 深度卷积|深入卷积神经网络:高级卷积层原理和计算的可视化】对于上采样层,我们在添加像素的位置复制原始像素值。因此每个像素将被复制4次如果我们做的是一个2倍扩充。从技术上讲,如果我们只考虑上采样层,在对feature map进行放大后就不存在卷积。但是我们通常在上采样层之后加上卷积层这样网络就有了一些学习能力因为上采样层本身没有任何参数。
 深度卷积|深入卷积神经网络:高级卷积层原理和计算的可视化
文章图片
这两层在网络神经网络中被广泛使用,网络神经网络试图输出与原始输入相同大小的feature map。一般情况下,会有一些普通的卷积和池化层,这会减小feature map的大小。在这之后,我们将引入反卷积层,将大小增加回原来的大小。语义分割CNNs、U-Net、GANs等使用反卷积层。
空洞卷积Dilated (Atrous) Convolution
在研究界中,空洞卷积也被称为伸缩卷积。在空洞卷积中,我们本质上试图增加每个核的面积,同时保持每个核的元素数量完全相同。
对于扩张卷积,我们基本上取核函数在进行卷积运算之前在核函数的元素之间加上间隔。通过这样做,内核的接受区域会增加,而参数的数量会相同。
与普通卷积层相比,它看起来是这样的:
 深度卷积|深入卷积神经网络:高级卷积层原理和计算的可视化
文章图片
可以看到,内核中的元素数量保持不变,但是应用内核的有效面积从3*3增加到5*5。我们还可以改变核的膨胀率,这本质上意味着核元素之间的间隙将有多宽。对于上面例子中的膨胀核,膨胀率为2。默认的卷积核的膨胀率为1,基本上意味着核元素之间没有间隙。
 深度卷积|深入卷积神经网络:高级卷积层原理和计算的可视化
文章图片
当我们想让卷积应用于更大的区域,同时又能节省计算成本时,我们就使用了扩张卷积。如果我们想用一个普通的卷积层覆盖5*5的面积,那么我们需要一个5*5面积的核,也就是25个元素。然而,如果我们使用扩张率为2的扩张卷积,我们可以用9个元素覆盖相同的区域。除此之外,内核的接受区域也增加了,使得它们能够捕捉到在输入特征图中出现的更细的细节。
分组卷积
在分组卷积中,基本的概念是我们将输入中的信道分成相等的组。然后,我们将分配相同数量的内核给每一组。每个内核将只应用于其各自组中的通道,而不是应用于输入的所有通道。
例如,如果我们有一个有4个通道的输入特征图,并且我们希望总共有2组,那么每组都将有2个通道。假设每一组有4个内核。每个内核的深度将为2,因为它们将只应用于每个组,而不是整个输入。将两组的输出特征图连接在一起,形成最终的输出特征图。因此,在本例中,每组将输出4个feature map,因此输出的channel总数为8。让我们看看这个例子的可视化解释:
 深度卷积|深入卷积神经网络:高级卷积层原理和计算的可视化
文章图片
对于分组卷积,我们本质上是在每一层并行地执行卷积。这增加了模型在通过网络进行反向传播时可以采取的路径数量。除此之外,它还减少了该层的计算成本,因为每个内核将拥有更少的参数,并且将应用于输入中的更少的通道。这就是我们使用组合卷积的原因。这些在ResNext架构中使用。
作者:Harsha Bommana
deephub翻译组
DeepHub


推荐阅读