深度学习matlab图像分类,手把手教程

举报
川川菜鸟 发表于 2021/10/11 00:08:01 2021/10/11
【摘要】 matlab深度学习,进行图像分类

一、提取要训练的数据

unzip('MerchData.zip');

二、选择预训练网络

打开深度网络设计器

deepNetworkDesigner

演示:
在这里插入图片描述
通过从深度网络设计器首页中选择一个预训练的 GoogLeNet 网络来加载它。如果您需要下载网络,可点击安装,打开附加功能资源管理器。
在这里插入图片描述
等待…
在这里插入图片描述
深度网络设计器将显示整个网络的缩小视图。浏览网络图。要使用鼠标放大,请使用 Ctrl + 滚轮。
在这里插入图片描述

三、加载数据集

要将数据加载到深度网络设计器中,请在数据选项卡上,点击导入数据 > 导入图像数据。将打开“导入图像数据”对话框。在数据源列表中,选择文件夹。点击浏览并选择提取的 MerchData 文件夹。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
该对话框还允许您从 App 中拆分验证数据。将数据分为 70% 用作训练数据,30% 用作验证数据。
指定要对训练图像执行的增强操作。对于此示例,在 x 轴上进行随机翻转,在 [-90,90] 度范围内进行随机旋转,在 [1,2] 范围内进行随机重新缩放。
在这里插入图片描述
然后如下:使用深度网络设计器,您可以在数据选项卡中直观地查看训练和验证数据的分布情况。您可以看到在此示例中数据集中有五个类。您还可以查看每个类的随机观测值。
在这里插入图片描述
深度网络设计器会在训练期间调整图像大小,以匹配网络输入大小。要查看网络输入大小,请在设计器选项卡中,点击 imageInputLayer拖动到中奖。此网络的输入大小为 224×224。
在这里插入图片描述
记得ctrl+滚轮,不断放大,不让你看不清,放大后才能看清楚:
在这里插入图片描述

四、编辑迁移学习网络

在设计器选项卡中,将新的 fullyConnectedLayer 从网络层库拖到画布上。将 OutputSize 设置为新数据中的类数。然后删除原来的这个全连接层,用剪切。(在最底部)
在这里插入图片描述
再重新连接即可:
在这里插入图片描述
设置参数:
在这里插入图片描述
替换输出层。滚动到网络层库的末尾,将一个新的 classificationLayer 拖到画布上。删除原来的 output 层,改为连接新层。
一样把这个先删了:
在这里插入图片描述
再拖动进来连接:
在这里插入图片描述
在这里插入图片描述

五、检查网络

通过点击分析检查您的网络。如果 Deep Learning Network Analyzer 报告零错误,则表示网络已准备就绪,可以开始训练。
在这里插入图片描述
有个错误:
在这里插入图片描述
原来我左边拖动多了几个,把它删了:
在这里插入图片描述
再次点击分析:
在这里插入图片描述
成功!
准备训练…
在这里插入图片描述
等待吧…
在这里插入图片描述
在这里插入图片描述
电脑好,训练快…
在这里插入图片描述
准确率有点低,我们重新设置一下…
在这里插入图片描述
在这里插入图片描述

将 InitialLearnRate 设置为 0.0001,ValidationFrequency 设置为 5,MaxEpochs 设置为 8。由于有 55 个观测值,因此将 MiniBatchSize 设置为 11 以平均划分训练数据,并确保在每轮期间使用整个训练集。
在这里插入图片描述
点击关闭。
然后我们再来训练:
在这里插入图片描述
等待…
在这里插入图片描述
在这里插入图片描述
正确率提高到95%…
在这里插入图片描述

六、导出训练结果

要导出训练结果,请在训练选项卡上选择导出 > 导出经过训练的网络和结果。深度网络设计器将经过训练的网络导出为变量
在这里插入图片描述
在这里插入图片描述

trainedNetwork_1,将训练信息导出为变量 trainInfoStruct_1。
您也可以生成 MATLAB 代码,它可以重新创建所使用的网络和训练选项。在训练选项卡上,选择导出 > 生成训练代码。
在这里插入图片描述
重命名一下
在这里插入图片描述
打开看看!
在这里插入图片描述
不错,nice!!!

七、测试经过训练的网络

选择一个新图像以使用经过训练的网络对其进行分类:

I = imread("MerchDataTest.jpg");

调整测试图像的大小以匹配网络输入大小。

I = imresize(I, [224 224]);

使用经过训练的网络对测试图像进行分类。

[YPred,probs] = classify(trainedNetwork_1,I);
imshow(I)
label = YPred;
title(string(label) + ", " + num2str(100*max(probs),3) + "%");

完整代码为:

I = imread("MerchDataTest.jpg");

I = imresize(I, [224 224]);

[YPred,probs] = classify(trainedNetwork_1,I);
imshow(I)
label = YPred;
title(string(label) + ", " + num2str(100*max(probs),3) + "%");

测试效果:
在这里插入图片描述

八、留个问题

这里我们分类的是官网提供的图像。那么:

  1. 我们可否来分类自定义的图像?
  2. 类比图像,我们可否分类音频?
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。