卷积核设计
- 卷积核设计是深度学习模型设计中的关键部分,卷积核的大小、形状和数量等方面的选择直接影响了模型的性能和特征提取能力。以下是卷积核设计的一些重要考虑因素:
卷积核大小和形状
:
- 卷积核的大小通常以高度(height)和宽度(width)来定义,通常表示为HxW。
- 卷积核的大小决定了它在输入上滑动时涵盖的感受野大小。较小的卷积核可以捕获细节信息,而较大的卷积核可以捕获更大尺度的特征。
- 常见的卷积核大小包括3x3、5x5和1x1。3x3卷积核是最常用的,因为它可以有效地捕获局部特征。
卷积核的数量
:
- 卷积核的数量决定了网络中卷积层的复杂度和模型的表达能力。更多的卷积核意味着网络可以学习更多不同的特征。
- 常见的卷积核数量包括16、32、64等。通常,随着网络深度的增加,卷积核数量也会逐渐增加。
步幅(Stride)
:
- 步幅决定了卷积操作在输入上滑动的距离。较大的步幅会导致输出特征图的尺寸减小,而较小的步幅会保持尺寸。
- 大步幅卷积可以减小输出尺寸,从而减小计算复杂度,适用于池化操作的替代。小步幅卷积可以保持输出尺寸,有助于保留更多的空间信息。
填充(Padding)
:
- 填充决定了卷积操作在输入的边缘是否允许部分重叠。零填充(Zero-padding)是常见的,可以保持输出尺寸与输入尺寸相同。
- 有效的填充可以防止输出特征图在卷积操作中缩小得太快,有助于保留边缘信息。
卷积核的初始化
:
- 卷积核的初始化方式对模型的收敛速度和性能有重要影响。常见的初始化方法包括随机初始化、Xavier初始化和He初始化,选择适合任务的初始化方法非常重要。
多尺度卷积
:
- 为了提取不同尺度的特征,可以使用多尺度的卷积核。这可以通过在同一层使用不同大小的卷积核来实现。
转移学习
:
- 可以使用预训练的卷积核,如在ImageNet数据集上预训练的卷积核,然后微调它们以适应特定任务。这通常可以加速模型的训练并提高性能。
- 在设计卷积核时,需要根据具体任务和数据集的需求进行权衡和实验,以找到最佳的配置。通常,模型设计是一个迭代的过程,需要不断尝试不同的卷积核大小、数量和结构,以找到最适合任务的模型架构。
1. 基于参数压缩的卷积设计
1.1 【1×1卷积】
- <font color=#E91E63>卷积核的尺寸等于1的特例,来自《Network in Network》</font>
1.2 【1×1卷积典型应用】
- <font color=#E91E63>InceptionNet , Xception/MobileNet,SqueezeNet,ResNet/ResNext</font>
1.3 【小卷积的使用】
- <font color=#E91E63>DC Ciresan等人在Flexible, high performance convolutional neural networks for image classification”中研究表明使用更小的卷积是有利的</font>
2. 基于感受野的卷积设计
2.1 膨胀卷积(带孔卷积,strous convolution)
- <font color=#E91E63>Google在图像分割系列模型Deeplab中提出了膨胀卷积,不增加实际计算量,但拥有更大的感受野。</font>
- <font color=#E91E63>并行模型与串联模型</font>
2.2 可变形卷积
- <font color=#E91E63>更灵活的感受野(active convolution , deformable convolution)</font>
2.3 非局部卷积
- <font color=#E91E63>Non-local卷积-全局感受野</font>
3. 基于卷积操作的优化
3.1 移位网络
- <font color=#E91E63>ShiftNet使用移位操作来代替卷积操作,Depthwise Convolution的简化,大大降低了计算量</font>
3.2 加法网络
- <font color=#E91E63>AdderNet去除了卷积操作中的乘法,只使用加法</font>
注意:部分内容来自阿里云天池