基于深度学习的数字识别GUI的设计

用matlab的deeplearning工具箱搭建了CNN来识别手写数字的GUI。

一.训练CNN

采用的是matlab自带的数字训练集和验证集,搭建的CNN的代码如下:

clc,clear;
digitalDatasetPath = fullfile(matlabroot,'toolbox','nnet','nndemos','nndatasets','DigitDataset');
imds = imageDatastore(digitalDatasetPath,'IncludeSubfolders',true,'LabelSource','foldernames');
figure;
perm = randperm(10000,20);
for i = 1:20subplot(4,5,i);imshow(imds.Files{perm(i)});
end
labelCount = countEachLabel(imds);
img = readimage(imds,1);
[m,n] = size(img);
numTrainFiles = 750;
[imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,'randomize');
%定义CNN架构
layers = [imageInputLayer([m n 1])convolution2dLayer(3,8,'Padding','same')batchNormalizationLayerreluLayermaxPooling2dLayer(2,'Stride',2)convolution2dLayer(3,32,'Padding','same')batchNormalizationLayerreluLayerfullyConnectedLayer(10)%输出类别有10个类softmaxLayer           %对全连接层的输出归一化classificationLayer];  %分类层options = trainingOptions('sgdm',... %求解器参数设置'InitialLearnRate',0.01,...'MaxEpochs',4,...'Shuffle','every-epoch',...%每一轮都需要验证'ValidationData',imdsValidation,...%验证的数据集'ValidationFrequency',30,...      'Verbose',false,...'Plots','training-progress');net = trainNetwork(imdsTrain,layers,options);
save('CNNstructure','net');%验证的图像分类并且计算准确度
YPred = classify(net,imdsValidation);
YValidation = imdsValidation.Labels;
accuracy = sum(YPred == YValidation)/numel(YValidation)

训练的过程如下图所示:

二.结果测试

将训练好的神经网络存储于当前文件夹:

并且用以下代码去测试网络的准确性,当然输入的图像必须是28×2828\times2828×28像素的图(因为训练用的图是28×2828 \times 2828×28像素的图)。

clear;
load CNNstructure.mat;
[filename pathname filterindex] = uigetfile(...{'*.png','图像文件(*.png)';...'*.jpg','图像文件(*.jpg)';...'*.*','所有文件(*.*)'},...'选择图像文件','MultiSelect','off',...pwd);
filePath = 0;
if isequal(filename,0)||isequal(pathname,0) %只要这里面表示返回或没有合适的文件时候return;
end
filePath = fullfile(pathname,filename);
im = imread(filePath);
figure(1)
imshow(im(:,:,1));
figure(2)
prediction = classify(net,imresize(im(:,:,1),[28 28]));
imshow(im(:,:,1));
title(char(prediction));

三.搭建GUI

搭建的框架如下图所示:

导入图像按钮的回调函数:

% --- Executes on button press in import.
function import_Callback(hObject, eventdata, handles)
% hObject    handle to import (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
[filename pathname filterindex] = uigetfile(...{'*.png','图像文件(*.png)';...'*.jpg','图像文件(*.jpg)';...'*.*','所有文件(*.*)'},...'选择图像文件','MultiSelect','off',...pwd);
if isequal(filename,0)||isequal(pathname,0) %只要这里面表示返回或没有合适的文件时候return;
end
filePath = fullfile(pathname,filename);
im = imread(filePath);
handles.figure = imresize(im(:,:,1));
guidata(hObject, handles);
imshow(im);

开始识别的回调函数

% --- Executes on button press in test.
function test_Callback(hObject, eventdata, handles)
% hObject    handle to test (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
load CNNstructure.mat;
prediction = classify(net,handles.figure);
imshow(handles.figure);
title(char(prediction));
set(handles.result,'String',char(prediction));

最后的结果显示:

基于深度学习的数字识别GUI的设计相关推荐

  1. 毕业设计 基于深度学习的动物识别 - 卷积神经网络 机器视觉 图像识别

    文章目录 0 前言 1 背景 2 算法原理 2.1 动物识别方法概况 2.2 常用的网络模型 2.2.1 B-CNN 2.2.2 SSD 3 SSD动物目标检测流程 4 实现效果 5 部分相关代码 5 ...

  2. 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【三】VGG网络进行特征提取

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

  3. 基于深度学习的动物识别方法研究与实现

    基于深度学习的动物识别方法研究与实现 目  录 摘  要 I ABSTRACT II     第一章  绪论 1 1.1 研究的目的和意义 1 1.2国内外研究现状 1 1.2.1 目标检测国内外研究 ...

  4. 表单识别(五)——票据识别-论文研读:基于深度学习的票据识别系统设计与实现,卞飞飞(上)

    (论文研读:基于深度学习的票据识别系统设计与实现,卞飞飞:) 引言: 传统的文本检测与识别算法主要指利用数字图像处理等非深度学习技术进行文本检测的方法,依赖于数字图像特征(如颜色.纹理.轮廓.形状等特 ...

  5. 水位尺读数识别 python_一种基于深度学习的水尺识别方法与流程

    本发明涉及水位监测 技术领域: :,具体地说,涉及一种基于深度学习的水尺识别方法. 背景技术: ::近些年来,随着图像处理技术的发展,通过计算机获得图像里的详细信息成为了一种非常方便且高效的方式.将图 ...

  6. 【深度学习实践】基于深度学习的车牌识别(python,车牌检测+车牌识别)

    车牌识别具有广泛的应用前景,基于传统方法的车牌识别效果一般比较差,随着计算机视觉技术的快速发展,深度学习的方法能够更好的完成车牌识别任务. 本文提供了车牌识别方案的部署链接,您可以在网页上体验该模型的 ...

  7. 基于深度学习的口罩识别与检测PyTorch实现

    基于深度学习的口罩识别与检测PyTorch实现 1. 设计思路 1.1 两阶段检测器:先检测人脸,然后将人脸进行分类,戴口罩与不戴口罩. 1.2 一阶段检测器:直接训练口罩检测器,训练样本为人脸的标注 ...

  8. 基于深度学习的脑电图识别 综述篇(三)模型分析

    作者|Memory逆光 本文由作者授权分享 导读 脑电图(EEG)是一个复杂的信号,一个医生可能需要几年的训练并利用先进的信号处理和特征提取方法,才能正确解释其含义.而如今机器学习和深度学习的发展,大 ...

  9. 基于深度学习的脑电图识别 综述篇(二)数据采样及处理

    作者|Memory逆光 本文由作者授权分享 导读 脑电图(EEG)是一个复杂的信号,一个医生可能需要几年的训练并利用先进的信号处理和特征提取方法,才能正确解释其含义.而如今机器学习和深度学习的发展,大 ...

最新文章

  1. issubclass和isinstance 反射 内置方法(魔术方法)
  2. 去掉中文语言下 wget下载提示 英国中部时间 的问题
  3. 12C OCP 1Z0-063 题库(8月以前)
  4. 影响软件开发的两个关键性的问题
  5. 【机器学习基础】通俗易懂无监督学习K-Means聚类算法及代码实践
  6. CSP-S 2021 退役记
  7. php中时间轴,PHP时间轴函数
  8. C语言编程笔记丨一种很酷的 C 语言技巧
  9. TextView中实现部分文字点击
  10. 利用token 防止表单重复提交
  11. Java——实现100以内奇数的和
  12. HealthKit Swift 教程: 开始
  13. leetcode 1179
  14. linux测试上下行最大网速和实时网速
  15. js 数组entries迭代方法
  16. Spring当中循环依赖很少有人讲,今天一起来学习!
  17. About Garbage Collector and finilize()
  18. HDMI接口类型种类区分图(高清图)
  19. 一键打卡html,打卡页面.html
  20. 西邮linux兴趣小组2019,2020补纳面试题

热门文章

  1. 【斐波那切数列】LeetCode 70. Climbing Stairs
  2. Leetcode 105. 前序和中序遍历序列构造二叉树
  3. 一行shell解决Mac文件乱码问题
  4. datagrid在MVC中的运用05-加入时间搜索条件,枚举填充下拉框
  5. MySQL 5.7.25 在Windows 7中安装的记录
  6. BestCoder 2nd Anniversary 1004Hdu 5721 Palace
  7. 如何让网站在百度有LOGO展示
  8. ubuntu终端快速启动应用程序
  9. 对Excel或者其他office操作推荐使用NPOI
  10. navicat设置唯一键——unique