1

带你认识 9 种常用卷积神经网络

 2 years ago
source link: https://www.techug.com/post/take-you-to-know-9-common-convolutional-neural-networks.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

带你认识 9 种常用卷积神经网络

2

​​​​​​​​​​​​​​​​​​摘要:在卷积神经网络中,通过使用 filters 提取不同的特征,这些 filters 的权重是在训练期间自动学习的,然后将所有这些提取的特征“组合”以做出决策。

本文分享自华为云社区《神经网络常用卷积总结》,原文作者:fdafad  。

进行卷积的目的是从输入中提取有用的特征。在图像处理中,可以选择各种各样的 filters。每种类型的 filter 都有助于从输入图像中提取不同的特征,例如水平/垂直/对角线边缘等特征。在卷积神经网络中,通过使用 filters 提取不同的特征,这些 filters 的权重是在训练期间自动学习的,然后将所有这些提取的特征“组合”以做出决策。

1.    2D 卷积

2.    3D 卷积

3.    1*1 卷积

4.    空间可分离卷积

5.    深度可分离卷积

6.    分组卷据

7.    扩展卷积

8.    反卷积

9.    Involution

单通道:在深度学习中,卷积本质上是对信号按元素相乘累加得到卷积值。对于具有 1 个通道的图像,下图演示了卷积的运算形式:

​然后将这三个通道相加(逐个元素相加)以形成一个单个通道(3 x3 x 1),该通道是使用 filters(3 x3 x 3 矩阵)对输入层(5 x5 x 3 矩阵)进行卷积的结果:

1*1 卷积

对于 1*1 卷积而言,表面上好像只是 featuremaps 中的每个值乘了一个数,但实际上不仅仅如此,首先由于会经过激活层,所以实际上是进行了非线性映射,其次就是可以改变 featuremaps 的 channel 数目。

​以通常用于图像处理的 Sobel 内核为例。你可以通过乘以向量[1,0,-1]和[1,2,1] .T 获得相同的内核。在执行相同的操作时,你只需要 6 个而不是 9 个参数。

一般来说,两个神经网络层间应用了多个过滤器,现在假设过滤器个数为 128。128 次 2D 卷积得到了 128 个 5 x 5 x 1 的输出映射。然后将这些映射堆叠为一个大小为 5 x 5 x128 的单个层。空间维度如高和宽缩小了,而深度则扩大了。如下图所示:

​深度可分离卷积—第一步:在 2D 卷积中分别使用 3 个卷积核(每个过滤器的大小为 3x 3 x 1),而不使用大小为 3x 3 x 3 的单个过滤器。每个卷积核仅对输入层的 1 个通道做卷积,这样的卷积每次都得出大小为 5x 5 x 1 的映射,之后再将这些映射堆叠在一起创建一个 5x 5 x 3 的图像,最终得出一个大小为 5x 5 x 3 的输出图像。深度可分离卷积的第二步是扩大深度,我们用大小为 1x1x3 的卷积核做 1×1 卷积。每个 1x1x3 卷积核对 5x 5 x 3 输入图像做卷积后都得出一个大小为 5x 5 x1 的映射。

Group convolution 分组卷积,最早在 AlexNet 中出现,由于当时的硬件资源有限,训练 AlexNet 时卷积操作不能全部放在同一个 GPU 处理,因此作者把 feature maps 分给多个 GPU 分别进行处理,最后把多个 GPU 的结果进行融合。

扩张卷积引入另一个卷积层的参数被称为扩张率。这定义了内核中值之间的间距。扩张速率为 2 的 3×3 内核将具有与 5×5 内核相同的视野,而只使用 9 个参数。 想象一下,使用 5×5 内核并删除每个间隔的行和列。(如下图所示)系统能以相同的计算成本,提供更大的感受野。扩张卷积在实时分割领域特别受欢迎。 在需要更大的观察范围,且无法承受多个卷积或更大的内核,可以才用它。

这里提到的反卷积跟 1 维信号处理的反卷积计算是很不一样的,FCN 作者称为 backwards convolution,有人称 Deconvolution layer isa very unfortunate name and should rather be called a transposed convolutionallayer. 我们可以知道,在 CNN 中有 con layer 与 pool layer,con layer 进行对图像卷积提取特征,pool layer 对图像缩小一半筛选重要特征,对于经典的图像识别 CNN 网络,如 IMAGENET,最后输出结果是 1X1X1000,1000 是类别种类,1×1 得到的是。FCN 作者,或者后来对 end to end 研究的人员,就是对最终 1×1 的结果使用反卷积(事实上 FCN 作者最后的输出不是 1X1,是图片大小的 32 分之一,但不影响反卷积的使用)。这里图像的反卷积与图 6 的 full 卷积原理是一样的,使用了这一种反卷积手段使得图像可以变大,FCN 作者使用的方法是这里所说反卷积的一种变体,这样就可以获得相应的像素值,图像可以实现 end to end。

输入:2×2, 卷积核:4×4, 滑动步长:3, 输出:7×7       

即输入为 2×2 的图片经过 4×4 的卷积核进行步长为 3 的反卷积的过程        

1.输入图片每个像素进行一次 full 卷积,根据 full 卷积大小计算可以知道每个像素的卷积后大小为 1+4-1=4, 即 4×4 大小的特征图,输入有 4 个像素所以 4 个 4×4 的特征图        

2.将 4 个特征图进行步长为 3 的 fusion(即相加); 例如红色的特征图仍然是在原来输入位置(左上角),绿色还是在原来的位置(右上角),步长为 3 是指每隔 3 个像素进行 fusion,重叠部分进行相加,即输出的第 1 行第 4 列是由红色特阵图的第一行第四列与绿色特征图的第一行第一列相加得到,其他如此类推。

可以看出反卷积的大小是由卷积核大小与滑动步长决定, in 是输入大小, k 是卷积核大小, s 是滑动步长, out 是输出大小        

得到 out = (in- 1) * s + k        

上图过程就是, (2 – 1) *3 + 4 = 7

Involution

论文:Involution:Inverting the Inherence of Convolution for Visual Recognition (CVPR’21)

代码开源地址:https://github.com/d-li14/involution

尽管神经网络体系结构发展迅速,但卷积仍然是深度神经网络架构构建的主要组件。从经典的图像滤波方法中得到的灵感,卷积核具有 2 个显著的特性 Spatial-agnostic 和 Channel-specific。在 Spatial 上,前者的性质保证了卷积核在不同位置之间的共享,实现了平移不变性。在 Channel 域中,卷积核的频谱负责收集编码在不同 Channel 中的不同信息,满足后一种特性。此外,自从 VGGNet 出现以来,现代神经网络通过限制卷积核的空间跨度不超过 3*3 来满足卷积核的紧凑性。

一方面,尽管 Spatial-Agnostic 和 Spatial-Compact 的性质在提高效率和解释平移不变性等价方面有意义,但它剥夺了卷积核适应不同空间位置的不同视觉模式的能力。此外,局部性限制了卷积的感受野,对小目标或者模糊图像构成了挑战。另一方面,众所周知,卷积核内部的通道间冗余在许多经典深度神经网络中都很突出,这使得卷积核对于不同通道的灵活性受到限制。

为了克服上述限制,本文作者提出了被称为 involution 的操作,与标准卷积相比,involution 具有对称反向特性,即 Spatial-Specific 和 Channel-Agnostic。具体地说,involution 核在空间范围上是不同的,但在通道上是共享的。由于 involution 核的空间特性,如果将其参数化为卷积核等固定大小的矩阵,并使用反向传播算法进行更新,则会阻碍学习到的对合核在不同分辨率的输入图像之间的传输。在处理可变特征分辨率的最后,属于特定空间位置的 involution 核可能仅在对应位置本身的传入特征向量的条件下作为实例生成。此外,作者还通过在通道维数上共享 involution 核来减少核的冗余。

综合上述 2 个因素,involution 运算的计算复杂度随特征通道数量线性增加,动态参数化 involution 核在空间维度上具有广泛的覆盖。通过逆向设计方案,本文提出的 involution 具有卷积的双重优势:

1:involution 可以在更广阔的空间中聚合上下文,从而克服了对远程交互进行建模的困难

2:involution 可以在不同位置上自适应地分配权重,从而对空间域中信息最丰富的视觉元素进行优先排序。

大家也都知道最近基于 Self-Attention 进一步的研究表明,很多任务为了捕获特征的长期依赖关系提出使用 Transformer 来进行建模。在这些研究中,纯粹的 Self-Attention 可以被用来构建具有良好性能的独立模型。而本文将揭示 Self-Attention 是通过一个复杂的关于核结构的公式来对邻近像素之间的关系进行建模,其实也就是 involution 化的特殊情况。相比之下,本文所采用的核是根据单个像素生成的,而不是它与相邻像素的关系。更进一步,作者在实验中证明,即使使用简单版本,也可以实现 Self-Attention 的精确。

involution 的计算过程如下图所示:

​另外作者基于 MM 系列代码,实现了 mmclassficton、mmsegmentation、mmdetection 中的部分模型。

点击关注,第一时间了解华为云新鲜技术~

本文文字及图片出自 InfoQ


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK