Matlab图像识别/检索系列(6)-10行代码完成深度学习网络之基于CNN的图像分类

在Matlab2017中,完成一个使用CNN网络进行分类的示例非常简单。为了便于创建图像集,Matlab2015引入了 ImageDatastore对象,实现函数为imageDatastore,该函数可以轻易的完成遍历一个文件夹中的图像建立图像及的功能,不管该文件夹是否含有子文件夹。这也是它区别于imageSet的地方之一。代码如下。

%exam1.m
digitDatasetPath = fullfile(matlabroot,'toolbox','nnet','nndemos',...
    'nndatasets','DigitDataset');
%创建图像集,参数设置为包含子文件夹、子文件夹名作为类标签
digitData = imageDatastore(digitDatasetPath,...
        'IncludeSubfolders',true,'LabelSource','foldernames');
figure;
%取20个置乱数字
perm = randperm(10000,20);
%显示20幅图像
for i = 1:20
    subplot(4,5,i);
    imshow(digitData.Files{perm(i)});
end
trainingNumFiles = 750;
%若报错,可改为rng('default')
rng(1) 
%在图象集每一类中随机取trainingNumFiles个图像作为训练图像,其余作为测试图像
[trainDigitData,testDigitData] = splitEachLabel(digitData,...
                trainingNumFiles,'randomize');
%创建简单CNN网络
layers = [imageInputLayer([28 28 1]);
          convolution2dLayer(5,20);
          reluLayer();
          maxPooling2dLayer(2,'Stride',2);
          fullyConnectedLayer(10);
          softmaxLayer();
          classificationLayer()];
%设置训练参数
options = trainingOptions('sgdm','MaxEpochs',20,...
    'InitialLearnRate',0.0001);
%训练CNN网络
convnet = trainNetwork(trainDigitData,layers,options);
%对测试图像进行分类
YTest = classify(convnet,testDigitData);
%显示测试图像标签
TTest = testDigitData.Labels;

转载于:https://blog.51cto.com/8764888/2053960

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值