当前位置: 首页 > article >正文

CNN:卷积网络中设计1×1夹在主要卷积核如3×3前后的作用

话不多说直接上图举例
ResNet网络结构图
像在 ResNet 的 Bottleneck 结构 中,1x1 卷积 被放置在 3x3 卷积 的前后,这种设计有以下几个关键作用和优势:


1. 降低计算复杂度

  • 问题:直接使用 3x3 卷积计算量较大,尤其是当输入和输出通道数较多时。
  • 解决方案
    • 在 3x3 卷积之前,使用 1x1 卷积将输入通道数减少(通常减少到原来的 1/4)。
    • 在 3x3 卷积之后,使用 1x1 卷积将通道数恢复到目标输出通道数。
  • 效果
    • 通过减少中间特征图的通道数,显著降低了 3x3 卷积的计算量。

2. 减少参数量

  • 问题:3x3 卷积的参数量与输入和输出通道数成正比,当通道数较多时,参数量会非常大。
  • 解决方案
    • 使用 1x1 卷积先减少通道数,再使用 3x3 卷积,最后恢复通道数。
  • 效果
    • 这种设计可以大幅减少参数量,从而降低模型的存储需求和过拟合风险。

3. 跨通道信息融合

  • 问题:3x3 卷积主要关注局部空间特征,对跨通道信息的融合能力有限。
  • 解决方案
    • 1x1 卷积可以在不改变空间尺寸的情况下,对通道维度进行线性组合,从而实现跨通道信息融合。
  • 效果
    • 增强了特征的表达能力。

4. 非线性增强

  • 问题:单纯的 3x3 卷积只能提取线性特征。
  • 解决方案
    • 在 1x1 卷积和 3x3 卷积之间加入非线性激活函数(如 ReLU)。
  • 效果
    • 引入了更多的非线性,增强了模型的表达能力。

5. Bottleneck 结构的具体设计

Bottleneck 结构通常由以下三部分组成:

  1. 1x1 卷积(降维)

    • 输入通道数: C i n C_{in} Cin
    • 输出通道数: C m i d = C i n / 4 C_{mid} = C_{in} / 4 Cmid=Cin/4
    • 作用:减少通道数,降低计算量。
  2. 3x3 卷积(空间特征提取)

    • 输入通道数: C m i d C_{mid} Cmid
    • 输出通道数: C m i d C_{mid} Cmid
    • 作用:提取局部空间特征。
  3. 1x1 卷积(升维)

    • 输入通道数: C m i d C_{mid} Cmid
    • 输出通道数: C o u t C_{out} Cout
    • 作用:恢复通道数,完成特征变换。

6. 计算量对比

假设:

  • 输入特征图尺寸: H × W × C i n H \times W \times C_{in} H×W×Cin
  • 输出特征图尺寸: H × W × C o u t H \times W \times C_{out} H×W×Cout
  • 3x3 卷积核尺寸: 3 × 3 × C i n × C o u t 3 \times 3 \times C_{in} \times C_{out} 3×3×Cin×Cout
  • Bottleneck 结构:
    • 第一个 1x1 卷积: 1 × 1 × C i n × C m i d 1 \times 1 \times C_{in} \times C_{mid} 1×1×Cin×Cmid
    • 3x3 卷积: 3 × 3 × C m i d × C m i d 3 \times 3 \times C_{mid} \times C_{mid} 3×3×Cmid×Cmid
    • 第二个 1x1 卷积: 1 × 1 × C m i d × C o u t 1 \times 1 \times C_{mid} \times C_{out} 1×1×Cmid×Cout

计算量对比

  • 直接使用 3x3 卷积的计算量:
    H × W × C i n × C o u t × 3 × 3 H \times W \times C_{in} \times C_{out} \times 3 \times 3 H×W×Cin×Cout×3×3
  • Bottleneck 结构的计算量:
    H × W × C i n × C m i d × 1 × 1 + H × W × C m i d × C m i d × 3 × 3 + H × W × C m i d × C o u t × 1 × 1 H \times W \times C_{in} \times C_{mid} \times 1 \times 1 + H \times W \times C_{mid} \times C_{mid} \times 3 \times 3 + H \times W \times C_{mid} \times C_{out} \times 1 \times 1 H×W×Cin×Cmid×1×1+H×W×Cmid×Cmid×3×3+H×W×Cmid×Cout×1×1
    通常 C m i d = C i n / 4 C_{mid} = C_{in} / 4 Cmid=Cin/4,因此 Bottleneck 结构的计算量远小于直接使用 3x3 卷积。

7. 总结

Bottleneck 结构中 1x1 卷积的作用:

  1. 降低计算复杂度和参数量
  2. 实现跨通道信息融合
  3. 增强非线性表达能力

这种设计使得 ResNet 可以更高效地训练更深的网络,同时保持较强的特征提取能力。


http://www.kler.cn/a/564381.html

相关文章:

  • 分布式事物在RocketMQ中的应用
  • (21)从strerror到strtok:解码C语言字符函数的“生存指南2”
  • 实时时钟(RTC)/日历芯片PCF8563的I2C读写驱动(2):功能介绍
  • 武理本南理硕研一:算法卷不动走向开发岗?自学Linux C++如何规划开发技能树?
  • smolagents学习笔记系列(番外一)使用DeepSeek API Key + CodeAgent
  • JavaScript将:;隔开的字符串转换为json格式。使用正则表达式匹配键值对,并构建对象。多用于解析cssText为style Object对象
  • ubuntu下r8125网卡重启丢失修复案例一则
  • 【CodeAgent论文】VERSICODE: TOWARDS VERSION-CONTROLLABLE CODE GENERATION
  • 前端Javascrip后端Net6前后分离文件上传案例(完整源代码)下载
  • 挖src实用脚本开发(二)
  • Pytorch实现之脑电波图像生成
  • linux--IPC之内存映射
  • C++核心指导原则: 常量和不可变性
  • 如何在Oracle Linux 7.9上安装NVIDIA显卡驱动
  • Python基础大全:Python变量详解
  • MySQL MHA 部署全攻略:从零搭建高可用数据库架构
  • 【内存泄漏 | 论文速读】Automated Memory Leak Diagnosisby Regression Testing
  • PG 中级认证专家考证事项
  • 分布式Session
  • 信息系统的安全防护