没有合适的资源?快使用搜索试试~ 我知道了~
基于手写数字识别的模式识别系统的设计与实现代码大全.doc
需积分: 13 0 下载量 44 浏览量
2022-10-19
14:05:28
上传
评论
收藏 428KB DOC 举报
温馨提示
试读
16页
基于手写数字识别的模式识别系统的设计与实现代码大全.doc基于手写数字识别的模式识别系统的设计与实现代码大全.doc基于手写数字识别的模式识别系统的设计与实现代码大全.doc
资源推荐
资源详情
资源评论
题目 基于手写数字识别的模式识别系统的设计与实现
1.1 题目的主要研究内容
(1)工作的主要描述
先用 MNIST 手写数字库对 CNN(卷积神经网络)进行训练,准确度达到 98%以上
时,再准备手写数字 10 个数字,让训练好的 CNN 进行识别,考察其是否能准确
的识别手写的数字。
(2)系统流程图
1.2 题目研究的工作基础或实验条件
(1)硬件环境
硬件环境 CPU Intel 酷睿 i7 10700K 、主板华硕 PRIME Z490-P 1 、内存金士
顿 4GB DDR4 2133(KVR21S15S8/4)、硬盘西部数据蓝盘 2TB SATA6Gb/s
64M(WD20EZRZ)、固态硬盘 三星 970 EVO Plus NVMe M.2(500GB)、
显卡 NVIDIA GeForce RTX 2060 SUPER Founders Edition 、华硕玩家国度 ROG 、
电源华硕 ROG、散热器华硕 ROG STRIX LC 、显示器三星 C27H711QEC、光驱
华硕 SDRW-08D2S-U
(2)软件环境
Qt Creator4.15.0
1.3 数据集描述
MNIST 数据集是一个由手写数字图片构成的数据集,数字由 0-9 组成,图片大小
为 28*28。MNIST 数据集包含训练数据集和测试数据集两部分,训练集有 60000
张图片,其中 55000 用于训练,5000 张用于验证;测试集包含 10000 张图片。
MNIST 数 据 集 有 两 种 方 式 获 得 , 一 种 是 直 接 去 官 网 上 下 载 , 另 一 种 是 在
tensorflow.keras.datasets 中获得,这里我们采用第二种方式获得。
1.4 特征提取过程描述
卷积层 1 和输入层设置->池化层 1 设置->卷积层 2 设置->池化层 2 设置->卷积
层 1 和输入层设置->Flatten 层设置->全连接层设置->输出层设置。
1.5 分类过程描述
在卷积过程最后得到一个全连接层,全连接曾由 10 个数据构成,在输出层输出
之前,在 10 个数据中进行数值大小的比较,挑选出最大的数值对应的数字,进
而实现数字识别分类的目的。
1.6 主要程序代码
Main.cpp 主函数
#include "mainwindow.h"
#include "riscvImageProc.h"
#include <QApplication>
#include <QImage>
#include <vector>
#include <QString>
#include <QColor>
#include <stdio.h>
#include "xcnn.h"
#define BUF_SIZE 2000000
extern float digOut[10];
extern signed int xdigOut[10];
int result;//识别出来的手写数字
using namespace std;
extern "C" void xcnnff(void);
extern "C" int getMax(void);
//--------------------------------------------------------------------------------
vector<vector<unsigned short>> imageToArray(QString path)//读取文件中的数字像素值
{
QImage image;
image.load(path);
image = image.convertToFormat(QImage::Format_Grayscale8, Qt::AutoColor);
image = image.scaled(28,28);//图像像素为 28*28
vector<vector<unsigned short>> array;
QSize size=image.size();
for(int i=0;i<size.width();i++)
{
vector<unsigned short> line;
for(int j=0;j<size.height();j++)
{
QColor qc(image.pixel(i,j));
line.push_back(qc.red());
}
array.push_back(line);
}
return array;
}
//---------------------------------------------------------------------------------
void ImageToRiscvBuf(void)//读取文件夹中的图像
{
auto a = imageToArray("C:/Users/541/Desktop/qt1/dig_test/dig5.png");
//auto a = imageToArray("d:/QT/dig_test/dig9.png");
//---------------------------------------------------------------------------------
// 如果想加载其它数字的图像,就把 dig0.png 改为 dig'n'.png,例如 dig9.png.
//---------------------------------------------------------------------------------
riscvInputImage.width = a.size();//计算图像像素的尺寸
riscvInputImage.height = a[0].size();
if(riscvInputImage.width > IMAGE_BUF_SIZE)//判断图像像素的尺寸与默认值大小的比
较
riscvInputImage.width = IMAGE_BUF_SIZE;
if(riscvInputImage.height > IMAGE_BUF_SIZE)
riscvInputImage.height = IMAGE_BUF_SIZE;
for(int i=0;i<riscvInputImage.width;i++)
{
for(int j=0;j<riscvInputImage.height;j++)
{
riscvInputImage.data[i][j] = (unsigned char)a[i][j];
}
}
剩余15页未读,继续阅读
资源评论
李逍遥敲代码
- 粉丝: 3000
- 资源: 277
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功