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

本文介绍了如何在MATLAB中安装ResNet50工具箱并进行测试,随后详细步骤指导了使用预训练模型对猫狗数据集进行训练,包括数据准备、模型生成和测试过程。
摘要由CSDN通过智能技术生成

一、ResNet50工具箱安装

(1)下载工具箱

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

图片

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

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


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

图片

二、训练猫狗数据集

(1)数据集下载链接:

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

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

图片

(3)生成预训练模型

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

图片

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

图片

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

图片

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

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

 三、训练及测试结果

(1)训练结果

图片

图片

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

clear
clc
load result\net.mat
load result\traininfo.mat
%% 随便选一张进行测试
[file,path] = uigetfile('*.jpg');
if isequal(file,0)
   disp('User selected Cancel');
else
   filename = fullfile(path,file);
end
I = imread(filename);
I = imresize(I, [224 224]);
[YPred,probs] = classify(net,I);
imshow(I)
label = YPred;
title(string(label) + ", " + num2str(100*max(probs),3) + "%");

 

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

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

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

最后:

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

5a8015ddde1e41418a38e958eb12ecbd.png

  • 15
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
在使用 MATLAB 中的 ResNet-50 模型之前,你需要确保已经安装了 Computer Vision Toolbox 和 Deep Learning Toolbox。这两个工具箱提供了在 MATLAB 中使用深度学习模型和相关函数的功能。 使用 ResNet-50 模型可以进行图像分类任务。以下是使用 MATLAB 进行图像分类的基本步骤: 1. 导入图像并预处理: 使用 `imread` 函数导入图像,并根据需要对图像进行预处理,例如调整尺寸、归一化等。 2. 加载预训练的 ResNet-50 模型: 使用 `resnet50` 函数加载预训练的 ResNet-50 模型。该函数会自动下载并加载预训练的权重。 3. 运行图像分类: 使用 `classify` 函数对图像进行分类。将图像输入 ResNet-50 模型,并获取最可能的类别标签及其对应的分数。 以下是一个示例代码,展示了如何使用 MATLAB 进行图像分类: ```matlab % 导入图像并预处理 im = imread('image.jpg'); im = imresize(im, [224, 224]); % 调整图像尺寸为 224x224 im = im2double(im); % 归一化图像 % 加载预训练的 ResNet-50 模型 net = resnet50; % 运行图像分类 [label, score] = classify(net, im); % 显示结果 disp(['预测的类别为:', char(label)]); disp(['对应的置信度分数为:', num2str(max(score) * 100), '%']); ``` 请注意,上述代码中的 `'image.jpg'` 是你要进行分类的图像文件路径。你可以根据需要修改代码以适应你的实际情况。 希望对你有所帮助!如果还有其他问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MatpyMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值