当前位置:   article > 正文

MATLAB卷积神经网络——基于ResNet-50进行图像分类_matlab resnet 50

matlab resnet 50

一、ResNet50工具箱安装

(1)下载工具箱

https://ww2.mathworks.cn/matlabcentral/fileexchange/64626-deep-learning-toolbox-model-for-resnet-50-network

图片

(2)在matlab打开下载的resnet50.mlpkginstall文件

(3)使用下面代码进行测试,出现结果说明安装成功

  1. clear
  2. clc
  3. % Access the trained model
  4. net = resnet50();
  5. % See details of the architecture
  6. net.Layers
  7. % Read the image to classify
  8. I = imread('peppers.png');
  9. % Adjust size of the image
  10. sz = net.Layers(1).InputSize;
  11. I = I(1:sz(1),1:sz(2),1:sz(3));
  12. % Classify the image using Resnet-50
  13. label = classify(net, I);
  14. % Show the image and the classification results
  15. figure
  16. imshow(I)
  17. text(10,20,char(label),'Color','white')

图片

二、训练猫狗数据集

(1)数据集下载链接:

  https://pan.quark.cn/s/e043408353a5

(2)将数据集按照如下目录进行放置

图片

(3)生成预训练模型

在命令行窗口输入 deepNetworkDesigner(resnet50)

图片

然后点击导出→使用初始参数生成代码

图片

保存生成的网络初始化参数,生成的mlx文件可以叉掉:

图片

修改文件路径,类别数目以及相关参数:

  1. clear
  2. clc
  3. filename = "datasets";
  4. %% 加载用于网络初始化的参数。对于迁移学习,网络初始化参数是初始预训练网络的参数。
  5. trainingSetup = load("resnet-50.mat");
  6. %% 设置图像文件夹路径和标签
  7. nc = 2; %类别
  8. imdsTrain = imageDatastore(filename,"IncludeSubfolders",true,"LabelSource","foldernames");
  9. [imdsTrain, imdsValidation] = splitEachLabel(imdsTrain,0.8); % 80的训练集
  10. %% 调整图像大小以匹配网络输入层。
  11. augimdsTrain = augmentedImageDatastore([224 224 3],imdsTrain);
  12. augimdsValidation = augmentedImageDatastore([224 224 3],imdsValidation);
  13. %% 设置训练选项
  14. opts = trainingOptions("sgdm",...
  15. "ExecutionEnvironment","gpu",...
  16. "InitialLearnRate",0.01,...
  17. "MaxEpochs",20,...
  18. "MiniBatchSize",64,...
  19. "Shuffle","every-epoch",...
  20. "Plots","training-progress",...
  21. "ValidationData",augimdsValidation);

 三、训练及测试结果

(1)训练结果

图片

图片

(2)导入一张图片进行测试

  1. clear
  2. clc
  3. load result\net.mat
  4. load result\traininfo.mat
  5. %% 随便选一张进行测试
  6. [file,path] = uigetfile('*.jpg');
  7. if isequal(file,0)
  8. disp('User selected Cancel');
  9. else
  10. filename = fullfile(path,file);
  11. end
  12. I = imread(filename);
  13. I = imresize(I, [224 224]);
  14. [YPred,probs] = classify(net,I);
  15. imshow(I)
  16. label = YPred;
  17. title(string(label) + ", " + num2str(100*max(probs),3) + "%");

 

四、完整代码获取(链接文末)

MATLAB卷积神经网络——基于ResNet-50进行图像分类

如需绘制混淆矩阵图输出单类别的准确度等等...,可私聊小编,为你量身进行定制。关注公众号,每日更新更多精彩内容!!!

最后:

如果你想要进一步了解更多的相关知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!

5a8015ddde1e41418a38e958eb12ecbd.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/442333
推荐阅读
相关标签
  

闽ICP备14008679号