基于BP神经网络进行手写体识别(Matlab代码实现)

news2024/11/19 17:47:01

     目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码


💥1 概述

字符识别长期以来都是采用传统的识别方法, 对印刷体字符的识别率一般只是稳定在96%左右, 未能进一步提高, 而对手写体字符的识别, 其研究还处于探索阶段, 其识别率还相当低, 因此, 为了提高识别率, 就必须寻求新的方法和途径。

20世纪80年代中期, 人们已经开始利用人工神经网络解决手写体数字识别问题。人工神经网络为OCR研究提供了新的手段, 它具有一些传统技术所没有的特点:1) 具有很强的分类能力, 可以在特征空间内形成任意复杂的决策区域;2) 硬件实现后的神经网络分类速度比传统方法快得多;3) 分类器便于训练, 无需人为过多的干预。特别是对手写体字符识别问题, 神经网络技术更显示出独特的优越性。

目前研究的神经网络字符识别系统可划分为两大类.第一类系统实际上是传统方法与神经网络技术的结合, 这也是本文采用的方法.这类系统分为两块, 第一块主要完成样本模式预处理和字符特征抽取任务, 第二块是用前面获得的模式特征来训练神经网络分类器, 从而达到识别字符的目的。这类系统充分利用了人的经验来获取模式特征以及神经网络的杰出分类能力来识别字符, 是人们通常采用的方法。第二类系统省去了特征抽取工作, 整个字符直接作为神经网络的输入, 这类系统的神经网络结构的复杂度大大增加了, 首先输入模式维数的增加导致网络规模的庞大, 使得网络的训练、学习非常困难。此外神经网络结构上要消除模式变形的影响。通常这类网络都采用局部连接的方式减少网络的复杂度, 并采用共享连接权的策略增强网络抗变形 (输入模式) 的能力。

由于人工神经网络具有并行处理和很强的容错性等特点, 因此有可能大大提高手写体字母数字识别的准确率和速度。目前神经网络手写体字母数字识别系统的识别水平已与传统模式方法相当, 且大有提高的余地。本文阐述了利用BP网络进行手写体字母 (小写) 、数字识别的一些尝试, 取得了令人满意的测试结果。

📚2 运行结果

 

 

 

 

🎉3 参考文献

[1]余波,简炜,方勇.利用Matlab神经网络工具箱在VC++.net中进行手写体数字识别[J].湖北汽车工业学院学报,2007(01):39-42.

👨‍💻4 Matlab代码

主函数部分代码:

%实现一个手写体数字识别的神经网络训练程序
clc;
clear;
load('X.mat', 'X');
load('data.mat','y');

%测试集100张图片
testData=[X(1:10,:);X(501:510,:);X(1001:1010,:);X(1501:1510,:);X(2001:2010,:);X(2501:2510,:);X(3001:3010,:);X(3501:3510,:);X(4001:4010,:);X(4501:4510,:)];
testResult=[y(1:10,:);y(501:510,:);y(1001:1010,:);y(1501:1510,:);y(2001:2010,:);y(2501:2510,:);y(3001:3010,:);y(3501:3510,:);y(4001:4010,:);y(4501:4510,:)];

% image = reshape(X(1,:),20,20);
% imshow(image)

%准备训练数据
num=200; %每个数字训练数据集的大小,最大490
trainingData=[X(11:10+num,:);X(511:510+num,:);X(1011:1010+num,:);X(1511:1510+num,:);X(2011:2010+num,:);X(2511:2510+num,:);X(3011:3010+num,:);X(3511:3510+num,:);X(4011:4010+num,:);X(4511:4510+num,:)];
trainingTarget=[y(11:10+num,:);y(511:510+num,:);y(1011:1010+num,:);y(1511:1510+num,:);y(2011:2010+num,:);y(2511:2510+num,:);y(3011:3010+num,:);y(3511:3510+num,:);y(4011:4010+num,:);y(4511:4510+num,:)];

trainingTarget(1:num) = zeros(1,num);
testResult(1:10) = zeros(1,10);
save('trainingTarget.mat','trainingTarget')

trainX = trainingData';
trainT = trainingTarget';
testX = testData';
testT = testResult';
algorithms = char('traingd','traingdx','trainrp','traincgf','traincgp','traincgb','trainscg','trainoss','trainbr','trainlm');
node_s = [20,30,40,50,60];
lr_s = [0.01,0.005,0.001,0.0005,0.0001];
regression_test = zeros(1,5);
regression_train = zeros(1,5);
performance_test = zeros(1,5);
performance_train = zeros(1,5);
for i = 1:length(lr_s)
    % [x,t] = building_dataset;
    net = feedforwardnet([50,10]);
%     net.trainFcn = strtrim(algorithms(3,:));
    net.trainFcn = 'traincgf';
%     net.divideParam.trainRatio = 70/100;
%     net.divideParam.valRatio = 15/100;
%     net.divideParam.testRatio = 15/100;
    net.trainParam.epochs = 10000; %设置训练回合数
    net.trainParam.goal = 0; %设置训练目标
    net.trainParam.lr = lr_s(i); % 设置学习率
%     net.trainParam.max_fail = 100;
    net.divideFcn = '';
    % view(net)
    % 训练神经网络
    [net,TR] = train(net,trainX,trainT);
    
   
    file_path_name_ = [save_path,num2str(i)];
    if exist(file_path_name_)==0   %该文件夹不存在,则直接创建
        mkdir(file_path_name_);
    end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/62696.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

推荐一款语音识别软件

一、简介 使用接口转换需要输入的语音为文字。 给大家带来一款语音识别软件,想做智能识别语音设备或者想给项目增加功能的同学可以看下 这款软件是使用python写的,其实开发语言无所谓用其他语言也可以写 代码还是挺简单的。 这款软件主要使用接口完成识…

SWMM排水管网水力、水质建模及在海绵城市与水环境保护中的应用

随着计算机的广泛应用和各类模型软件的发展,将排水系统模型作为城市洪灾评价与防治的技术手段已经成为防洪防灾的重要技术途径。美国环保局的雨水管理模型(SWMM),是当今世界最为著名的排水系统模型。SWMM能模拟降雨和污染物质经过…

基于树莓派开发板的智能家居系统的设计和实现

目 录 摘 要 I Abstract II 前 言 1 开发工具和技术简介 1 1.1 硬件工具简介 1 1.1.1树莓派2代B板简介 1 1.1.2 其他硬件模块 1 1.2 软件工具介绍 3 1.2.1 Qt 3 1.2.2 Espeak TTS 3 1.2.3 WiringPi 3 1.2.4 PuTTY 5 1.2.5 Win32 Disk Imager 5 1.2.6 SDFormatter4exe 5 1.3 系…

【深度梯度投影网络:遥感图像】

Deep Gradient Projection Networks for Pan-sharpening (用于全色锐化的深度梯度投影网络) 全色锐化是遥感成像系统获取高分辨率多光谱图像的重要技术。最近,深度学习已经成为最流行的泛锐化工具。提出了一种基于模型的深度全色锐化方法。…

【电动车优化调度】基于模型预测控制(MPC)的凸优化算法的电动车优化调度(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 📝目前更新:🌟🌟🌟电力系统相关知识,期刊论文&…

【WLAN】Android 13 WiFi Display 介绍和常规问题分析

Miracast依赖的Wi-Fi技术项有: Wi-Fi Direct:也就是Wi-Fi P2P。它支持在没有AP(Access Point)的情况下,两个Wi-Fi设备直连并通信。 Wi-Fi Protected Setup:用于帮助用户自动配置Wi-Fi网络、添加Wi-Fi设备等。 11n/WMM/WPA2:其中,11n就是802.11n协议,它将11a和11g提供…

python3通过winrm远程执行windows服务器dos命令

Background 在实际项目中,一般使用Linux作为生产服务器,但有时就会出现一些特殊情况,你只能使用windows作为作为服务器,比如说一个用fortran编写的仿真程序,编译环境用的intel的oneAPI,按理说这个编译器是是…

C/C++ 课程设计 | 银行管理系统

🎈 作者:Linux猿 🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊! &…

DP83TG720SWRHARQ1 IC TRANSCEIVER 接口芯片、TCAN1051VDRBTQ1

1、TCAN1051VDRBTQ1 具有 CAN FD 和故障保护功能的汽车类 CAN 收发器。 详细参数 类型:收发器 协议:CANbus 驱动器/接收器数:1/1 双工:半 接收器滞后:120 mV 数据速率:2Mbps 电压 - 供电:4.5V ~…

黄菊华老师,Java Servlet毕业设计毕设辅导课(5):Servlet配置虚拟路径映射

Servlet配置虚拟路径映射 在 web.xml 文件中&#xff0c;一个 <servlert-mapping> 元素用于映射一个 Servlet 的对外访问路径&#xff0c;该路径也称为虚拟路径。例如&#xff0c;在《第一个Servlet程序》教程中&#xff0c;hello 所映射的虚拟路径为“/hi”。 创建好的…

数据结构—平衡二叉树

文章目录查询数据的时间复杂度平衡二叉树旋转策略1、LL型旋转&#xff1a;2、RR型旋转&#xff1a;3、LR型旋转&#xff1a;4、RL型旋转&#xff1a;补充&#xff1a;————————————————————————————————查询数据的时间复杂度 首先&#xff0c;…

MySQL学习笔记(十二)锁

1.锁的类型 InnoDB实现了如下两种标准的行级锁&#xff1a; 共享锁&#xff08;S Lock&#xff09;&#xff1a;允许事务对一条行数据进行读取 排他锁&#xff08;X Lock&#xff09;&#xff1a;允许事务对一条行数据进行删除或更新 如果一个事务T1已经获得了行r的共享锁&…

委派设计模式

一、委派模式 1、定义 委派模式&#xff08;Delegate Pattern&#xff09;又称作委托模式&#xff0c;是一种面相对性的设计模式&#xff0c;允许对象组合实现与继承相同的代码重用&#xff0c;属于行为型设计模式&#xff0c;不属于GoF的23种设计模式。 委派模式的基本作用是…

Unity与IOS⭐一、百度语音IOS版Demo调试方法

文章目录 🟥 SDK下载与配置官网包名1️⃣ SDK下载地址2️⃣ 配置官网的包名3️⃣ 百度语音IOS版教程地址🟧 配置SDK Demo1️⃣ 配置License2️⃣ 配置唤醒词文件3️⃣ 打包🟨 Demo测试🟥 SDK下载与配置官网包名 1️⃣ SDK下载地址 SDK下载地址:https://ai.baidu.com…

JAVA中如何精确取到时间间隔

文章目录0 写在前面1 使用方法2 举例3 写在最后0 写在前面 做业务的时候&#xff0c;总要统计数据&#xff0c;几月份到几月份的全部数据。这个时候就要找到起始月份的具体时间和终止月份的具体时间。 此时我们用原始的Date类去处理就比较麻烦&#xff0c;可以自己写一个工具类…

jsp网络申报审批系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 网络申报审批系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql&#xff0c;使用…

[矩阵论] Unit 1. 线性空间与线性变换 - 知识点整理

注: 以下内容均由个人整理, 不保证完全准确, 如有纰漏, 欢迎交流讨论参考: 杨明, 刘先忠. 矩阵论(第二版)[M]. 武汉: 华中科技大学出版社, 2005 1 线性空间与线性变换 1.1 线性空间 线性空间 Def 1.1: 设 VVV 是一个非空集合(V≠∅V\neq \varnothingV​∅)&#xff0c;FF…

Unity与IOS⭐最基础的交互演示

文章目录 🟥 本章的交互效果🟧 创建IOS代码1️⃣ 创建代码文件2️⃣ 代码文件🚩 Interaction.h🚩 Interaction.m🟨 测试试试吧🟥 本章的交互效果 本章演示unity调用IOS代码,IOS并返回值。 🟧 创建IOS代码 我们的Unity代码一个脚本就好了,而IOS代码需要两个脚…

【AI】Python 实现 KNN 手写数字识别

KNN 算法 1. 题目介绍 K近邻&#xff08;K-Nearest Neighbor, KNN&#xff09;是一种最经典和最简单的有监督学习方法之一。K-近邻算法是最简单的分类器&#xff0c;没有显式的学习过程或训练过程&#xff0c;是懒惰学习&#xff08;Lazy Learning&#xff09;。当对数据的分…

如何搭建一个自己的音乐服务器 审核中

点赞再看&#xff0c;动力无限。 微信搜「 程序猿阿朗 」。 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录&#xff0c;有很多知识点和系列文章。 最近发现&#xff0c;经常用的网易云音乐&#xff0c;有很多歌曲下架了&#xff0c;能听的越来越少了&#xff1b;…