本文主要是介绍matlab使用Alexnet识别高速路牌,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一个经典的迁移学习案例,Alexnet本身需要下载,下载需要注册matlab账号,当然网上也有这个模型,随便下。
doc Alexnet doc trainFasterRCNNObjectDetector
就能查到官网提供的案例信息。
网上也有相关的案例可以参考,主要参考这两个:
MATLAB2017a使用FasterRcnn目标检测训练及其测试流程_不知名的小咸鱼的博客-CSDN博客_matlab目标检测
MATLAB2018b使用自己的数据训练faster-RCNN步骤及报错解决_是江姑娘呀-CSDN博客
当然实际使用肯定会有bug,需要慢慢调。
只要注意整体的格式,就行。运行的时候比较占内存。
clc
clear all
load('alexnet.mat',"net")image = imageDatastore('C:\Users\1\Desktop\matlab_test_net',...
'IncludeSubfolders',true,'LabelSource','foldernames');
layersTransfer=net.Layers(1:end-3);numClasses = numel(categories(image.Labels));layers = [layersTransferfullyConnectedLayer(numClasses,'WeightLearnRateFactor',20,'BiasLearnRateFactor',20)softmaxLayerclassificationLayer];options = trainingOptions('sgdm', ...'MiniBatchSize',5, ...'MaxEpochs',20, ...'InitialLearnRate',0.0001);netTransfer = trainNetwork(image,layers,options)
这块基本都是默认,改个照片存储路径就行,注意img是照片格式。
test= load('F:/xunlian/test.mat'); %it is not necessary
options = trainingOptions('sgdm', ...
'InitialLearnRate', 1e-5, ...
'MaxEpochs', 20, ... %twenty times 训练深度不是越多效果越好,有可能适得其反,
'CheckpointPath', tempdir);
layer=netTransfer.Layers%这里输入的tsst不对,应该是一组数组,不是一个mat数。
naq = readtable('test_table_youdian.xls')%使用table 组合出数据,而不是从外部导入%naqq=table(test.gTruth.DataSource.Source,)
%对这个naq进行处理file = [] ;
aaa = test.gTruth.LabelData.biaozhi;
for i =1:30file2=[file;test.gTruth.DataSource.Source{i}];%table2array(test.gTruth.LabelData(2,1))end
file=naq.imageFilename;
naqqq=table(file,aaa)
这一块数据类型主要做成table型,
有两种方法 一种是从mat文件中提出数据然后table()组合
还有一种就是readtable()读excel中的数据,看你个人情况选择。
这里面的数据其实是,路径和切割的点
训练需要一些时间(补充一个重点,需要加一个backgroud文件夹,因为这个模型本质是个分类模型,至少要二分类也就是有两个数据集,假如遇到这个报错,参考上一个博客)
之后将这个detector另存为mat格式
之后就是测试
img=imread("图片.jpg")
load('wangluo.mat')
[bbox,score,label] = detect(detector,img);
index = find(score>0.8);
bbox = bbox(index,:);
score = score(index,:);
label = label(index,:);
img = insertObjectAnnotation(img,'Rectangle',bbox,score);
img = insertShape(img,'Rectangle',bbox);
imshow(img)
测试图像如下所示:
很粗糙,但好在简单,方便,快。。。。。。
凑合用就行了,发论文就别想了。
这篇关于matlab使用Alexnet识别高速路牌的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!