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

【经典神经网络架构解析篇】【1】LeNet网络详解:模型结构解析、优点、实现代码

《------往期经典推荐------》

一、AI应用软件开发实战专栏【链接】

项目名称项目名称
1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】
3.【手势识别系统开发】4.【人脸面部活体检测系统开发】
5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】
7.【YOLOv8多目标识别与自动标注软件开发】8.【基于YOLOv8深度学习的行人跌倒检测系统】
9.【基于YOLOv8深度学习的PCB板缺陷检测系统】10.【基于YOLOv8深度学习的生活垃圾分类目标检测系统】
11.【基于YOLOv8深度学习的安全帽目标检测系统】12.【基于YOLOv8深度学习的120种犬类检测与识别系统】
13.【基于YOLOv8深度学习的路面坑洞检测系统】14.【基于YOLOv8深度学习的火焰烟雾检测系统】
15.【基于YOLOv8深度学习的钢材表面缺陷检测系统】16.【基于YOLOv8深度学习的舰船目标分类检测系统】
17.【基于YOLOv8深度学习的西红柿成熟度检测系统】18.【基于YOLOv8深度学习的血细胞检测与计数系统】
19.【基于YOLOv8深度学习的吸烟/抽烟行为检测系统】20.【基于YOLOv8深度学习的水稻害虫检测与识别系统】
21.【基于YOLOv8深度学习的高精度车辆行人检测与计数系统】22.【基于YOLOv8深度学习的路面标志线检测与识别系统】
23.【基于YOLOv8深度学习的智能小麦害虫检测识别系统】24.【基于YOLOv8深度学习的智能玉米害虫检测识别系统】
25.【基于YOLOv8深度学习的200种鸟类智能检测与识别系统】26.【基于YOLOv8深度学习的45种交通标志智能检测与识别系统】
27.【基于YOLOv8深度学习的人脸面部表情识别系统】28.【基于YOLOv8深度学习的苹果叶片病害智能诊断系统】
29.【基于YOLOv8深度学习的智能肺炎诊断系统】30.【基于YOLOv8深度学习的葡萄簇目标检测系统】
31.【基于YOLOv8深度学习的100种中草药智能识别系统】32.【基于YOLOv8深度学习的102种花卉智能识别系统】
33.【基于YOLOv8深度学习的100种蝴蝶智能识别系统】34.【基于YOLOv8深度学习的水稻叶片病害智能诊断系统】
35.【基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统】36.【基于YOLOv8深度学习的智能草莓病害检测与分割系统】
37.【基于YOLOv8深度学习的复杂场景下船舶目标检测系统】38.【基于YOLOv8深度学习的农作物幼苗与杂草检测系统】
39.【基于YOLOv8深度学习的智能道路裂缝检测与分析系统】40.【基于YOLOv8深度学习的葡萄病害智能诊断与防治系统】
41.【基于YOLOv8深度学习的遥感地理空间物体检测系统】42.【基于YOLOv8深度学习的无人机视角地面物体检测系统】
43.【基于YOLOv8深度学习的木薯病害智能诊断与防治系统】44.【基于YOLOv8深度学习的野外火焰烟雾检测系统】
45.【基于YOLOv8深度学习的脑肿瘤智能检测系统】46.【基于YOLOv8深度学习的玉米叶片病害智能诊断与防治系统】
47.【基于YOLOv8深度学习的橙子病害智能诊断与防治系统】48.【基于深度学习的车辆检测追踪与流量计数系统】
49.【基于深度学习的行人检测追踪与双向流量计数系统】50.【基于深度学习的反光衣检测与预警系统】
51.【基于深度学习的危险区域人员闯入检测与报警系统】52.【基于深度学习的高密度人脸智能检测与统计系统】
53.【基于深度学习的CT扫描图像肾结石智能检测系统】54.【基于深度学习的水果智能检测系统】
55.【基于深度学习的水果质量好坏智能检测系统】56.【基于深度学习的蔬菜目标检测与识别系统】
57.【基于深度学习的非机动车驾驶员头盔检测系统】58.【太基于深度学习的阳能电池板检测与分析系统】
59.【基于深度学习的工业螺栓螺母检测】60.【基于深度学习的金属焊缝缺陷检测系统】
61.【基于深度学习的链条缺陷检测与识别系统】62.【基于深度学习的交通信号灯检测识别】
63.【基于深度学习的草莓成熟度检测与识别系统】64.【基于深度学习的水下海生物检测识别系统】
65.【基于深度学习的道路交通事故检测识别系统】66.【基于深度学习的安检X光危险品检测与识别系统】
67.【基于深度学习的农作物类别检测与识别系统】68.【基于深度学习的危险驾驶行为检测识别系统】
69.【基于深度学习的维修工具检测识别系统】70.【基于深度学习的维修工具检测识别系统】
71.【基于深度学习的建筑墙面损伤检测系统】72.【基于深度学习的煤矿传送带异物检测系统】
73.【基于深度学习的老鼠智能检测系统】

二、机器学习实战专栏【链接】,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】
五、YOLOv8改进专栏【链接】持续更新中~~
六、YOLO性能对比专栏【链接】,持续更新中~

《------正文------》

目录

  • 深度学习架构1:Lenet
  • LeNet架构:卷积神经网络的基础
    • LeNet的关键细节
    • 网络结构概述
    • 结构特点
    • 计算卷积后图像大小的公式
    • LeNet的优势
  • 实现代码
  • 总结

深度学习架构1:Lenet

LeNet架构:卷积神经网络的基础

LeNet架构由Yann LeCun和他的团队在20世纪80年代后期创建,是图像识别任务的开创性模型。它的诞生为现代卷积神经网络(CNN)奠定了基础,它引入了卷积层、池化层和全连接层等技术,采用分层设计来捕捉图像中的空间层次。LeNet在数字识别中发挥了关键作用,并激发了深度学习的许多进步。

LeNet的关键细节

  • LeNet是为识别手写数字而开发的,特别是支票上的邮政编码数字识别。
  • 使用的数据集:它首先应用于MNIST数据集,该数据集由手写数字(0-9)组成,并被广泛用作图像分类任务的基准。

网络结构概述

LeNet-5是最著名的版本,由七层组成,包括卷积层、池化层和全连接层。以下是每一层的细分:

img

  1. 输入层:接受大小为32×32的灰度图像。
  2. C1 -卷积层:使用6个大小为5×5的过滤器,步长为1,生成大小为28×28的特征图。
  3. S2 - 平均池化层:使用2×2的内核大小和2的步幅进行平均池化,将特征映射减少到14×14。
  4. C3 -卷积层:使用16个大小为5×5的过滤器,步长为1,输出大小为10×10的特征图。
  5. S4 -子采样(池化)层:再次应用平均池化,得到大小为5×5的特征图。
  6. C5 -全连接卷积层:该层有120个神经元,每个神经元连接到上一层的所有5x 5特征图。
  7. F6 -全连接层:包含84个神经元。
  8. 输出层:使用softmax激活函数输出10个类别(数字0-9)的概率。

img

结构特点

LeNet是早期成功的深度学习模型之一,其特点如下:

  • 层次化结构:
    LeNet由多个层次组成,包括卷积层、池化层和全连接层,这种层次化的设计可以逐步提取图像的特征。
  • 卷积层(Convolutional Layers):
    使用卷积层来提取图像中的空间特征,通过卷积核与输入图像进行卷积操作,生成特征图。
  • 下采样层(Subsampling Layers):
    也称为池化层,用于降低特征图的维度,同时保留重要信息。LeNet使用平均池化(Average Pooling)。
  • 非线性激活函数:
    在卷积层和全连接层之后使用Sigmoid或双曲正切(Tanh)作为激活函数,引入非线性因素,增强网络的表达能力。
  • 全连接层(Fully Connected Layers):
    在网络的最后几层使用全连接层,将学到的特征图映射到最终的分类结果上。
  • 参数共享:
    卷积层中的卷积核在整张图像上滑动时,其参数是共享的,这大大减少了模型的参数数量,降低了计算复杂度。
  • 局部连接:
    卷积层的神经元只与输入数据的一个局部区域连接,这反映了图像的局部性质,使得网络能够识别图像中的局部模式。
  • 较少的参数数量:
    由于参数共享和局部连接,LeNet相比于全连接网络具有更少的参数,这使得模型更加高效,且在当时的计算资源下能够训练。
  • 序列化模型:
    LeNet的结构是序列化的,即每一层的输出都是下一层的输入,这种流水线式的处理方式适合于处理序列数据。

计算卷积后图像大小的公式

img

LeNet的优势

  • 高效的特征提取:卷积层有效地捕获图像中的空间层次,这使得该模型对图像数据特别有效。
  • 减少的参数计数:池化层减少了空间大小,降低了参数计数和计算负载。
  • 基础设计:LeNet的设计引入了现代CNN架构所基于的几个原则,包括AlexNet、VGG和ResNet。

实现代码

import tensorflow as tf
from tensorflow.keras import layers, models, datasets
import numpy as np# Load and preprocess the MNIST dataset
(x_train, y_train), (x_test, y_test) = datasets.mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0  # Normalize pixel values
x_train = np.expand_dims(x_train, -1)  # Add a channel dimension for grayscale
x_test = np.expand_dims(x_test, -1)model = Sequential()
model.add(Conv2D(6, kernel_size=(5, 5), activation='tanh', input_shape=(28, 28, 1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(16, kernel_size=(5, 5), activation='tanh'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(120, activation='tanh'))
model.add(Dense(84, activation='tanh'))
model.add(Dense(10, activation='softmax'))# Compile the model
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])# Train the model
model.fit(x_train, y_train, epochs=10, batch_size=64, validation_data=(x_test, y_test))# Evaluate the model
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f'Test Accuracy: {test_acc:.4f}')

总结

LeNet的成功证明了卷积神经网络在图像识别任务中的有效性,并为后续的深度学习模型如AlexNet、VGGNet等提供了灵感。尽管现代的CNN模型在结构和复杂度上已经远远超过了LeNet,但LeNet的一些基本思想和原则仍然在当代的深度学习模型中得以保留。


在这里插入图片描述

好了,这篇文章就介绍到这里,喜欢的小伙伴感谢给点个赞和关注,更多精彩内容持续更新~~
关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!

http://www.lryc.cn/news/519137.html

相关文章:

  • KGA:AGeneral Machine Unlearning Framework Based on Knowledge Gap Alignment
  • GelSight Mini视触觉传感器凝胶触头升级:增加40%耐用性,拓展机器人与触觉AI 应用边界
  • springboot整合admin
  • OS--常见的网络模型(包含IO多路复用的原理)
  • LCE(Local Cascade Ensemble)预测模型和LSTM(Long Short-Term Memory)模型在效果和特点上存在显著差异
  • 【mysql】约束的基本使用
  • EasyExcel(二)导出Excel表自动换行和样式设置
  • 农产品直播带货方案拆解
  • “**H5**” 和 “**响应式**” 是前端开发中常见的术语,但它们的概念和使用场景有所不同
  • 基于EasyExcel实现通用版一对一、一对多、多层嵌套结构数据导出并支持自动合并单元格
  • Java堆内存分析
  • maven高级(day15)
  • 计算机组成原理(九):乘法器
  • python【输入和输出】
  • 2024年华为OD机试真题-判断一组不等式是否满足约束并输出最大差-Python-OD统一考试(E卷)
  • 【json】
  • 基于单片机的无线智能窗帘控制器的设计
  • 磁盘满造成业务异常问题排查
  • C++例程:使用I/O模拟IIC接口(6)
  • 58.在 Vue 3 中使用 OpenLayers 绘制点、线、圆、多边形
  • 如何快速上手一个鸿蒙工程
  • c++入门之 命名空间与输入输出
  • GRE技术的详细解释
  • Mysql--基础篇--多表查询(JOIN,笛卡尔积)
  • Java 泛型的用法
  • 人工智能与物联网:智慧城市的未来
  • Python标准库之SQLite3
  • 力扣 二叉树的最大深度
  • Linux_进程间通信_共享内存
  • ubuntu 下生成 core dump