手写数字识别问题(5)——完结

article/2025/7/19 4:51:32

经过接近15周的艰苦努力,毕业设计(基于MATLAB的手写数字识别系统)已经完结。
设计过程中遇到的部分问题可查阅博客:

  1. 手写数字识别问题(1)——关于MNIST数据集
  2. 手写数字识别问题(2)——利用MATLAB搭建GUI界面
  3. 手写数字识别问题(3)——详解卷积神经网络LeNet-5
  4. 手写数字识别问题(4)——图像处理时常见问题之uint8与double类型详解
    以及本文手写数字识别问题(5)——完结。

本文采用MATLAB型号是MATLAB R2016a,且是利用纯代码BP神经网络设计实现,没有利用MATLAB神经网络工具箱函数,这样更能方便的了解BP神经网络的工作原理——信号前向传播,误差反向传播。最后利用GUI界面进行搭建,方便快捷。
整个过程包括五部分,分别是:
样本库图像预处理。手写数字识别中使用的数据库,主要图像预处理的方法。
样本特征提取。对预处理之后的图像数据选择样本特征进行提取。
分类器设计。通过对比各种分类器选择较为合适的BP神经网络分类器
手写数字的识别。与样本库图像不同,本文所要识别的对象是利用windows 画图产生黑白二值且保存为.bmp 文件的手写数字图像,因此需要进行与样本库图像不同的图像预处理。
搭建GUI界面。利用MATLAB GUI界面搭建软件系统,验证系统的稳定性良好。

GUI界面又包括单数字GUI界面搭建及多数字GUI界面搭建。本设计基本将手写数字识别的各个领域均涵盖在内。而且代码基本都有注释解释,更方便了解。
部分代码如图所示。
主函数部分代码:
在这里插入图片描述
识别函数部分代码:
在这里插入图片描述
单数字GUI界面:
在这里插入图片描述
多数字GUI界面:
在这里插入图片描述
经过训练,测试集识别率可以超过99%,具有良好的识别性能。

在这里插入图片描述
除此之外,本设计还可以提供必要的开题报告、文献综述、论文大纲及答辩PPT和答辩稿等介绍。
由于投入了不少精力和时间,以及走了大量的弯路。
这里我将多种基于MATLAB的手写数字识别方法进行了汇总,展示如下:

五种方法

      • 1、利用MATLAB工具箱进行手写数字识别
      • 2、利用MATLAB自己搭建BP神经网络进行手写数字识别
      • 3、利用MATLAB自己搭建BP神经网络和多特征进行手写数字识别
      • 4、利用MATLAB自己搭建BP神经网络和多特征进行手写数字识别+文档资料
      • 5、利用MATLAB+CNN卷积神经网络进行手写数字识别

1、利用MATLAB工具箱进行手写数字识别

该方法利用MATLAB自带的工具箱实现,利用MATLAB的net函数实现,训练过程如下:
在这里插入图片描述
最终得到的混淆矩阵如图所示,可以看到准确率大概在95%左右:
在这里插入图片描述
实际识别效果如下:
在这里插入图片描述
资源详细代码请点击这里:资源1

2、利用MATLAB自己搭建BP神经网络进行手写数字识别

BP神经网络采用最原始的逐条代码编写的方式,而没有使用误差更大,更不容易学习精髓,但更方便的工具箱函数,这样也更方便你认真读和理解神经网络的内涵和本质。
【注】:本资源没有GUI界面,需要界面的亲需要自己搭建。
资源详细代码请点击这里:资源2

3、利用MATLAB自己搭建BP神经网络和多特征进行手写数字识别

这里在2的基础上,增加了粗网格特征和交点特征,并且搭建了GUI界面,GUI界面详见上文。
交点特征包括三种,分别是垂直交点、水平交点和对角线交点。
(一)垂直交点
28 ∗ 28 28*28 2828图像行宽的5/12、1/2和7/12处设置三条垂直线,若为小数则四舍五入为最近的整数,提取它们和手写数字的交点数。
(二) 水平交点
28 ∗ 28 28*28 2828图像列宽的1/3、1/2和2/3处设置三条水平线,若为小数则四舍五入为最近的整数,提取它们和手写数字的交点数特征。
(三)对角线交点
28 ∗ 28 28*28 2828图像中分别设置主对角线和副对角线,提取它们和手写数字的交点数特征。
根据三种交点的特征,手写数字的交点特征F可以表示为:
F = [ F 1 , F 2 , F 3 , F 4 , F 5 , F 6 , F 7 , F 8 ] F = [{F_1},{F_2},{F_3},{F_4},{F_5},{F_6},{F_7},{F_8}] F=[F1,F2,F3,F4,F5,F6,F7,F8]
其中, F 1 、 F 2 、 F 3 F_1、F_2、F_3 F1F2F3分别表示垂直5/12处、垂直1/2处和7/12处的交点数; F 4 、 F 5 、 F 6 F_4、F_5、F_6 F4F5F6分别表示水平1/3处、水平1/2处和水平2/3处的交点数; F 7 、 F 8 F_7、F_8 F7F8分别表示左对角线、右对角线的交点数和端点数。交点特征示意图如下图所示。
在这里插入图片描述
关于交点特征的详细内容可参考论文:李怡轩. 基于机器学习的手写数字识别系统设计与实现[J]. 微型电脑应用, 2018, v.34;No.304(08):82-85.


粗网格特征
粗网格特征表示对逐像素扫描法的局部处理,将手写数字图像分成 n ∗ n n*n nn个粗网格,对每个小网格内的白色像素1所占总数进行计算,并将其结果顺序排列成一维特征向量,进行训练学习。
粗网格的提取步骤如下:将 N ∗ M N*M NM手写数字图像分成各不重叠 n ∗ n n*n nn个小区域,计算每个区域的像素数𝑡𝑡,将所得结果作为该区域的特征值存入特征向量中,粗网格划分后该图像的特征值为 ( N ∗ M ) / ( n ∗ n ) (N*M)/(n*n) NM/nn个。
该系统中图像归一化后变成像素为 28 ∗ 28 28*28 2828的手写数字图像,将n的值置为2。特征提取后产生196个特征值的特征向量,每个特征值表示一个 2 ∗ 2 2*2 22 区域内的像素值之和,即白色个数。粗网格特征的一个显著优点是能够有效抑制噪声

关于粗网格特征的详细内容可参考论文:张魁. 基于遗传-BP神经网络的手写数字的识别方法[D].西安科技大学,2012.

【注】:本资源搭建了GUI界面,可以直接运行GUI.m。
资源详细代码请点击这里:资源3

4、利用MATLAB自己搭建BP神经网络和多特征进行手写数字识别+文档资料

这里在2的基础上,增加了文档类资料。文档类资料包括很多内容。
资源详细代码请点击这里:资源4

Tips:2-4我做了视频对代码进行了较为详细的介绍,如果代码不懂可以参考视频:https://www.ixigua.com/7224829299474301475。

5、利用MATLAB+CNN卷积神经网络进行手写数字识别

关于卷积神经网络这一部分请参考本专题的下一篇文章:手写数字识别问题(6)【拓展】——利用CNN卷积神经网络实现基于MATLAB的手写数字识别系统的设计。

【注】:以上五种方法都附赠一份利用MATLAB和python对MNIST数据集进行处理的程序,希望对你有所帮助。


http://chatgpt.dhexx.cn/article/ghJp0q0Z.shtml

相关文章

常用的OCR文字识别软件有哪些

随着大家办公需求的增加,办公软件如雨后春笋般纷纷面世,旨在提高大家的工作效率,OCR文字识别软件便是不可缺少的办公软件之一。那么,有哪些专业又好用的OCR文字识别软件呢?小编来为大家推荐几款,以供参考。…

安卓实现扫一扫识别数字

本文已授权微信公众号:鸿洋(hongyangAndroid)原创首发。 公司业务需求,需要做手机号码的识别。所以有了此篇文章,现在就将实现过程分享给大家。 1.准备工作 首先实现识别数字等字符,我们要知道需要采用OC…

ABBYY FineReader15最新版图片文字识别转换软件

在日常生活中,我们会遇到需要将各种文字、图片、扫描图片等转换为文字的情况。想要轻松解决这些问题,需要使用到OCR文字识别。但对于许多新手来说,OCR文字识别是陌生的。今天小编就给大家介绍一下,OCR文字识别怎么使用&#xff0c…

数字识别代码完整

数字识别代码 近期完成了一个数字识别的代码,开始也不会做,但通过了解和查询自己也了解到了一些在这你给大家做个分享(本代码开发环境Opencv3)这里分享给大家一个比较好的网址,我的代码也是参照的这个改动的完整的代码…

Labview OCR数字识别

::: keywords labview,OCR,灰度,对比度,数字识别 ::: 下载文件 前言 OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定…

ABBYY15免费照片识别文字识别软件

照片识别文字的软件有哪些?在日常的工作的时候,小伙伴们是不是经常会借助拍摄照片记录一些比较重要的事情或者是一些比较重要的笔记,等回头空闲出来的时候在去整理,那么这时候,如果我们运用好图片识别文字这项技术&…

ABBYY FineReader15最新专业的PDF OCR图片文字识别软件

ABBYY FineReader PDF15是专业的OCR图片文字识别软件,可以快速、准确、方便地将扫描纸质文件、PDF格式及数字或移动电话图像转换成可编辑格式——Microsoft Word、Excel、PowerPoint、可检索的PDF、HTML、DjVu等。99.8%的识别准确率即刻识别文本,复制和粘…

怎么识别数字?看看这些识别软件能不能帮上你

随着数字时代的到来,数字在我们的生活中出现的频率也在不断的提高,而数字识别在我们的生活中也有了越来越重要的作用,给大家举个例子,当我们在商店购物时,往往需要使用银行卡进行支付,在这个过程中&#xf…

完全免费的OCR文字识别软件

今天我要分享给大家的是两款完全免费的OCR文字识别软件,而且这两款软件都是本地版无需联网就能使用,而且没有使用次数的限制。 软件准备好了: 链接: 百度网盘 请输入提取码 提取码: 6666 01软件信息 软件名称:OCR文字识别软件 …

基于BP神经网络手写体数字识别的软件设计

目 录 1 绪论 1 1.1 字符识别概述 1 1.2 手写数字识别的意义和应用前景 2 1.3 字符识别的研究与发展 3 1.4 手写数字识别的难点 3 1.5 国内外研究现状 4 1.6 手写体数字识别系统概述 5 1.7 本文内容安排 6 2 手写体数字识别中预处理技术 8 2.1 平滑去噪 8 2.2 二值化 10 2.3 归…

bp神经网络_BP 神经网络驱动的手写体数字识别软件 EasyOCR

EasyOCR 项目介绍 本软件是一个手写体数字识别软件,采用BP神经网络,基于colt数学库,有完整源码,可以保存训练结果,基于开源例程neuralnetwork-sample,原作可以在GitHub中找到。主要改进了训练结果保存&…

opencv 数字识别详细教程

最近要做数字识别这块,但是自己又完全不懂这个,网上搜资料搜了好多,但是都没找到完整代码。只有自己慢慢搞,下面写下自己的过程以及代码有不好的地方希望大神可以指出,大家相互交流下。有需要完整代码的可以自行下载&a…

FPGA实现mnist手写数字识别(软件部分)

文章目录 FPGA实现mnist手写数字识别① 环境配置② 数据集及代码下载③ 代码操作(1)训练模型(2)权重输出(3)关于灰度转换 FPGA实现mnist手写数字识别 ① 环境配置 使用的环境:tf1.12&#xff…

pyqt5手写板+pytorch卷积神经网络,实现手写数字识别软件

卷积神经网络的结构 #定义网络结构 #不是le-net5的结构 class Net(nn.Module):def __init__(self):super(Net, self).__init__()# Sequential表示在搭建网络模型中要执行的一系列的步骤# Dropout中,p0.5表示50%的神经元不工作# layer3:输出层 一般输出层中不需要加Dropout# Co…

使用Dl4j训练的一个手写数字识别软件

DL4J使用之手写数字识别 最近一直在学习深度学习,由于我是Java程序员出身,就选择了一个面向Java的深度学习库—DL4J。为了更加熟练的掌握这个库的使用,我使用该库,以MNIST(http://yann.lecun.com/exdb/mnist/)手写数字数据集作为…

识别数字的软件有哪些?这几款识别数字工具安利给你

嘿,朋友们,你们有没有遇到过需要处理大量数字的情况,要是一个一个手动输入感觉十分麻烦,还会耗费大量时间和精力?别着急,现在数字识别的软件已经非常发达了,只需要一款好用的数字识别软件&#…

这款数字识别软件你知道吗

识别数字技术是指通过计算机自动识别数字的能力,通常采用数字图像处理和模式识别等技术进行实现。你别看这个技术好像很高大上,实际上现在已经有很多软件可以做到识别数字了,你知道识别数字的软件有哪些吗?今天我就为大家科普这项…

基于TensorFlow深度学习框架,运用python搭建LeNet-5卷积神经网络模型和mnist手写数字识别数据集,设计一个手写数字识别软件。

本软件是基于TensorFlow深度学习框架,运用LeNet-5卷积神经网络模型和mnist手写数字识别数据集所设计的手写数字识别软件。 具体实现如下: 1.读入数据:运用TensorFlow深度学习框架,下载并读入mnist手写数字识别数据集。 2.构建模型…

OCR手写数字识别什么软件好用?介绍一种

OCR是指用电子设备检查文本上的资料,然后对图像文件进行分析处理,从而获取文字及版面信息的过程。那OCR手写数字识别有好用的软件吗?当我们需要整理大量手写资料需要整理时,下面这两款软件就派上用场了。 软件一、我们可以使用识别…

识别数字的软件有哪些?自动识别数字的方法并不难

每个月月初时,作为销售助理的同事经常要整理一大堆数据,密密麻麻的数字看得他头晕眼花,特别是有些图片里的数字,一不小心就容易出错,酿成严重的数据错误。像平时我也会处理到一些数据图片,为了准确及时的整…