不同的卷积核大小、步长(Stride)和填充(Padding)在卷积神经网络中具有关键作用,直接影响特征的提取能力、计算效率和模型性能。
1. 卷积核大小(Kernel Size)
- 作用:
- 大卷积核(如 11×11、7×7):捕捉更大范围的局部特征,适合早期层提取全局或粗粒度特征(如边缘、纹理),但参数量大,计算成本高。
- 小卷积核(如 3×3、1×1):提取细粒度特征,参数量少,适合深层网络堆叠(如 VGG),通过多层叠加等效大卷积核的感受野,同时增强非线性。
- 设计建议:
- 浅层网络(如 LeNet、AlexNet):使用较大卷积核快速提取基础特征。
- 深层网络(如 VGG、ResNet):优先使用小卷积核(3×3),平衡感受野和计算效率。
- 1×1 卷积:用于通道数调整(升维/降维)或非线性增强(如 Inception、ResNet)。
2. 步长(Stride)
- 作用:
- 大步长(如 2、4):快速降低特征图尺寸(下采样),减少计算量,但可能丢失细节信息。
- 小步长(如 1):保留更多空间信息,适合精细特征提取。
- 设计建议:
- 早期层:可结合大步长(如 Stride=4)快速压缩输入尺寸(如 AlexNet 第一层)。
- 深层网络:通常用 Stride=1 保持分辨率,仅在需要下采样时局部使用大步长(如 ResNet 中的 Stride=2)。
- 替代池化:用卷积的 Stride=2 替代池化层,同时保留学习能力(如 ResNet)。
3. 填充(Padding)
- 作用:
- Valid(无填充):输出尺寸减小,可能丢失边缘信息。
- Same(对称填充):保持输入输出尺寸一致,适合堆叠多层卷积(如 VGG)。
- 非对称填充(如
padding=(1,1)
):解决奇数尺寸卷积核的填充问题。
- 设计建议:
- 保持分辨率:小卷积核(如 3×3)配合
padding=1
,实现尺寸不变(VGG 风格)。 - 大卷积核:需计算填充量以对齐输出(如 7×7 卷积核需
padding=3
保持尺寸)。
- 保持分辨率:小卷积核(如 3×3)配合
4. 池化操作
- 作用:
- 降维:减少计算量,增强平移不变性。
- 防止过拟合:通过压缩特征图抑制噪声。
- 设计建议:
- 池化核大小:常用 2×2 或 3×3,步长通常与核大小一致(如 2×2 池化 + Stride=2)。
- 全局平均池化(GAP):替代全连接层,减少参数量(如 ResNet)。
- 减少池化层:现代网络(如 ResNet、DenseNet)倾向于用卷积的 Stride=2 替代池化。
5. 设计原则总结
-
任务驱动:
- 分类任务:早期层用大卷积核 + 大步长快速压缩,深层用小卷积核 + 小步长。
- 密集预测任务(如分割):减少下采样次数,保留高分辨率特征。
-
效率与性能平衡:
- 优先使用 3×3 卷积核堆叠,替代大卷积核(参考 VGG)。
- 用 1×1 卷积调整通道数,减少计算量(参考 Inception)。
-
现代架构技巧:
- 残差连接(ResNet):允许更深的网络,缓解梯度消失。
- 密集连接(DenseNet):增强特征复用,减少参数量。
- 空洞卷积:扩大感受野而不增加计算量(如语义分割)。
-
输入尺寸适配:
- 高分辨率输入(如 224×224)可早期下采样(大步长或池化)。
- 低分辨率输入(如 32×32)需谨慎使用下采样。
6. 经典案例对比
- AlexNet:早期用 11×11 大核 + Stride=4 快速降维,适合 224×224 输入。
- VGG:全 3×3 小核 + Same 填充,通过堆叠实现深层网络。
- ResNet:用 7×7 初始卷积核 + Stride=2 快速压缩,后续用残差块 + 小核。
- 自定义网络:需根据输入分辨率和任务复杂度调整参数(如小分辨率图像避免过度下采样)。
7. 实验调参建议
- 可视化特征图:观察不同参数下特征的提取效果。
- 参数量与计算量:用
FLOPs
和参数量
评估设计合理性。 - 消融实验:对比不同卷积核、步长、填充组合的性能差异。