当前位置: 首页 > 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.lryc.cn/news/625013.html

相关文章:

  • Linux unistd.h 包含功能
  • Spring 三级缓存:破解循环依赖的底层密码
  • 使用Idea安装JDK
  • [Code Analysis] docs | Web应用前端
  • 计算机视觉(9)-实践中遇到的问题(六路相机模型采集训练部署全流程)
  • OpenTelemetry、Jaeger 与 Zipkin:分布式链路追踪方案对比与实践
  • 大模型的底层运算线性代数
  • 关系型数据库与非关系型数据库
  • 母猪姿态转换行为识别:计算机视觉与行为识别模型调优指南
  • 我的 LeetCode 日记:Day 9 - 字符串终章与 KMP 算法
  • Baumer高防护相机如何通过YoloV8深度学习模型实现手势识别和指尖检测识别(C#代码UI界面版)
  • 第十六届蓝桥杯青少组C++省赛[2025.8.10]第二部分编程题(6、魔术扑克牌排列)
  • 算法题——字符串
  • RecSys:排序中的融分公式与视频播放建模
  • OVS:ovn为什么默认选择Geneve作为二层隧道网络协议?
  • 【EI会议征稿通知】第五届高性能计算、大数据与通信工程国际学术会议(ICHBC 2025)
  • 人工智能与生物科技的融合:重塑生命未来的无限可能​
  • android 实现表格效果
  • 力扣(LeetCode) ——100. 相同的树(C语言)
  • Rust 异步中的 Waker
  • PMP-项目管理-十大知识领域:资源管理-管理团队、设备、材料等资源
  • OpenCV Python——Numpy基本操作(Numpy 矩阵操作、Numpy 矩阵的检索与赋值、Numpy 操作ROI)
  • 3D检测笔记:基础坐标系与标注框介绍
  • JAiRouter 架构揭秘:一个面向 AI 时代的响应式网关设计
  • JUC读写锁
  • 宁波市第八届网络安全大赛初赛(REVERSE-Writeup)
  • 基于Spring Boot+Vue的社区便民服务平台 智慧社区平台 志愿者服务管理
  • day25|学习前端js
  • Product Hunt 每日热榜 | 2025-08-18
  • 【yocto】为什么要选择yocto?