首页 > 其他分享 >【卷积神经网络】LeNet与AlexNet原理

【卷积神经网络】LeNet与AlexNet原理

时间:2024-12-14 20:29:05浏览次数:5  
标签:输出 卷积 LeNet 池化 随机 图像 AlexNet 神经元

LeNet - 5

LeNet-5是由Yann LeCun在上世纪90年代提出的一种经典卷积神经网络结构,最初主要用于手写数字识别(MNIST数据集)。该网络是深度学习领域早期的里程碑模型之一

主要结构

  • 特征提取层(卷积+池化层)
    • 卷积层和池化层交替使用,是为了在不同层次上提取越来越抽象的特征。卷积层提取的是低级特征(例如边缘、颜色、纹理),而池化层通过减少数据维度,降低计算量和内存消耗,使得网络能够处理更多的抽象特征,进而使得模型能够识别更复杂的物体或模式
    • 理解:回顾复习之前文章的概念,该处就类似于识别一个猫的时候,先,你会关注猫的轮廓(边缘),这是卷积层的作用。接着,你开始注意到猫的耳朵、眼睛和尾巴这些重要特征(更抽象的特征)。而在这一过程中,你并不需要关心猫的每根毛发是怎样的,或者背景中的细节。这时,池化层就像是帮助你简化信息,让你把注意力集中在更关键的特征上,而忽略不重要的细节
  • 分类部分(全连接层)
    • 经过特征提取得到的特征图摊平(flatten)成向量,然后通过若干个全连接层和非线性激活函数进行处理,最终输出用于分类的概率分布(通常通过softmax)
    • 文物评审团根据各种评价最终汇总出一个综合报告

具体实现细节分析

输入层

  • 输入一般为32×32的单通道(灰度)图像。在经典的MNIST数据中,原始尺寸为28×28,论文中有时在周围填充边界使之变为32×32,便于网络的卷积操作对齐

第一层卷积(C1)

  • 卷积核大小:5×5
  • 卷积核数量:6个滤波器(filter)
  • 输入通道为1(灰度图),输出通道为6
  • 输出特征图大小为:28×28(因为32×32输入经过5×5卷积不使用padding的话结果大小为32-5+1=28)
    经过C1层后数据形状为:(批次大小B, 通道数6, 高28, 宽28)

第一层池化(S2)

  • 池化方式:2×2平均池化(sub-sampling),步幅为2
  • 输出特征图大小:14×14 (因为28×28经过2×2池化下采样变为14×14)
  • 通道数不变,仍为6
    经过S2层后数据形状为:(B, 6, 14, 14)

第2卷积层 (C3)

  • 卷积核大小:5×5
  • 卷积核数量:16个滤波器
  • 输入通道数为6
  • 输出特征图大小为:14-5+1=10,因此输出为10×10
    经过C3层后数据形状为:(B, 16, 10, 10)

第2池化层(S4,平均池化层)

  • 仍为2×2平均池化,下采样后大小由10×10变为5×5
  • 通道数仍为16
    经过S4层后数据形状为:(B, 16, 5, 5)

第3卷积层 (C5)

  • 卷积核大小:5×5
  • 滤波器数量:120个(经典设计中)
  • 由于输入特征图为16个通道,每个为5×5,使用5×5卷积核得到1×1的输出特征图,所以输出为120个1×1的特征图,即相当于输出维度为120
  • 经过C5层后数据形状为:(B, 120)

全连接层(F6)

  • 将前一层输出120维向量连接至84个隐藏单元的全连接层(F6层)
  • 输出为84维特征向量

输出层

  • 最终全连接输出层为10维(针对10分类,如数字0-9识别),通过softmax得到每个类别的概率

lenet5的激活函数与池化类型

在原始的LeNet-5中使用的激活函数是Sigmoid或tanh(论文时代较早,还没有ReLU的提出)。现代版本多用ReLU代替

池化使用的是平均池化(average pooling),现代CNN中更多使用max pooling,但LeNet-5是历史早期设计,以平均池化为主

AlexNet

网络结构

总结

  • AlexNet使用 5个卷积层 提取多层次特征,逐层增加卷积核数量,捕捉图像的深层特征
  • 卷积层后紧跟 最大池化层,降低特征图的分辨率,同时保留关键信息
  • 最后的 3个全连接层 负责整合特征并输出分类结果
  • 使用创新技术(如ReLU、Dropout、GPU并行)显著提升了模型的性能和训练效率

创新点总结(相较于之前模型)

采用ReLU(Rectified Linear Unit)代替传统的Sigmoid激活函数,加速了网络的训练过程,同时有效缓解了梯度消失问题

GPU并行训练,使用两块GPU并行处理,将网络分为两部分分别在两块GPU上运行;解决了当时单卡GPU内存不足的问题,同时加速了训练过程

Dropout正则化,在全连接层引入Dropout,随机屏蔽部分神经元,减少过拟合

数据增强,通过随机裁剪、水平翻转、颜色抖动等方法进行数据增强,提升模型的泛化能力

实现分析

输入层 (Input Layer)

  • 输入图像的大小为 227×227×3(宽 × 高 × 通道数)。
  • 这是彩色图像,包含RGB三个通道。

卷积层1 (Conv1)

  • 卷积核数量:96
  • 卷积核大小:11×11
  • 步幅(Stride):4
  • 输出尺寸:55×55×96
    • 卷积操作通过滑动窗口提取图像局部特征。
    • 输出的深度是96,表示使用了96个卷积核提取特征
  • Max Pooling(最大池化)
    • 池化的窗口是3 * 3 ; 步幅为 2 ,经过池化图像缩小为27×27×96

卷积层2 (Conv2)

  • 卷积核数量:256
  • 卷积核大小:5×5
  • 步幅(Stride):1
  • 输出尺寸:27×27×256(卷积核)
  • Max Pooling(最大池化)
    • 池化的窗口是3 * 3 ; 步幅为 2 ,经过池化图像缩小为13×13×256

卷积层3 (Conv3)

  • 卷积核数量:384
  • 卷积核大小:3×3
  • 步幅(Stride):1
  • 输出尺寸:13×13×384(卷积核)

卷积层4 (Conv4)

  • 卷积核数量:384
  • 卷积核大小:3×3
  • 步幅(Stride):1
  • 输出尺寸:13×13×384(卷积核)

卷积层35(Conv5)

  • 卷积核数量:256
  • 卷积核大小:3×3
  • 步幅(Stride):1
  • 输出尺寸:13×13×256(卷积核)
  • Max Pooling(最大池化)
    • 池化的窗口是3 * 3 ; 步幅为 2 ,经过池化图像缩小为6×6×256

全连接层1 (fc6)

  • 输入尺寸:从卷积层的输出(6×6×256)摊平成一维向量,大小为 9216(6×6×256)
  • 输出神经元数量:4096
  • 激活函数:ReLU
  • Dropout用于减少过拟合

全连接层2 (fc7)

  • 输入神经元数量:4096
  • 输出神经元数量:4096
  • 激活函数:ReLU
  • Dropout用于正则化

全连接层3 (fc8)

  • 输入神经元数量:4096
  • 输出神经元数量:类别数量(N),例如ImageNet有1000个类别。
  • 激活函数:Softmax

Dropout正则化

概述

概念

Dropout 是一种用于神经网络的 正则化技术,其核心思想是在训练过程中随机“屏蔽”(即临时移除)一部分神经元,让网络不完全依赖某些特定神经元的输出

该方式的主要目的是减少模型的过拟合,提高网络的泛化能力

传统标准的神经网络中,所有神经元都会参与前向传播和反向传播,模型会充分利用所有神经元的输出;而Dropout中在每次训练的前向传播中,会根据设置的参数屏蔽一部分神经元,仅使用剩余的神经元参与运算。屏蔽的神经元在下一次训练中可能会被重新启用

理解

类似于在团队训练一个团队的人,团队总共有10个人,教练每次随机挑选5个人训练(这个过程就类似于Dropout的过程)

由于每次训练的球员不同,每个人都必须具备独立解决问题的能力,不能依赖某个固定队友(减少依赖性)

所以在最后比赛的时候(对应测试阶段),全部队员都上场的时候,因为每名队员都进行过训练,所以会总体表现更好

实现过程

随机屏蔽神经元

  • 每次训练时,随机选择部分隐藏层神经元,将其屏蔽(即不参与当前的计算)
  • 例如,如果设置 Dropout 概率为 0.5,表示每次训练时约有 50% 的隐藏神经元被屏蔽

前向传播

  • 将输入数据传入网络时,仅使用未被屏蔽的神经元进行计算
  • 被屏蔽的神经元被临时“移除”,不传递信息

反向传播

  • 误差反向传播时,仅更新未被屏蔽的神经元对应的权重(wb
  • 被屏蔽的神经元的权重不参与更新

重复过程

  • 每次训练时,都会随机屏蔽不同的神经元
  • 在最终测试阶段,Dropout 不再屏蔽神经元,而是对权重进行缩放(通常乘以 Dropout 概率),以保持一致性

作用

减少过拟合

简单理解:过拟合类似于复习知识点的时候总是死记硬背书本的知识点,当课本上的数据更改的时候,就会表现的很差

过拟合是指模型在训练集上表现非常好,但在测试集或新数据上表现很差的问题

  • 模型过于依赖训练数据,学习到了数据中的噪声或无关模式,而不是抓住数据的 泛化特征
  • 这种现象导致模型对训练数据“记得太多”,但对新数据无法正确预测

减少神经元之间的相互依赖

理解:类似于上述中教练的行为,每次都随机组一个5人的团队,这样就会避免队员之间的依赖,从而提高其工作效率

深度学习中,每个神经元可能会“依赖”某些固定的神经元输入来提取特征,如果某些神经元总是同时激活并依赖特定的组合模式,整个网络的泛化能力可能受到限制(类似于“死记硬背”的行为)

  • 随机屏蔽部分神经元,让网络在每次前向传播中只依赖不同的子网络(随机组合的活跃神经元)
  • 这样迫使每个神经元独立学习特征,而不是依赖其他神经元,从而减少神经元之间的强依赖性

Dropout减少过拟合的方法

  • 破坏特定的模式
    • 通过屏蔽神经元后,网络在每次训练后都会看到不同的子网络,这样就可以成功阻止网络记忆特定的模式和细节
    • 类似于通过每次都训练不同的数学题目,这样就不会死记硬背
  • 模拟模型的集成效果
    • Dropout 让每次训练的网络结构都稍有不同,这相当于训练了许多不同的子模型
    • 测试时启用所有神经元,就像结合了多个模型的优点,提升泛化能力

图像增强

概述

使用原因

减少过拟合:通过图像增强相关操作可以产生更多的样本,可以使得模型不仅仅记住训练数据中的特定模式,而是学习到更普适的特征

给定一张图像,通过平移、旋转、颜色变换等操作,可以生成多个不同版本的图像,让模型见到更多的图像变化

图像增强可以模拟不同的现实世界场景,例如低光照、模糊、噪声等情况,让模型学会在这些不理想的情况下做出准确的预测

常用方法

  • 旋转(Rotation):随机旋转图像一定的角度(例如:-30°到+30°),使得网络可以更好地处理不同方向的物体

  • 翻转(Flipping):随机水平翻转(或垂直翻转)图像。通常水平翻转更常见,特别适用于大多数物体

  • 缩放(Scaling):随机缩放图像的尺寸,并通过裁剪或填充调整大小,以适应网络输入大小。这有助于网络适应不同物体的大小

  • 裁剪(Cropping):随机裁剪图像的不同部分。常见的做法是中心裁剪、随机裁剪、以及改变裁剪的比例

  • 平移(Translation):对图像进行随机的水平或垂直平移。通常结合裁剪一起使用,帮助网络更好地识别位移物体

  • 颜色变换(Color Jittering):随机改变图像的亮度、对比度、饱和度、色调等,以增强模型对不同光照条件的适应能力。

  • 噪声(Noise Injection):给图像添加随机噪声(如高斯噪声),可以让网络对不清晰或噪声较多的图像具有鲁棒性

  • 仿射变换(Affine Transformation):包括旋转、缩放、平移、倾斜等多种几何变换

  • 灰度化(Grayscale):将图像随机转换为灰度图像,可以帮助模型适应不同的输入模式

图像增强PCA

简单了解

如果原始图像是一个鸟,那么PCB图像增强就像是为了这张照片模拟了不同光线、颜色环境下的拍摄效果;虽然通过这种增强后图片看着都不同,但是本质并没有改变,进一步说也就是其物体形状边缘并没有改变。通过这种方式,深度学习模型可以学会在多种颜色环境下识别物体,然后提高泛化能力

实现步骤理解

图像标准化:将图像标准化,即把每个颜色通道的值处理为均值为0、方为1

  • RGB三个颜色通道的值范围不同(比如红色、绿色、蓝色的强度值可能分布不同)。通过标准化,将它们转化为统一的范围,方便后续处理
  • 可以想象成描述一个人的时候会有多重数据,例如身高体重等,通过标准化将其每种单位转化为统一标准,这样可以消除单位和数量级的差异

展开矩阵:将图像的像素点从高宽(H × W)结构展开成一个二维矩阵,方便数学操作

  • 图像展开后,每个像素点就对应一行,RGB三个通道对应列。这样操作的目的是将图像数据以数学上更容易操作的形式表示出来
  • 假设我们在一张纸上绘制了一幅画,画上有高楼、树木和天空。现在我们希望描述每个像素点的颜色,就需要将整张画“展开”,以像素点为单位列出每个点的颜色(红、绿、蓝值),形成一个表格,具体实现中类似于在原本每个颜色的地方标注其颜色数值

计算协差矩阵:计算协方差矩阵,用来描述RGB三个通道之间的关系

  • 如果一张图片的颜色偏红,那通常绿色和蓝色也会发生某种规律性的变化。协方差矩阵将这种规律量化
  • 例如统计很多人身高体重时候发现以下规律 ,对应图像也就是对其规律进行量化
    • 身高和体重通常是正相关的(高个子通常体重大)
    • 身高和视力的相关性较弱(高个子未必视力更好)

特征分解:对协方差矩阵进行特征分解,找出主要的颜色变化方向

  • 图像: RGB颜色变化可以看作是三个方向。特征分解找出了颜色变化的主要方向,比如某种色调的变化(红色-绿色的比例变化、亮度变化等)
  • 还是分析学生身高体重等数据,通过分析可以发现
    • 第一主成分可能是“体型”,即身高和体重变化的共同趋势
    • 第二主成分可能是“健康状态”,即体重和视力之间的关系

添加随机扰动:给主要颜色方向添加随机抖动,生成新的颜色变化

  • 例如拍了很多张同一场景的照片,比如蓝天下的一棵树。如果每张照片的颜色都完全一样,模型学到的颜色特性会很单一。但现实中,相机可能因为光照变化、天气原因或相机参数调整,使得每张照片的亮度或色调稍有不同(比如有的更暖一些、有的更冷一些)
  • PCA增强模拟了这种现实情况,在原始图像的主要颜色方向上添加了一些随机变化,让模型学会应对这些变化

合成增强图像:将生成的随机扰动加回原图像的RGB通道,得到增强后的图像

  • 类似于P图中,对照片加上了不同的滤镜

标签:输出,卷积,LeNet,池化,随机,图像,AlexNet,神经元
From: https://blog.csdn.net/gma999/article/details/144424564

相关文章

  • 深度学习在机械健康监测中的应用:利用卷积神经网络(CNN)进行轴承故障预测
    1.引言1.1研究背景随着工业4.0的推进,智能制造成为全球制造业发展的重要趋势。在这一背景下,机械设备的高效、稳定运行显得尤为重要。轴承作为机械设备中的关键零部件,其健康状况直接影响到整个系统的可靠性和安全性。因此,对轴承进行实时的健康监测和故障预测,以实现预防性......
  • 【深度学习|语义分割之UNet】继承自 PyTorch 的 nn.Module的UNet——基于编码器-解码
    【深度学习|语义分割之UNet】继承自PyTorch的nn.Module的UNet——基于编码器-解码器结构的语义分割任务的卷积神经网络。附代码及解读。【深度学习|语义分割之UNet】继承自PyTorch的nn.Module的UNet——基于编码器-解码器结构的语义分割任务的卷积神经网络。附代码及......
  • 转载:【AI系统】卷积操作原理
    卷积是神经网络里面的核心计算之一,它是一种特殊的线性运算。而卷积神经网络(CNN)是针对图像领域任务提出的神经网络,其受猫的视觉系统启发,堆叠使用卷积层和池化层提取特征。它在CV领域方面的突破性进展引领了深度学习的热潮。回到卷积本身,其变种丰富、计算复杂,神经网络运行时大部......
  • 转载:【AI系统】ShuffleNet 系列
    本文会介绍ShuffleNet系列,重点在于其模型结构的轻量化设计,涉及如何降低深度网络计算量,在本文中会着重会讲解逐点分组卷积(PointwiseGroupConvolution)和通道混洗(ChannelShuffle)两种新的运算,而V2版本则会从设备运算速度方面考虑将网络进行轻量化。ShuffleNetV1模型Shu......
  • 转载:【AI系统】ShuffleNet 系列
    本文会介绍ShuffleNet系列,重点在于其模型结构的轻量化设计,涉及如何降低深度网络计算量,在本文中会着重会讲解逐点分组卷积(PointwiseGroupConvolution)和通道混洗(ChannelShuffle)两种新的运算,而V2版本则会从设备运算速度方面考虑将网络进行轻量化。ShuffleNetV1模型Shu......
  • 转载:【AI系统】卷积操作原理
    卷积是神经网络里面的核心计算之一,它是一种特殊的线性运算。而卷积神经网络(CNN)是针对图像领域任务提出的神经网络,其受猫的视觉系统启发,堆叠使用卷积层和池化层提取特征。它在CV领域方面的突破性进展引领了深度学习的热潮。回到卷积本身,其变种丰富、计算复杂,神经网络运行时大部......
  • 转载:【AI系统】ShuffleNet 系列
    本文会介绍ShuffleNet系列,重点在于其模型结构的轻量化设计,涉及如何降低深度网络计算量,在本文中会着重会讲解逐点分组卷积(PointwiseGroupConvolution)和通道混洗(ChannelShuffle)两种新的运算,而V2版本则会从设备运算速度方面考虑将网络进行轻量化。ShuffleNetV1模型Shu......
  • 机器学习_图卷积神经网络
    现在最常用的是GCN,所以首先讲解。后面再根据模型的发展历程讲解。图卷积神经网络GCN原文:GNN|从序列神经网络到GCN、GraphSage、GAT图模型总结我们发现,无论是序列结构,还是图结构,其在增强token表示的过程,实际上是融合上下文信息的过程。以CNN为例,其通过滑窗的方式,学习到的是制......
  • LeNet5模型的训练和推理
    LeNet52024年5月1日更新在此教程中,我们将对LeNet5模型及其原理进行一个简单的介绍,并实现不依赖库(使用了torch库来加载数据集)的LeNet模型的训练和推理,目前支持MNIST、FashionMNIST和CIFAR-10等数据集,给用户提供一个详细的帮助文档。目录基本介绍LeNet5描述网络结构LeNet......
  • 转载:【AI系统】卷积操作原理
    卷积是神经网络里面的核心计算之一,它是一种特殊的线性运算。而卷积神经网络(CNN)是针对图像领域任务提出的神经网络,其受猫的视觉系统启发,堆叠使用卷积层和池化层提取特征。它在CV领域方面的突破性进展引领了深度学习的热潮。回到卷积本身,其变种丰富、计算复杂,神经网络运行时大部......