基于LeNet-5卷积神经网络的手绘数字即时识别项目

引言

背景介绍:
本项目开发了GUI应用程序,通过自建训练的LeNet-5卷积神经网络模型,允许用户利用鼠标在画布上自由绘制数字。
绘制完成后,应用程序将实时处理图像,利用LeNet-5模型进行识别,并立即向用户展示识别结果。

前置知识:
Python
LeNet-5 keras matplotlib

运行环境:
PyCharm Community Edition 2024.1.4
python-3.8.6rc
matplotlib 3.75
keras2.13.1
tkinter(Python标准库,无需额外安装)
numpy1.24.3

正文

  1. 基础知识/概念解释
    LeNet-5简介:
    一种经典的卷积神经网络(CNN),常被应用于手写体字符识别中。

基本结构
LeNet-5由7层网络结构组成(不含输入层),具体包括:
输入层:接收大小为32x32的手写数字图像,通常为灰度图(即通道数为1)。
卷积层C1:包含6个5x5的卷积核,步长为1,不使用填充(padding=0)。因此,每个卷积核会产生一个28x28的特征图,共有6个特征图。这一层共有156个参数(包括偏置项)。
池化层S2:采用最大池化(max-pooling)操作,池化窗口大小为2x2,步长为2。因此,每个池化操作会从4个相邻的特征图中选择最大值,产生一个14x14的特征图,输出通道数仍为6。池化层没有可训练的参数。
卷积层C3:包含16个5x5的卷积核,步长为1,不使用填充。这一层的卷积核与S2层的特征图连接方式较为特殊,部分卷积核会跨越多个S2层的特征图进行卷积。最终产生16个10x10的特征图。
池化层S4:同样采用最大池化操作,池化窗口大小为2x2,步长为2。产生16个5x5的特征图。
卷积层C5:使用120个5x5的卷积核,步长为1,不使用填充。由于输入特征图大小为5x5,因此输出特征图大小为1x1,即相当于120个神经元的全连接层。
全连接层F6:包含84个神经元,与C5层全连接。该层使用sigmoid激活函数。
输出层:包含10个神经元,对应0-9的数字分类,使用softmax函数进行输出。

  1. 技术细节/步骤说明

步骤详细:
对于GUI的数字识别程序:
使用Python的Tkinter库来构建GUI
使用Tkinter创建一个简单的GUI,包括一个画布(Canvas)供用户绘制,以及一个按钮来触发识别过程

对于构建训练模型:
在minst中导入训练集数据
显示了其中的一幅图片
对数据预处理,将导入的图像数据重塑,并由[0 , 255]调整到0 , 1
由LeNet-5的原理构建模型
训练模型
评估错误程度和准确性

对于测试模型:
在minst中导入测试集数据
显示了其中的一幅图片
在GUI中获得数据
同理处理图像数据
显示识别结果和正确率等信息

代码示例:

工程目录组成
在这里插入图片描述
hwriteUI.py
实现功能:基于GUI的数字识别应用程序 它允许用户通过鼠标在画布上绘制数字,并使用机器学习模型来识别这个数
在这里插入图片描述
LeNet-5.py
实现功能: 建立基于卷积神经网络(CNN)的模型,用于对MNIST手写数字数据集进行分类。(其中MNIST数据集包含了0到9的手写数字图像,每张图像大小为28x28像素)
在这里插入图片描述
LeNet-5test.py
实现功能: 加载了一个预训练的模型,并对测试集进行了评估
在这里插入图片描述
运行结果:
在这里插入图片描述

在这里插入图片描述
3. 注意事项/常见问题
据预处理时需要将图像归一化到[0, 1],并确保模型架构与LeNet-5一致。
程序使用时有识别错误的情况出现。训练模型时,可调节参数设置。
不会用GPU,模型训练需要部分时间。

结论

总结要点:
LeNet-5是一种经典的卷积神经网络,常用于手写体字符识别。其结构由7层组成,从输入层开始,通过卷积、池化层提取特征,最后通过全连接层进行分类。在GUI数字识别程序中,使用Python的Tkinter库构建界面,让用户绘制数字并触发识别。编程时,构建LeNet-5模型并训练,然后利用训练好的模型对GUI中的输入进行识别。

工程代码下载链接

移动云盘链接:https://caiyun.139.com/m/i?145C7aq8BNJBT
提取码:rjHQ
CSDN下载:https://download.csdn.net/download/m0_74094746/89556849

鼓励互动

真挚邀请读者分享经验、问题或反馈,加入互动社区。
参考资料/推荐阅读
https://blog.csdn.net/red_stone1/article/details/121804658

相关声明

本文版权归本人所有,数据仅供参考。立场观点为个人看法,不代表任何机构。欢迎讨论,但请尊重差异,避免攻击。本文为原创,未抄袭,侵权必究。信息观点仅供参考。

如有任何关于本文的疑问或建议,欢迎在评论区留言。

  • 24
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值