企业建站系统费用,找公司开发网站,wordpress后台改成中文,湛江市建设局一 说明 最近对CNN架构的研究包括许多不同的卷积变体#xff0c;这让我在阅读这些论文时感到困惑。我认为通过一些更流行的卷积变体的精确定义#xff0c;效果和用例#xff08;在计算机视觉和深度学习中#xff09;是值得的。这些变体旨在保存参数计数、增强推理并利用目标… 一 说明 最近对CNN架构的研究包括许多不同的卷积变体这让我在阅读这些论文时感到困惑。我认为通过一些更流行的卷积变体的精确定义效果和用例在计算机视觉和深度学习中是值得的。这些变体旨在保存参数计数、增强推理并利用目标问题的某些特定特征。 这些变体中的大多数都简单易懂因此我专注于了解每种方法的优点和用例。这些知识有望帮助您了解最新CNN架构背后的直觉并帮助您设计自己的网络。 二 卷 积 让我们简要概述一下卷积的基本形式。根据PapersWithCode中的描述 卷积是一种矩阵运算由一个内核组成一个小的权重矩阵它滑过输入数据执行逐元素乘法与它所在的输入部分然后将结果相加到输出中。 此类操作对于处理图像是有利的因为 它们的参数效率非常高因为图像的不同位置共享相同的权重因此参数的数量与图像大小不成比例。卷积基本上是翻译不变的。也就是说输出不受图像中常见的小翻译和大翻译的影响这与 MLP 不同MLP 通常会给出非常不同的 1 像素翻译结果。 卷积的输出形状和复杂性可以使用以下参数进行配置 内核大小内核的维度通常使用内核大小 3×3。填充如何填充图像的边缘以保持卷积后的图像大小。例如上面的演示使用 1 个像素的填充。描述像素数和填充这些像素的规则。步幅扫描图像时内核的步长。通常设置为 1 以保持数据形状设置为 2 表示对其进行缩减采样。上面的演示使用步幅为 2。 来源伊莱·本德尔斯基 通过组合通过不同内核卷积的每个通道的结果来预测每个输出通道。因此需要C_in形状为K×K的内核来计算一个输出通道。其中 K 表示内核大小和C_inC_out分别表示输入和输出通道的数量。 # 参数K×K×C_in×C_out 计算H×W×C_in×C_out×K×K在步幅1的情况下 用例这种卷积层几乎用于计算机视觉的每个子任务。其中包括监督任务如图像和视频分类、对象检测、分割和合成任务如图像生成、图像超分辨率、图像到图像传输。还有一些视觉之外的应用例如用于序列建模的 1D 卷积和 3D 相关应用。 三 逐点卷积1x1卷积 逐点卷积是具有 1×1 个内核的卷积层的另一个词。它们也表示为通道或投影层上的卷积。到底为什么有人会使用它有两种主要用例 用于更改输入的维度即多个通道。 一些网络如 Inception连接从不同内核计算的特征这会导致通道过多因此应用逐点卷积来管理通道数。当使用逐点卷积压缩特征时计算密集型模块如挤压和激励等自注意力模块更可行。当将两个内积与元素总和或乘积组合时我们有时需要匹配通道数。 该操作可以看作是沿输入特征图的深度计算多个加权和。它可以有效地总结它们。 2. 它以微不足道的成本创建通道依赖关系。通过与缺乏这种依赖性的深度卷积相结合可以特别利用这一点。 # 参数C_in×C_out 计算高××C_in×C_out 四 转置卷积反卷积/逆卷积 反卷积显式计算卷积层的数学逆。虽然它广泛用于类视觉或信号处理但它在深度学习中并不重要因为可以通过梯度下降来学习操作的参数。 左步幅1右步幅2 转置卷积是一种使用卷积对图像大小进行上采样的更简单方法。该操作与步幅为 1左时的经典卷积没有什么不同。对于 n1 的步幅输出形状将扩展 n 倍。这是通过在像素之间填充 0 以创建所需大小的扩展图像并对扩展图像执行卷积来完成的。 虽然转置卷积不会隐式计算卷积的逆运算但对于深度学习来说并不重要因为所需的滤波器可能是逆滤波器总是可以通过梯度下降来学习。它充分实现了增加数据空间大小的功能。 重要提示虽然它们经常被混淆但转置卷积不是反卷积/逆卷积。 # 参数K×K×C_in×C_out 用例转置卷积用于需要上采样的网络架构。一些示例是用于语义分割、自动编码器或图像合成和生成网络的编码器-解码器样式网络中的用法。转置卷积的一个问题是棋盘伪影这可能会给图像生成/合成带来问题。该主题超出了本文的范围值得拥有自己的主题。有关更多信息请参阅谷歌大脑的这篇文章。 来源 https://en.wikipedia.org/wiki/Deconvolutionhttps://medium.com/marsxiang/convolutions-transposed-and-deconvolution-6430c358a5b6https://naokishibuya.medium.com/up-sampling-with-transposed-convolution-9ae4f2df52d0 四 扩张卷积Atrous convolution 感受野是模型可以参考的原始图像的范围用于对该步骤的一个像素进行推理。例如具有一个 3×3 卷积的模型的输出可以考虑来自相对于每个像素的空间位置的 3 像素感受野的信息而具有两个 3×3 卷积的模型具有相对于该位置的 5 像素的感受野。 增加核大小是增加感受野的一种方法但计算量也很快增加。对图像进行下采样还具有增加感受野的效果因为例如 3××3 特征图中的 8 卷积覆盖了更多的图像。三个 8×3 卷积足以考虑整个图像以便在 3×8 特征空间中进行推理。 在较低空间维度上计算特征对于图像分类来说大多是可以的但它会导致具有高分辨率输出的任务尤其是语义分割的大量信息丢失。 扩张卷积是一种卷积其中内核的像素间隔用 0 填充。间距也被视为一个超参数其值通常从上面演示中的 2 到大空间如 DeepLab 模型中的 24不等。它增加了内核大小而不会增加计算量。这种设计能够从更大的感受野进行极其高效的计算而不会丢失信息或增加层数。 扩张卷积 用例显示了语义分割中最重要的用法但在轻量级/移动 CNN 架构中也考虑了其他任务。 提议于通过扩张卷积进行多尺度上下文聚合 五 空间可分离卷积Separable Convolution 一些 3×3 矩阵可以表示为两个向量的矩阵乘法。由于 3×3 核也是一个常见矩阵因此可以将其拆分为一个 3×1 和一个 1×3 核但执行相同的操作。 Source: Chi-Feng Wang 具体来说空间可分卷积将原始卷积替换为上图所述的两个阶段。这样每个内核的参数数和操作数从 93×3 减少到 6。然而众所周知并非所有 3×3 核都可以分离因此空间可分离卷积可能会限制模型的能力。 # 参数KK×C_in×C_out 计算 H×W×C_in×C_out×KK 用例由于参数计数要小得多因此有时将空间可分离卷积用于模型压缩和轻量级架构。 源 https://towardsdatascience.com/a-basic-introduction-to-separable-convolutions-b99ec3102728[Deep Learning] 딥러닝에서 사용되는 다양한 Convolution 기법들 — Enough is not enough 六 深度卷积 不是卷积和组合每个通道的结果而是在每个通道上独立执行深度卷积并将结果堆叠。我们可以直观地看到这只有在输入和输出通道的数量一致时才有效。 深度卷积具有很高的参数和计算效率因为参数的数量和计算复杂度都除以输出通道的数量输出通道的数量通常范围高达 1024。但是速度优势与操作数量的减少不成正比因为深度卷积不像现代硬件上的传统卷积那样优化。 # 参数K×K×C_in 计算H×W×C_in×K×K 用例深度卷积是构建更复杂的变体和卷积块的关键组件这些变体和卷积块具有参数和计算效率。 七 深度可分离卷积 深度卷积然后是逐点卷积。由于深度卷积在通道之间没有连接因此我们使用逐点卷积将它们连接起来。Xception的作者发现将非线性放在深度卷积之后很有用。整个过程如下图所示。 空间可分卷积将经典卷积中的 x 轴和 y 轴分开。在这种情况下深度可分离卷积可以被视为分离通道维度。 与普通的深度卷积相比计算复杂性略有增加尽管仍然比传统卷积小得多。然而与普通的深度卷积不同它在许多经验实验中有效地模仿了常规卷积并广泛用于现代CNN架构。 # 参数K×KC_out×C_in 计算 H×W×C_in×K×KC_out 用例XceptionMobileNet V1 / V2EfficientNet V1MnasNet/ V2等等... 您可以在以下第 2 部分找到深度可分卷积的复杂历史Xception使用深度可分卷积进行深度学习 在这篇文章中我们回顾了在某些情况下被提议取代传统卷积层的卷积变体列表。这些块各有优缺点用于解决不同的问题。在后续的文章中我们将回顾卷积设计这些设计将进一步增强我们创建CNN架构的工具箱。 请在评论中告诉我有关建议或问题的信息。我会尽量在最多2天内回复你们所有人。