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

深度学习04 卷积神经网络CNN

卷积神经网络与人工神经网络关系与区别

概念

卷积神经网络(Convolutional Neural Network, CNN)是人工神经网络(Artificial Neural Network, ANN)的一种特殊形式,两者在核心思想和基础结构上存在关联,但在设计目标、网络结构和应用场景上有显著差异。

结构

卷积神经网络对比人工神经网络引入卷积层池化层等专用层,卷积层通过局部连接和权值共享提取局部特征,池化层降低数据维度

应用领域​

ANN​​:广泛用于分类、回归、预测等任务,如金融风险评估、文本分类

CNN​​:专精于计算机视觉(图像分类、目标检测)、语音识别和自然语言处理(如文本分类)等领域

图像的概念

图像的相关概念:
  • ​Height (H)​​:图像高度,单位像素
  • ​Width (W)​​:图像宽度,单位像素
  • ​Channels (C)​​:颜色通道数,单位“个”
    • ​RGB图像​​:3通道(红、绿、蓝),每个通道值范围0(黑)~255(白)
    • ​灰度图像​​:1通道(0~255)
    • ​二值图像​​:1通道(0或1)

Numpy表示:形状:(Height, Width, Channels)

PyTorch表示:形状:(Channels, Height, Width)

图像的加载

了解了图像的概念后,图像的加载就是由一个三维矩阵或者三个三维矩阵来进行表示:

矩阵的值就是像素的位置以及像素的色彩

图像加载的3个api:

imread(): 读取图片像素等信息
imshow()  根据像素等信息画图
imsave()  保存图片

CNN卷积神经网络介绍

卷积神经网络可以简单理解为包含卷积层和池化层的神经网络模型,主要用于图形方面

组成及作用

输入层,卷积层,激励层,池化层,全连接层


卷积层:提取图像特征图

        滤波器/卷积核(filter):带有共享参数的神经元,有多少滤波器就是有多少个神经元

        卷积基本计算
            根据卷积核大小对特征图进行点乘运算
            点乘运算结果=新特征图1个特征值

        

        Padding(填充)

        通过上面的卷积计算过程,最终的特征图比原始图像小很多,如果想要保持经过卷积后的图像大小不变, 可以在原图周围添加 Padding 来实现。

Padding(填充)操作是一种用于在输入特征图的边界周围添加额外像素(通常是零)。

        Stride(步长)

        Stride(步长)指的是卷积核在图像上滑动时的步伐大小,即每次卷积时卷积核在图像中向右(或向下)移动的像素数。步长直接影响卷积操作后输出特征图的尺寸,以及计算量和模型的特征提取能力。
        

        多通道卷积计算

        实际中的图像都是多个通道组成,多通道卷积计算方法如下:

  • 当输入有多个通道(Channel), 例如 RGB 三个通道, 此时要求卷积核需要拥有相同的通道数(图像有多少通道,每个卷积核就有多少通道).
  • 每个卷积核通道与对应的输入图像的各个通道进行卷积.
  • 将每个通道的卷积结果按位相加得到最终的特征图.

具体操作如下图:padding补0,步长为1,通道为3

        
         特征图大小

输出特征图的大小与以下参数息息相关:

  • size: 卷积核/过滤器大小,一般会选择为奇数,比如有 1*1, 3*35*5

  • Padding: 零填充的方式

  • Stride: 步长

那计算方法如下图所示:

  • 输入图像大小: W x W

  • 卷积核大小: F x F

  • Stride: S

  • Padding: P

  • 输出图像大小: N x N

卷积层API介绍

conv = nn.Conv2d(in_channels, out_channels, kernel_size, stride, padding)

"""
参数说明:
in_channels: 输入通道数,RGB图片一般是3
out_channels: 输出通道,也可以理解为卷积核kernel的数量
kernel_size:卷积核的高和宽设置,一般为3,5,7...
stride:卷积核移动的步长
    整数stride:表示在所有维度上使用相同的步长 stride=2 表示在水平和垂直方向上每次移动2个像素
    元组stride: 允许在不同维度上设置不同的步长 stride=(2, 1) 表示在水平方向上步长为2,在垂直方向上步长为1
padding:在四周加入padding的数量,默认补0
    padding=0:不进行填充。
    padding=1:在每个维度上填充 1 个像素(常用于保持输出尺寸与输入相同 padding=输入形状大小-输出形状大小)。
    padding='same'(从 PyTorch 1.9+ 开始支持):让输出特征图的尺寸与输入保持一致。PyTorch会自动计算需要的填充量。stride必须等于1,不支持跨行,因为计算padding时可能出现小数
    padding=kernel_size-1:Full Padding 完全填充
"""

池化层:降维(只在H,W上降维,与神经元无关)

池化层Pooling主要目的是降低维度,从而减少计算了,减少内存消耗,并提高模型的鲁棒性

鲁棒性(Robustness),又称健壮性或稳健性,是系统在面临内部结构变化、外部环境扰动或不确定性因素时,仍能维持其核心功能稳定运行的能力

池化层的计算

有点类似卷积层计算,但没有神经元参与

最大池化(Max Pooling) :通过池化窗口进行最大池化,取窗口中的最大值作为输出

 平均池化(Avg Pooling) :取窗口内的所有值的均值作为输出

Padding(填充)

Stride(步长

 

多通道池化计算

在处理多通道输入数据时,池化层对每个输入通道分别池化,而不是像卷积层那样将各个通道的输入相加。这意味着池化层的输出和输入的通道数是相等

池化只在宽高维度上池化在通道上是不发生池化(池化前后,多少个通道还是多少个通道)

 

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

相关文章:

  • 【Python】 Function
  • 计算整数二进制中1的个数
  • 障碍感知 | 基于3D激光雷达的三维膨胀栅格地图构建(附ROS C++仿真)
  • day47 注意力热图可视化
  • 展示折线图的后端数据连接
  • leetcode427.建立四叉树
  • 利润才是机器视觉企业的的“稳定器”,机器视觉企业的利润 = (规模经济 + 技术差异化 × 场景价值) - 竞争强度
  • ViT与CLIP:图像×文本 多模态读心术揭秘
  • 大数据系统架构实践(三):Hbase集群部署
  • 嘉讯科技:医疗信息化、数字化、智能化三者之间的关系和区别
  • EPLAN 中定制 自己的- A3 图框的详细指南(一)
  • 【机器学习深度学习】适合微调的模型选型指南
  • DAOS集群部署-Docker模式
  • CloudBase AI Toolkit 让我用“嘴”开发出的第一款网页游戏
  • 网络安全运维与攻防演练综合实训室解决方案
  • 服务器被入侵的常见迹象有哪些?
  • CentOS服务器SSH远程连接全指南
  • HarmonyOS NEXT应用元服务常见列表操作多类型列表项场景
  • 2025年数字信号、计算机通信与软件工程国际会议(DSCCSE 2025)
  • Excel 如何让表看起来更清晰、专业,而不是花里胡哨?
  • 低功耗MM32L0180系列MCU
  • 【Kafka】docker 中配置带 Kerberos 认证的 Kafka 环境(全过程)
  • [springboot系列] 探秘 JUnit 5:现代 Java 单元测试利器
  • Spring Boot 实现不同用户不同访问权限
  • 基于uniapp的老年皮肤健康管理微信小程序平台(源码+论文+部署+安装+售后)
  • 跨时间潜运动迁移以实现操作中的多帧预测
  • Instrct-GPT 强化学习奖励模型 Reward modeling 的训练过程原理实例化详解
  • nifi1.28.1集群部署详细记录
  • 大语言模型LLM在训练/推理时的padding
  • 用户行为序列建模(篇十一)-小结篇(篇一)