"); //-->
DWConv
论文:《Xception: Deep Learning with Depthwise Separable Convolutions》[12] (Accepted by CVPR 2017)
代码:https://github.com/CVHuber/Convolution/blob/main/Depthwise%20Separable%20Convolution.py
讲解:https://mp.weixin.qq.com/s/qkldaRnuN-R0B64ssUs47w
背景
深度可分离卷积,由深度卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)两部分组成,后也被MobileNet[13]等著名网络大规模应用。标准的卷积过程中对应图像区域中的所有通道均被同时考虑,而深度可分离卷积打破了这层瓶颈,将通道和空间区域分开考虑,对不同的输入通道采取不同的卷积核进行卷积,它将普通的卷积操作分解为两个过程,目的是希望能用较少的参数学习更丰富的特征表示。
Depthwise Separable Convolution
原理
逐深度卷积
不同于原始卷积,深度卷积是一个卷积核负责一个通道,独立地在每个通道上进行空间卷积。因此,深度卷积的输出特征图数量等于输入特征图数量,无法进行有效的维度扩展。
逐点卷积
由于一个特征图仅被一个滤波器卷积,无法有效的利用不同通道在相同空间位置上的特征信息,由此加入了逐点卷积。点卷积主要是要1×1卷积构成,负责将深度卷积的输出按通道投影到一个新的特征图上。
特性
降低参数量和计算量
深度可分离卷积将原始的卷积运算分为两层,一层用于滤波(深度卷积),一层用于组合(逐点卷积)。这种分解过程能极大减少模型的参数量和计算量。
降低模型容量
深度可分离卷积在应用时并没有使用激活函数。此外,虽然深度可分离卷积可以显著的降低模型的计算量,但同时也会导致模型的容量显著降低,从而导致模型精度的下降。
DeformableConv
论文:《Deformable Convolutional Networks》[14] (Accepted by ICCV 2017)
代码:https://github.com/CVHuber/Convolution/blob/main/Deformable%20Convolution.py
讲解:https://mp.weixin.qq.com/s/O9ToEnVC-H7qPwxPQN-a7A
背景
在计算机视觉领域,同一物体在不同场景,角度中未知的几何变换是任务的一大挑战,通常来说要么通过充足的数据增强,扩充足够多的样本去增强模型适应尺度变换的能力,要么设置一些针对几何变换不变的特征或者算法,比如SIFT或者滑动窗口等。然而传统CNNs固定的几何结构无法对未知的物体形变进行有效建模,因此可变形卷积的提出便是用于解决此问题。
(a) 普通卷积;(b) 可变形卷积;(c)-(d) 可变形卷积的两种特殊形式。
原理
需要注意的是,可变形卷积并不是真正意义上的学习可变形的卷积核,而是利用额外的卷积层去学习相应的偏移量,将得到的偏移量叠加到输入特征图中相应位置的像素点中。但由于偏移量的生成会产生浮点数类型,而偏移量又必须转换为整形,如果直接取整的话是无法进行反向传播的,因此原文是利用双线性插值的方式来间接的计算对应的像素值。
特性
自适应感受野
传统的卷积核由于尺寸形状固定,其激活单元的感受野也相对固定。但实际上同一个物体由于在不同位置上可能对应着不同的尺度或者变形,因此自适应感受野是进行精确定位所需要的,特别是对于密集型预测任务来说。可变形卷积基于一个平行的网络来学习偏移,让卷积核在输入特征图能够发散采样,使网络能够聚焦目标中心,从而提高对物体形变的建模能力。
难以部署
DCN虽然可以带来高精度,但是仍然存在一个缺陷,即当卷积核过大时,会占用非常大的内存空间,因此在落地部署方面的应用很受限制。不过对于参加竞赛而言倒不失为一种提分的trick。
改进
可变形卷积可以在一定程度上提升模型特征提取的泛化能力,但同时也会引入一些不相关的背景噪声干扰。为此,作者提出了改进的版本《Deformable ConvNets v2: More Deformable, Better Results》[15],并给出了三种相应的解决方案:使用更多数量的可变形卷积、为每个偏置都添加相应的权重、模仿R-CNN中的特征。然而,可变形卷积的计算效率也是一个值得商榷的问题。从另一个侧面来看,可变形卷积可以看做是对局部区域进行自注意力操作。
SSConv
背景
与深度可分离卷积一样,空间可分离卷积也属于因式分离卷积的一种,其核心思想是从图像空间维度(宽度和高度)进行卷积运算。
原理
空间可分离卷积的工作原理是将卷积核拆分为两部分,即将一个k×k的卷积核拆成k×1和1×k两个方向的卷积核分别对输入特征图进行卷积,以降低计算的复杂度。
Spatially Separable Convolution
特性
降低计算量
如上图所示,以5×5的输入特征图为例,如果我们直接用一个3×3的卷积核去卷积,共需要9×9=81次乘法运算。而如果换成空间可分离卷积,那么计算量为15×3+9×3=72次乘法运算。共节省了约11%的计算量。
应用
可以在空间上分离的最著名的卷积之一是Sobel算子,用于检测边缘。
局限性
空间可分离卷积在实际当中很少被广泛应用,最主要的一个原因是并不是所有的卷积核都能够有效的拆分成小的卷积核。
GraphConv
论文:《Semi-Supervised Classification with Graph Convolutional Networks》[16] (Accepted by ICLR 2017)
讲解:https://github.com/CVHuber/Convolution/blob/main/Graph%20Convolution.py
背景
图卷积网络又是图网络中最简单的一个分支,而图卷积的提出便是为了有效的解决传统CNNs、RNNs等网络无法处理的非欧式空间的数据问题。
Graph Convolution
原理
图中的核心思想是利用边的信息对节点信息进行聚合,从而生成新的节点表示。简而言之,CNNs中的卷积运算是卷积核对应位置的加权求和,扩展到GCNs就是利用边的信息不断的汇聚邻间节点的信息,以更新原节点的参数。
特性
节点特征
每个节点均可用于特征表示。
结构特征
节点与节点之间通过携带信息的边进行关联。
Inception Block
论文:Going deeper with convolutions[17] (Accepted by CVPR 2015)
背景
Inception Block最初提出的目的是希望能够在同一层特征图上获得不同尺度下的特征表征,增加网络宽度有利于获得更丰富的特征表示。
Inception v1
特性
多尺度特征提取
由上图可知,Inception Block主要通过多个带有不同卷积核大小的卷积运算来捕获多尺度的上下文信息,最后再通过拼接操作聚合输出,以获得多尺度特征表示。
改进
Inception v1
为了进一步地压缩网络的参数量和计算量,作者在原先的Inception块中大量的引入了1×1卷积,从而减小网络的整体规模。
Inception v2
Inception v2[18]的主要思想便是提出了Batch Normalization,通过减少内部协变量偏移有效的加速了深度网络的训练。此外,借鉴VGG-Net[19]的思想,v2将v1中的5×5卷积用两个3×3卷积进行替换,在保证获得同等感受野的情况下,进一步的降低网络的参数量和计算量。
Inception v3
Inception v3[20]主要借鉴了空间可分离卷积的思想,将原本k×k的卷积核拆分成1×k和k×1的一维卷积,一方面可以有效的加速网络的运算,另一方面多余的计算资源可用于增加网络的深度,提高非线性映射的能力。
Inception v4
Inception v4[21]则借鉴了ResNet[22]的思想,引入了Skip Connection,不仅可以极大地加速网络的训练,同时也能够显著的提高网络性能。
AsymmetricConv
论文:《ACNet: Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric Convolution Blocks》[23] (Accepted by ICCV 2019)
代码:https://github.com/CVHuber/Convolution/blob/main/Asymmetric%20Convolution.py
背景
为特定的应用设计合适的CNNs架构本身涉及到繁重的手动工作或者需要高昂的GPU训练时间,工业界也正在寻求一些CNNs结构可以方便的集成到其他成熟架构中,进一步提升应用到实际任务中的性能。因此,非对称卷积(Asymmetric Convolution)模块提出的目的就是为了能够充分利用已有的成熟组件来构建一个更加高效的网络,在没有增加任何额外的开销的情况下
Asymmetric Convolution
原理
非对称卷积,其核心思想是通过将原始卷积分解,该算法将三个分别具有正方形,水平和垂直核的卷积分支的输出求和。从而在保持精度相当的情况下降低参数量和计算量,形式上利用到前面提到的空间可分离卷积。
特性
无缝衔接
非对称卷积仅引入少量超参数便可方便的与其它结构结合而无需微调,显示增强标注卷积核的特征表达能力。
无损提精
应用非对称卷积可以在没有增加额外的推理时间和计算开销的前提下,有效的提高网络精度,同时增强模型对旋转失真物体的鲁棒性。
改进
原作者在2021年的CVPR会议上进一步提出了ACN v2[24],设计出一种称为Diverse Branch Block的模块,创造性的将Inception的多分支、多尺度思想与过参数化思想进行了一次组合,是一种可以提升CNNs性能且推理耗时无损的通用模块组件。
OctaveConv
论文:坡国立大学以及奇虎360的研究人员联合发表在ICCV 2019的一篇文章《Drop an Octave: Reducing Spatial Redundancy in Convolutional Neural Networks with Octave Convolution》[25] (Accepted ICCV 2019)
代码:https://github.com/CVHuber/Convolution/blob/main/Octave%20Convolution.py
讲解:https://mp.weixin.qq.com/s/HiHQQaJcrfi5vk_ixPwbIw
背景
在自然图像中,信息以不同的频率传递,其中较高的频率通常用精细的细节编码,较低的频率通常用全局结构编码。同样,卷积层的输出特征图也可以看作是不同频率下信息的混合。在这项工作中,作者提出将混合特征图按其频率分解,并设计一种新的八度卷积操作来存储和处理空间分辨率较低且空间变化较慢的特征图,从而降低了内存和计算成本。与现有的多尺度方法不同,OctConv被表示为一个单一的、通用的、即插即用的卷积单元,可以直接替换普通卷积,而无需对网络架构进行任何调整。Octave本意指的是八音阶,在音乐上代表将声音频率减半的意思,故起名为Octave卷积,旨在对数据中的低频信息减半从而达到加速卷积运算的目的。
Motivation
原理
Octave Convolution
对于普通卷积,所有的输入和输出特征图具有相同的空间分辨率。然而,相关研究表明自然图像可以分解为捕捉全局布局和粗结构的低频信号和捕捉精细细节的高频信号。类似的,卷积输出的特征也应该对应有一个映射子集,它捕获空间低频变化并包含空间冗余信息。为了减少这种空间冗余,引入了Octave特征表示,它显式地将特征映射张量分解为对应于低频和高频的组。尺度空间理论[26]为我们提供了一种创建空间分辨率尺度空间的原则方法,用这种方式可以定义低频和高频空间,即将低频特征图的空间分辨率降低一个Octave。
特性
提高效率
由于低频特征图中包含着过多无率用的背景信息,因此可以将低频特征图的空间分辨率降低为原始的一半,减少冗余的空间信息,这也意味着网络的计算开销也随之减少,从而达到加速网络计算效率的目的。
提高精度
与普通卷积相比,压缩低频分辨率有效地将感受野扩大了2倍,进一步帮助每个OctConv层捕获更多的长距离上下文信息,从而提高识别精度。此外,除了频间信息的更新,作者还分别对高/低频特征分别进行升/降采样,以实现不同频率间信息的交互,从而在一定程度上能够提高模型的精度。总的来说,OctConv使用更紧凑的特征表示来存储和处理整个网络中的信息,从而可以达到更好的效率和性能。
HetConv
论文:《HetConv: Heterogeneous Kernel-Based Convolutions for Deep CNNs》[27] (Accepted by CVPR 2019)
代码:https://github.com/CVHuber/Convolution/blob/main/Heterogeneous%20Convolution.py
讲解:https://mp.weixin.qq.com/s/SLN0XmSqtGKmIXVKUUy9rg
背景
提高CNNs精度最直接的做法通常是设计更宽或更深的网络,然而这会带来更高的计算成本。为了降低计算成本,目前已有三类滤波器被广泛地应用,即逐深度卷积(DWC)、逐点卷积(PWC)以及组卷积(GC)。但是,设计一种新架构需要大量研究工作才能找到最优的过滤器组合,进而使得计算成本最小。另一种提升模型效率的常用方法是压缩模型,即通过连接剪枝、过滤器剪枝和量化技术来进一步的减少计算成本。不同于以上方法,异构卷积主要侧重于通过设计新的卷积核来降低给定模型的计算成本,在保证低时延的同时做到精度无损。
Heterogeneous Convolution
原理
如上图所示,异构卷积的结构设计很简单,即输入特征图的一部分通道应用k×k的卷积核,其余的通道应用1×1的卷积核。其中,P为控制卷积核为k的比例。
特性
上图展示了不同卷积方式的延迟对比,不难发现第一种和第二种都属于两段式卷积,有一个延迟单元,并且也是目前主流轻量化卷积所使用的。所提出的方法与常规卷积一样是0延迟的。因此,从组成结构上分析可知,所提出的方法的计算成本是比目前主流的轻量化卷积更低的。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。