当前位置:网站首页>【MATLAB项目实战】基于CNN_SVM的图像花卉识别
【MATLAB项目实战】基于CNN_SVM的图像花卉识别
2022-08-03 14:00:00 【大桃子技术】
数据集:5类花卉
简单来说 就是CNN做特征提取 SVM做分类
训练集:测试集=8:2
代码中可以更换不同的CNN网络:AlexNet VGG16 VGG19 ResNet50
clc;
clear all;
%% 划分数据集
pwd='C:\Users\yuanyuan\Desktop\CNN_SVM\data'; % 路径
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)
结果:
效果还不错 比CNN跑得快还精准
代码(包括数据集):代码(包括数据集):
边栏推荐
猜你喜欢
随机推荐
UE4 C disk cache solution
servlet与jsp区别_servlet和class的区别
连亏四个月,赚不回电费,预制菜经销商恐成“韭菜”?
552个元宇宙App,70个搞社交,哪款真能交到朋友?
svn安装包和客户端
varchar2和varchar2(char)_datetime数据类型
动作条的多项复选
游戏版号“地下交易”,一个版号能卖上千万?
大型连锁百货运维审计用什么软件好?有哪些功能?
GBase 8c数据库集群中,怎么替换节点呢?比如设置A节点为gtm,换到B节点上。
使用Typora+EasyBlogImageForTypora写博客,无图床快速上传图片
可视化数据库设计软件有哪些_数据库可视化编程
线程的状态
大势,又一关乎中美竞争的关键行业,走到关键时刻了
爬虫——代理搭建、爬取视频网站、爬取新闻、BeautifulSoup4介绍、bs4 遍历文档树、bs4搜索文档树、bs4使用选择器
Insertion or Heap Sort
投资75亿卢比!印度宣布建首座存储芯片组装和封测工厂,将于12月量产
第07章 InnoDB数据存储结构【2.索引及调优篇】【MySQL高级】
W11的右键如何改成和W10一样?(一行命令即可解决!)
How to use matlab to implement the piecewise function "recommended collection"