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

深度学习篇---卷积

卷积概念:

要理解三通道 RGB 图像的卷积操作,我们可以分步骤拆解,用生活化的例子类比:

第一步:先明确 “三通道 RGB 图像” 是什么?

一张彩色照片(比如手机拍的风景照)就是典型的三通道 RGB 图像。它的本质是三个 “灰度图叠在一起”

  • 第一个通道(R 通道):记录了每个像素 “红色的亮度”(数值越高,这个位置红色越浓);
  • 第二个通道(G 通道):记录了每个像素 “绿色的亮度”;
  • 第三个通道(B 通道):记录了每个像素 “蓝色的亮度”。

比如一朵红花,在 R 通道里它的位置是亮的(数值高),G 和 B 通道里可能较暗(数值低);绿叶则在 G 通道里更亮。

第二步:什么是 “卷积操作”?

卷积的核心是 **“用一个小窗口扫过图像,做局部计算”**,目的是提取图像的特征(比如边缘、纹理、颜色变化等)。

这个 “小窗口” 叫卷积核(也叫过滤器),它是一个小型矩阵(比如 3x3 的格子)。操作过程类似:

  • 拿着这个小窗口在图像上 “滑动”(从左到右、从上到下);
  • 每滑到一个位置,就把窗口里的每个数值和图像对应位置的像素值相乘,再把所有乘积加起来,得到一个新数值;
  • 这个新数值就是 “输出图像” 上对应位置的像素值。

第三步:三通道图像的卷积有什么不同?

因为输入是三通道(R、G、B),所以卷积核也得 “配套”—— 它也有 3 个通道(对应 R、G、B),形状可以理解为 “3 层小窗口叠在一起”(比如 3x3x3:每层是 3x3 的矩阵,共 3 层)。

具体计算过程像 “三层楼的分别计算再汇总”:

  1. 分通道计算:卷积核的 R 通道小窗口,只和输入图像的 R 通道对应区域计算(相乘求和),得到一个中间结果 A;
    卷积核的 G 通道小窗口,只和输入图像的 G 通道对应区域计算,得到中间结果 B;
    卷积核的 B 通道小窗口,只和输入图像的 B 通道对应区域计算,得到中间结果 C;
  2. 汇总结果:把 A、B、C 三个结果加起来,得到的总和就是 “输出特征图” 上这个位置的像素值。

举个直观的例子:

假设我们用一个 “检测红色边缘” 的卷积核:

  • 它的 R 通道窗口是 “左亮右暗”(能捕捉红色的明暗变化);
  • G 和 B 通道窗口全是 0(不关心绿、蓝的变化)。

当这个卷积核滑过一朵红花时:

  • R 通道计算会捕捉到花瓣边缘的红色明暗差异(得到 A);
  • G 和 B 通道计算结果都是 0(B=0,C=0);
  • 输出结果就是 A,也就是 “红花边缘” 的特征。

核心作用:

三通道卷积能同时 “看” 到红、绿、蓝三个颜色通道的局部信息,从而提取更丰富的特征(比如 “红绿色交界处的边缘”“蓝黄混合的纹理” 等)。这也是为什么卷积神经网络(CNN)能处理彩色图像并识别物体 —— 它靠这种操作一步步从颜色、边缘到复杂形状,层层提取特征。

总结:三通道 RGB 图像的卷积,就是用一个 3 通道的 “小窗口”,分别扫过图像的 R、G、B 三个通道,把每个通道的局部计算结果相加,最终得到包含多颜色特征的输出。

卷积核与步长的选择:

选择合适的卷积核大小和步幅,核心是在特征提取能力计算效率输出特征图尺寸之间找到平衡。不同任务(如图像分类、目标检测、语义分割)和网络层(浅层 / 深层)的需求不同,选择逻辑也有差异。下面用通俗的方式拆解具体思路:

一、卷积核大小的选择:感受野与计算成本的权衡

卷积核的大小(如 3x3、5x5)决定了它一次能 “看到” 的图像区域大小(即感受野),同时直接影响计算量(核越大,参数和计算量越多)。常见选择和适用场景如下:

1. 1x1 卷积核:“轻量工具人”
  • 作用:不改变感受野(只看单个像素),主要用于跨通道特征融合降维 / 升维
    例如:输入是 64 通道的特征图,用 1x1 卷积核(64→32)可以将通道数压缩到 32,减少后续计算量;或用 1x1 卷积核(64→128)增加通道数,增强特征表达。
  • 适用场景
    • 网络中间层压缩通道(如 ResNet、MobileNet 中常用);
    • 配合大卷积核使用(如 Inception 模块中,先用 1x1 降维再用 3x3,减少计算)。
2. 3x3 卷积核:“性价比之王”
  • 感受野:能覆盖 3x3 的局部区域,适合捕捉边缘、纹理等基础特征。
  • 优势:计算量小(3x3 的参数是 9,5x5 是 25,前者仅为后者的 1/3 左右),且多个 3x3 卷积叠加可等效更大的感受野(如 2 个 3x3 叠加≈1 个 5x5 的感受野,3 个叠加≈7x7),但计算量更低(2×9=18 < 25;3×9=27 < 49)。
  • 适用场景
    • 网络的绝大多数层(尤其是深层),是 CNN 中最常用的核大小(如 VGG、ResNet 几乎全用 3x3);
    • 需平衡特征提取能力和计算效率时。
3. 5x5 或 7x7 卷积核:“大视野工具”
  • 感受野:覆盖更大区域,适合捕捉较大的局部结构(如小目标的整体轮廓、纹理块)。
  • 代价:参数和计算量显著增加(5x5 是 3x3 的 2.7 倍,7x7 是 5.4 倍)。
  • 适用场景
    • 网络的浅层(输入图像尺寸较大时),例如检测图像中较大的基础结构(如早期的 AlexNet 用 11x11、7x7,后来因计算成本被 3x3 替代);
    • 特殊任务需要直接捕捉大尺度特征(如小目标检测中,避免多次叠加 3x3 导致的特征稀释)。
总结:卷积核大小的经验法则
  • 优先用 3x3(性价比最高),避免盲目用大核;
  • 需大感受野时,用 “多个 3x3 叠加” 替代 “单个大核”(如 3 个 3x3≈7x7 感受野,计算量更少);
  • 1x1 仅用于通道调整,不单独用于特征提取;
  • 输入图像尺寸大(如 224x224 以上),浅层可尝试 5x5;尺寸小(如 64x64 以下),用 3x3 足够。

二、步幅(Stride)的选择:控制输出尺寸与 “压缩” 程度

步幅是卷积核每次滑动的像素数(默认 1),直接影响输出特征图的尺寸和 “压缩” 效果:

  • 步幅 = 1:滑动时不跳过像素,输出尺寸较大(配合 padding 可保持与输入同尺寸);
  • 步幅 > 1(如 2):每次滑动跳过像素,输出尺寸缩小(相当于 “下采样”),计算量减少。
选择逻辑:根据 “是否需要压缩特征图” 决定
  1. 步幅 = 1

    • 适用场景:希望保留更多细节(如网络浅层提取边缘、纹理时),或需要保持特征图尺寸(如语义分割,需输出与输入同尺寸的掩码)。
    • 注意:此时通常配合padding(填充)使用,避免输出尺寸过小(如 3x3 核 + 步幅 1+padding=1,可保持输入输出尺寸一致)。
  2. 步幅 = 2(或更大)

    • 作用:主动缩小特征图尺寸(输出尺寸≈输入尺寸 / 步幅),减少后续计算量,同时扩大感受野(步幅越大,每次 “看” 的范围间接越大)。
    • 适用场景:
      • 网络深层(特征图已包含足够信息,无需保留大尺寸);
      • 需快速压缩尺寸(如输入图像过大时,用步幅 2 替代池化层,减少信息丢失);
      • 目标检测中,部分 backbone 用步幅 2 实现多尺度特征输出(如 FPN 的不同层级)。
    • 注意:步幅不宜过大(如 > 2),否则会丢失过多局部信息(比如步幅 = 3,可能跳过相邻像素的重要关联)。

三、综合权衡:卷积核与步幅的搭配原则

  1. 浅层网络(提取细节)

    • 核大小:3x3(优先)或 5x5(输入尺寸大时);
    • 步幅:1(配合 padding 保持尺寸,保留细节)。
  2. 深层网络(提取抽象特征)

    • 核大小:3x3(叠加使用,扩大感受野);
    • 步幅:1(继续保留特征)或 2(适当压缩,减少计算)。
  3. 需要降维 / 压缩时

    • 优先用 “步幅 = 2 + 3x3 核”,而非 “大步幅 + 大核”(避免信息丢失);
    • 或用 “步幅 = 1 + 3x3 核 + 池化层”(池化单独负责压缩,更灵活)。
  4. 计算资源有限时

    • 核大小选 3x3(而非 5x5),步幅可适当增大(如 2),减少参数和计算量。

举个例子:ResNet 的经典搭配

ResNet 中几乎全用 3x3 卷积核,步幅选择遵循:

  • 浅层(如 conv1):7x7 核 + 步幅 2(快速压缩大尺寸输入,如 224x224→112x112);
  • 中间层:3x3 核 + 步幅 1(配合 padding 保持尺寸,堆叠提取特征);
  • 下采样层(如每个残差块的第一个卷积):3x3 核 + 步幅 2(将尺寸压缩一半,如 56x56→28x28)。

这种搭配既保证了特征提取能力,又控制了计算量,是工业界的成熟方案。

总之,选择的核心是:小核(3x3)为主,步幅 1 保细节,步幅 2 做压缩,根据任务需求(是否需保留尺寸、计算资源多少)灵活调整

http://www.dtcms.com/a/337613.html

相关文章:

  • 远程访问公司内网电脑怎么操作?3个简单通用的跨网异地连接管理计算机方法
  • IoT/透过oc_lwm2m和at源码,分析NB-IoT通信模组和主板MCU之间的通信过程
  • 自建K8s集群无缝集成阿里云RAM完整指南
  • 重温 K8s 基础概念知识系列五(存储、配置、安全和策略)
  • Kubernetes(K8s)常用命令全解析:从基础到进阶
  • kubeadm方式部署k8s集群
  • 备考国央企-算法笔记-01链表
  • HakcMyVM-Friendly
  • MongoDB Windows 系统实战手册:从配置到数据处理入门
  • Esp32基础(③旋转编码器)
  • 用一个label控件随便显示一些字(用矢量字库),然后用anim动画动态设置lable位置
  • 上海1KM人口热力数据分享
  • 音频分类模型笔记
  • rust 从入门到精通之变量和常量
  • 杂记 04
  • 脑潜在进展:基于潜扩散模型的三维脑磁共振成像个体时空疾病进展研究|文献速递-深度学习人工智能医疗图像
  • python的课外学习生活活动系统
  • 视觉语言导航(13)——AIR-VLN 4.3
  • Mysql核心框架知识
  • 学习雪花算法
  • 冒泡排序——简单理解和使用
  • NVIDIA 技术沙龙探秘:聚焦 Physical AI 专场前沿技术
  • Handler以及AsyncTask知识点详解
  • 数据结构部分算法记录
  • Oracle维护指南
  • 计算机大数据毕业设计推荐:基于Hadoop+Spark的食物口味差异分析可视化系统【源码+文档+调试】
  • RPM数据库损坏修复:DB_RUNRECOVERY: Fatal error, run database recovery
  • 新能源知识库(78)微网控制器与储能LCU对比
  • 【opencv-Python学习日记(7):图像平滑处理】
  • 普通用户使用docker命令