数据集:5类花卉
简单来说 就是CNN做特征提取 SVM做分类
训练集:测试集=8:2
代码中可以更换不同的CNN网络:AlexNet VGG16 VGG19 ResNet50
clc; clear all; %% 划分数据集 pwd='C:UsersyuanyuanDesktopCNN_SVMdata'; % 路径 currentPath = pwd; % 获得当前的工作目录 fprintf('加载数据...'); t = tic; imds = imageDatastore(fullfile(pwd),'IncludeSubfolders',true,'LabelSource','foldernames'); % 载入所有图片集合 imds.ReadFcn = @readAndPreproc; % 和 alexnet 里输入图片大小一致 【227*227*3】 numImages = length(imds.Files); %图片总的张数 [imdsTrain,imdsTest] = splitEachLabel(imds, 0.8,'randomized');%每个类都按比例随机拆分数据集,训练集和测试集8:2, YTrain=double(imdsTrain.Labels); fprintf('完成 %.02f 秒n', toc(t)); %% 加载预训练网络 (CNN) convnet = alexnet(); %% 层 convnet.Layers tbl = countEachLabel(imdsTrain) %% 提取特征 fc7 layer(vgg16,vgg19 fLayer is fc8) fLayer = 'fc7'; %AlexNet %fLayer = 'fc8'; %VGG16 VGG19 % fLayer = 'fc1000'; % resnet50 trainingFeatures = activations(convnet, imdsTrain, fLayer, ... 'MiniBatchSize', 32, 'OutputAs', 'rows'); %% SVM训练 d = fitcecoc(trainingFeatures, YTrain); % 多分类svm用fitcecoc %% 测试集相同处理 进行预测 testFeatures = activations(convnet, imdsTest, fLayer, ... 'MiniBatchSize', 32, 'OutputAs', 'columns'); YPred = predict(d, testFeatures'); YTest=double(imdsTest.Labels); accuracy = sum(YPred == YTest)/numel(YTest) figure confusionchart(YPred,YTest)
123456789101112131415161718192021222324252627282930313233343536373839404142434445结果:
效果还不错 比CNN跑得快还精准
代码(包括数据集):代码(包括数据集):
相关知识
MATLAB实现低配电脑的果树病虫害深度学习识别
开启智能农耕新时代:基于CNN的农作物病虫害图像识别模型
MATLAB植物虫害识别
基于Matlab植物虫害检测(GUI,注释svm算法)
基于颜色特征的农作物病虫害检测(MATLAB程序+word报告)
基于CNN的番茄叶片病虫害识别技术
【优化求解】基于matlab遗传算法求解红绿灯管理优化问题【含Matlab源码262期】.md资源
基于MATLAB的农业病虫害识别系统
【优化覆盖】基于matlab入侵杂草和花授粉混合算法无线传感器覆盖优化问题【含Matlab源码 1328期】
基于CNN的鸢尾花分类器
网址: 【MATLAB项目实战】基于CNN https://m.huajiangbk.com/newsview528301.html
上一篇: 大连市自然资源局 科普常识 松材 |
下一篇: 莲花的主要病虫害及其防治方法 |