matlab猫狗识别
时间: 2025-01-02 18:12:35 浏览: 55
使用Matlab实现猫狗图片分类和识别
准备工作
在开始之前,确保已经安装了必要的工具箱,如Deep Learning Toolbox 和 Image Processing Toolbox。这些工具箱提供了创建、训练以及评估深度学习模型所需的功能。
加载数据集并划分
对于图像分类任务来说,拥有高质量的数据集至关重要。可以采用公开可用的猫狗大战数据集作为实验素材[^3]。该数据集中包含了4000张标注好的猫咪和狗狗的照片,每类各占一半。按照7:1:2的比例将整个集合分割成三个子集——即70%用于训练、10%用来做验证而剩下的20%则留作最后测试之用。
imds = imageDatastore('data', ...
'IncludeSubfolders', true, ...
'LabelSource', 'foldernames');
[trainImds,valImds,testImds] = splitEachLabel(imds,0.7,0.1,0.2,'randomized');
构建卷积神经网络(CNN)
接下来就是设计一个适合当前问题规模的小型CNN架构。这里给出的是一个简单的三层结构示例:
- 输入层接受固定大小(例如224×224像素)彩色RGB格式的输入;
- 接下来是一系列由卷积层、ReLU激活函数层组成的模块化单元;
- 经过几次下采样操作之后进入全连接层直至输出预测概率分布向量;
layers = [
imageInputLayer([224 224 3])
convolution2dLayer(3,8,'Padding','same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2,'Stride',2)
convolution2dLayer(3,16,'Padding','same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2,'Stride',2)
fullyConnectedLayer(2) % 对应两类:猫/狗
softmaxLayer
classificationLayer];
训练模型
设定好超参数后就可以调用trainNetwork()
来启动训练流程了。此过程中会自动完成前向传播计算损失值反向更新权重等一系列复杂运算。值得注意的是,在资源允许的情况下尽可能利用GPU加速以缩短耗时。
options = trainingOptions('sgdm',...
'InitialLearnRate',0.001,...
'MaxEpochs',5,...
'MiniBatchSize',32,...
'Shuffle','every-epoch',...
'ValidationData',valImds,...
'ValidationFrequency',30,...
'Verbose',false,...
'Plots','training-progress',...
'ExecutionEnvironment','auto');
net = trainNetwork(trainImds,layers,options);
测试与评价性能
当训练完成后应当立即对预留出来的独立测试样本执行推理操作,并统计各类指标比如总体准确度等信息以便了解所建立系统的实际表现情况。
YPred = classify(net,testImds);
accuracy = sum(YPred==testLabels)/numel(testLabels)*100;
disp(['Accuracy of the model is ', num2str(accuracy), '%']);
confusionchart(testLabels, YPred);
相关推荐
















