我正在调查一些与全卷积网络相关的文献,并遇到了以下短语,
通过用卷积层替换标准 CNN 架构中参数丰富的全连接层来实现全卷积网络内核。
我有两个问题。
参数丰富是什么意思?是否因为全连接层在没有任何“空间”缩减的情况下传递参数而被称为参数丰富?
还有,怎么办内核工作?不内核只是意味着在图像上滑动一个像素?我对此感到困惑。
我正在调查一些与全卷积网络相关的文献,并遇到了以下短语,
通过用卷积层替换标准 CNN 架构中参数丰富的全连接层来实现全卷积网络内核。
我有两个问题。
参数丰富是什么意思?是否因为全连接层在没有任何“空间”缩减的情况下传递参数而被称为参数丰富?
还有,怎么办内核工作?不内核只是意味着在图像上滑动一个像素?我对此感到困惑。
全卷积网络 (FCN)是一种仅执行卷积(以及下采样或上采样)操作的神经网络。等效地,FCN 是没有全连接层的 CNN。
典型的卷积神经网络 (CNN)不是完全卷积的,因为它通常也包含完全连接的层(不执行卷积操作),它们是参数丰富的,因为它们有很多参数(与它们的等效卷积相比)层),尽管完全连接的层也可以被视为具有覆盖整个输入区域的内核的卷积,这是将 CNN 转换为 FCN 背后的主要思想。请参阅Andrew Ng 的此视频,该视频解释了如何将全连接层转换为卷积层。
全卷积网络的一个例子是U-net(因为它的 U 形状,所以这样称呼它,你可以从下图看到),这是一个著名的网络,用于语义分割,即对一个像素的像素进行分类。图像,以便属于同一类(例如人)的像素与相同的标签(即人)相关联,也称为逐像素(或密集)分类。
因此,在语义分割中,您希望将标签与输入图像的每个像素(或小块像素)相关联。这是执行语义分割的神经网络的更具启发性的说明。
还有实例分割,您还想区分同一类的不同实例(例如,您想通过不同的标签来区分同一图像中的两个人)。用于实例分割的神经网络的一个示例是mask R-CNN。Rachel Draelos的博客文章Segmentation: U-Net, Mask R-CNN, and Medical Applications (2020) 很好地描述了这两个问题和网络。
这是一个图像示例,其中同一类(即人)的实例被不同地标记(橙色和蓝色)。
语义分割和实例分割都是密集分类任务(具体来说,它们属于图像分割的范畴),也就是说,您要对图像的每个像素或许多小块像素进行分类。
在上面的 U-net 图中,可以看到只有卷积、复制和裁剪、最大池化和上采样操作。没有完全连接的层。
那么,我们如何将标签与输入的每个像素(或一小块像素)相关联?我们如何在没有最终全连接层的情况下对每个像素(或补丁)进行分类?
那就是卷积和上采样操作很有用!
在上面的 U-net 图的情况下(特别是图的右上部分,为了清楚起见,在下面进行了说明),两个 内核应用于输入体积(不是图像!)以生成两个大小的特征图. 他们用了两个内核,因为他们的实验中有两个类别(细胞和非细胞)。提到的博客文章也为您提供了这背后的直觉,因此您应该阅读它。
如果您尝试仔细分析 U-net 图,您会注意到输出地图具有与输入图像不同的空间(高度和重量)维度,输入图像具有维度.
这很好,因为我们的总体目标是执行密集分类(即对图像的补丁进行分类,其中补丁只能包含一个像素),尽管我说过我们会执行逐像素分类,所以也许你期望输出具有相同的输入空间维度。但是,请注意,在实践中,您还可以让输出映射与输入具有相同的空间维度:您只需要执行不同的上采样(反卷积)操作。
一个卷积只是典型的二维卷积,但具有核心。
你可能已经知道(如果你不知道,现在你知道了),如果你有一个应用于大小输入的内核, 在哪里是输入体积的深度(例如,在灰度图像的情况下,它是),内核实际上具有形状,即内核的第三维等于它所应用的输入的第三维。情况总是如此,除了 3d 卷积,但我们现在谈论的是典型的 2d 卷积!有关更多信息,请参阅此答案。
所以,在我们想要应用的情况下卷积到形状的输入, 在哪里是输入的深度,然后是实际的我们需要使用的内核有形状 (正如我上面对 U-net 所说的)。减少输入深度的方式由数量决定您要使用的内核。这与任何具有不同内核的 2d 卷积操作完全相同(例如)。
在 U-net 的情况下,输入的空间维度被减少,其方式与 CNN 的任何输入的空间维度被减少(即 2d 卷积后跟下采样操作)相同。U-net 和其他 CNN 之间的主要区别(除了不使用全连接层)是 U-net 执行上采样操作,因此可以将其视为编码器(左侧),然后是解码器(右侧) .