卷积神经网络 (CNN) 改变了计算机视觉,并广泛用于图像分类、对象识别和图像分割。对于初学者来说,理解这个 CNN 模型的模型架构可能会很困难,因为他们会发现一些未知的术语。我将在这里列出并描述其中一些术语,希望对您的深度学习之旅有所帮助。
Backbone(主干网络)
主干网络常见于目标检测模型架构中。Backbone 负责从输入数据中提取特征并进行编码。它充当核心特征提取器,从输入数据中捕获低级和高级特征。
- Input: 数据增广后的 图像 、图像块;
- Backbone: 用于特征抽取的预训练分类模型,针对同尺度的目标有不同的层次;
- Neck: 上采样及拼接机制以融合不同阶段的特征图;
- Head:关于检测目标的类别和检测框的预测。
初学者往往会将 Backbone 模型与 Baseline 模型混淆。那么 Baseline 模型到底是什么?基线和主干有什么区别?让我们找出区别吧!
Baseline(基线)
基线模型是一个简单的模型,用作起点或比较基准。基线模型通常用作评估更先进或复杂模型或技术有效性的基线。它可以作为衡量更先进方法所取得的改进的比较基准。
Backbone vs Baseline
基线模型是用于比较的简单参考模型,而主干模型是负责特征提取的更复杂的架构。基线模型作为评估的起点,而主干模型提供特定任务解决所需的特征表示。
Neck
Neck 负责进一步转换和细化主干模型提取的特征。其目标是改进主干提取的特征,并提供更多信息的特征表示。
Backbone vs Neck
主干负责从输入数据中提取初始特征,而Neck则增强和合并这些特征以提高模型的性能。
Head
头部由特定于任务的层组成,这些层旨在根据 Backbone 和 Neck 提取的信息产生最终的预测或推理。
Bottleneck
在神经网络中,Bottleneck 只是一个神经元数量少于其下方或上方层的层。这样一个层的存在使网络能够压缩特征表示以尽可能最好地适应给定的空间。
残差块(Residual Block)
残差块是一种层堆叠,其排列方式使得将一层的输出添加到块中更深的另一层中。
跳跃连接
跳跃连接是一种快捷方式,它将一层的输出连接到相邻层的输入。
残差块与跳跃连接
跳跃连接是一个通用概念,指的是层之间任何形式的直接连接,而残差连接是 ResNet 架构中常用的特定类型的跳跃连接。残差连接的主要目的是让网络学习变化而不是直接学习整个变换。
下采样
从 CNN 第一层提取特征后,如果我们直接将输出提供给第二层,那么该过程的计算量会变得很大。为了减少输出的大小,我们提取最小影响特征并将其提供给下一层。这种在不丢失重要信息的情况下减少输出大小的过程称为下采样。下采样最常见的方法是最大池化(Max pooling)。
最大池化
最大池化是一种池化操作,可计算特征图块的最大值,并使用它来创建下采样特征图。
1 x 1 卷积
什么 ?1 x 1 卷积 ? 卷积滤波器的大小应该大于 1 x 1,这样它们才有意义!让我们了解 1 x 1 卷积以及使用它们的意义。
输入的深度或卷积层中使用的滤波器的数量经常随着网络深度的增加而增加,从而导致特征图数量的增加。如下图所示,突出显示的数字是每层之后的特征数,增加为 64 , 128 , 256 , 512 。卷积神经网络中的大量特征图可能会导致问题,因为必须执行卷积运算向下穿过输入的深度。
池化层旨在将网络中的特征图宽度和高度缩小一半。但池化层对模型的滤波器数量、深度或通道数量没有影响。
为了减少模型的通道数或深度,人们使用 1 x 1 卷积技术。1X1 卷积简单地说就是滤波器的尺寸为 1X1。该 1X1 过滤器将逐像素地对整个输入图像进行卷积。
例如,如果输入为 64X64X3(高 X 宽 X 通道),如果我们选择 1X1 滤波器(即 1X1X3),则输出将具有与输入相同的高度和宽度,但只有一个通道 64X64X1。
更详细的1x1卷积的解释请参考如下链接。