发新帖

deep learning 利用MATLAB制作GUI的数字识别可视化界面

[复制链接]
1642 2
在前面几节讲过一些简单的深度神经网络分类器,由于CNNs(卷积神经网络)程序出来的识别率有一些问题需要,所以暂时还没有更新这一部分。这节我想介绍下利用MATLABGUI设计一个图形化界面的NMIST识别系统。界面其实很简单,如下所示:


下面我就将一步一步介绍如何做这个界面。

   第一步:打开MATLAB→File→New→GUI,然后就会出现如下图示。



然后点击Blank GUI(Default),这是就创建了一个空白的untitled.fig,你可以把它保存在你想存的目录下面。



第二步:这是就需要添加一些控件,如下图所示。



设置了这几个控件,你可以双击某一个控件改变它的名字,字体大小,以及Tag。好了这时控件创建完了,对应的打开图片的控件,你可以把Tag改为OpenImages.然后点右键中的Editor.这样你就进入GUI的函数里面,可以添加下面的代码,可以让你在windows下面打开你待识别的图片。

  1. <span style="background-color: rgb(255, 255, 255);"></span><pre name="code" class="plain">function OpenImages_Callback(hObject, eventdata, handles)
复制代码
  1. [filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'载入图像');
  2. if isequal(filename,0)|isequal(pathname,0)
  3.     errordlg('没有选中文件','出错');
  4.     return;
  5. else
  6.     pold=[pathname,filename];
  7.     global S   %设置一个全局变量S,保存初始图像路径,以便之后的还原操作
  8.     S=file;
  9.     x=imread(file);
  10.     set(handles.axes1,'HandleVisibility','ON');
  11.     axes(handles.axes1);
  12.     imshow(x);
  13.     handles.img=x;
  14.     guidata(hObject,handles);
  15. end
复制代码
  1. [/code]
  2. [align=left][font=KaiTi_GB2312][size=18px]其实上面的代码非常固定了,所以直接[/size][/font][font=Times New Roman][size=18px]copy[/size][/font][font=KaiTi_GB2312][size=18px]就行了。[/size][/font][/align]
  3. [align=left][font=KaiTi_GB2312][size=18px]
  4. [/size][/font][/align]
  5. [align=left][font=KaiTi_GB2312][size=18px][b]第三步:[/b]添加[/size][/font][font=Times New Roman][size=18px]axes1[/size][/font][font=KaiTi_GB2312][size=18px]控件,其[/size][/font][font=Times New Roman][size=18px]Tag[/size][/font][font=KaiTi_GB2312][size=18px]就为[/size][/font][font=Times New Roman][size=18px]axes1[/size][/font][font=KaiTi_GB2312][size=18px],上图已经给出,它可以显示打开的图片。[/size][/font][/align]
  6. [align=left][code]<span style="font-family:Times New Roman;">set(handles.axes1,'HandleVisibility','ON');
  7. axes(handles.axes1);</span>
复制代码
上面控件OpenImages函数中的代码添加上面两行代码就表示打开的图片在axes1中显示。


第四步:设计一个Edit控件,但是不需要添加任何代码,它只是显示识别结果框,点击右键Editor。最主要的是开始识别的这个控件,把Tag改为Regconition。点击右键Editor。添加代码如下:

  1. <span style="font-family:Times New Roman;">function Regconition_Callback(hObject, eventdata, handles)
  2. % hObject    handle to Regconition (see GCBO)
  3. % eventdata  reserved - to be defined in a future version of MATLAB
  4. % handles    structure with handles and user data (see GUIDATA)
  5. global T
  6. numClasses=10;
  7. hiddenSize=200;  
  8. inputSize=28*28;  
  9. hiddenSize1=100;
  10. T=getimage;
  11. handles.img=im2double(handles.img);
  12. images=reshape(handles.img,784,1);
  13. load('result2.mat');
  14. trainFeatures = feedForwardAutoencoder(opttheta, hiddenSize, inputSize, ...
  15.                                        images);
  16. testFeatures1 = feedForwardAutoencoder(opttheta1, hiddenSize1, hiddenSize, ...
  17.                                        trainFeatures);

  18. inputDatatest = testFeatures1;
  19. [nop,pred]=max(theta_new*inputDatatest);
  20. set(handles.edit1,'String',num2str(pred));
  21. set(handles.edit1,'ForegroundColor','red');
  22. set(handles.edit1,'FontSize',28);</span>
复制代码
上面用的是原来训练好的网络参数,所以看着非常简单,reslut2.mat可以见资源,并给出两张识别图例。

第五步:做完上面4步,就是编译了,如下图示。



这样你可以打开你想识别的图片,然后点击开始识别,在Edit Text中显示识别的数字,如第一张图所示。

好了,这样一个简单的GUI识别系统就做完,其他识别系统以此类推。




举报 使用道具

回复

精彩评论2

manyangyang226  注册会员  发表于 2017-1-6 17:13:02 | 显示全部楼层
reslut2.mat数据集没找见呀

举报 使用道具

回复 支持 反对
manyangyang226  注册会员  发表于 2017-1-6 17:14:19 | 显示全部楼层
非常感谢你

举报 使用道具

回复 支持 反对
*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

更多

关注我们

QQ:448109455 周一至周日8:30-20:30
快速回复 返回顶部 返回列表