【实操】深度学习网络万万千,到底怎么把我的数据放进去?

在这里插入图片描述
如今最热的方向莫过于深度学习了,什么AlexNet,GoogleNet,几乎都耳熟能详,毕竟毕业设计一般的题目都和深度学习有关。

相信看到这篇文章的同学,对深度学习大概是干啥的,肯定有所理解。但是可能苦恼于怎么把我自己的数据导入这些网络里,怎么让模型输出分类/识别的结果?

下面以在 Matlab 里用 AlexNet 进行 分类 为例,带大家从零开始使用模型,一直到输出分类结果。

首先要进行分类的话,肯定需要有已经分好类的数据库,如下图所示。ClassficationData文件夹里有五个子文件夹,代表五类样本。
在这里插入图片描述
可以看到,每个子文件夹中的数据格式均为jpg
在这里插入图片描述
现在要做的事,就是用这些数据,训练AlexNet模型,使其可以自动对照片进行分类。由于AlexNet对输入图片尺寸有要求(227227),所以我们首先要对原始数据库的图片尺寸统一为227227。这部分代码参考链接1。

链接1:Matlab批量修改文件夹中照片尺寸

值得注意的是,在使用链接1里的代码时,需要预先建立一个新的文件夹,以及里面的子文件夹(同名),这样才可以把修改好的图片存进来。如下图:
在这里插入图片描述
接下来只需要把照片导入模型里就OK了,我们这里参考matlab官方例程,为大家做个示范,代码如下:

imds = imageDatastore('F:\模式识别作业\ResizeClassificationData\', ...
    'IncludeSubfolders',true,'LabelSource','foldernames');

% 每类样本中测试集的个数,若每类样本有50个,测试集:训练集 = 7:3 = 35:15
numTrainFiles = 35;                                                         
[imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,'randomize');

layers1 = alexnet;                                                          % 引入alexnet
layers2 = layers1.Layers(1:end-3);                                          % 去掉alexnet后3层
layers = [layers2                                                           % 修改alexnet后3fullyConnectedLayer(5,'WeightLearnRateFactor',20,'BiasLearnRateFactor',20)
          softmaxLayer
          classificationLayer];
inputSize = layers1.Layers(1).InputSize;
      
augimdsValidation = augmentedImageDatastore(inputSize(1:2),imdsValidation);
options = trainingOptions('sgdm', ...                                       % 模型参数调整
    'MiniBatchSize',10, ...
    'MaxEpochs',6, ...
    'InitialLearnRate',1e-4, ...
    'Shuffle','every-epoch', ...
    'ValidationData',augimdsValidation, ...
    'ValidationFrequency',3, ...
    'Verbose',false, ...
    'Plots','training-progress');

net = trainNetwork(imdsTrain,layers,options);                               % 训练好的模型

YPred = classify(net,imdsValidation);                                       % 预测结果输出
YValidation = imdsValidation.Labels;

accuracy = sum(YPred == YValidation)/numel(YValidation)                     % 精度输出

结果输出如下:
在这里插入图片描述
最后,将整个功能代码封装成一个简单好操作的形式,点下“运行”就完事了,实现 尺寸重定义 + alexnet模型训练输出 一条龙,不用再手动建立新的文件夹,效果如下:
在这里插入图片描述
同时欢迎大家来技术交流,个人QQ:1356580910,图像处理探索群(不只是图像处理):913931535 ,备注:CSDN深度学习

相关资料推荐如下:👇🏻
基于小波变换的图像边缘检测(matlab祖传代码注释)
Matlab对话框总结

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章