MATLAB用于绘制ROC曲线的代码,用于使用深度学习Reset50模型进行对象检测和分类

13意见(过去30天)
Bayomatthew.
Bayomatthew. 2020年3月5日
回答: Sinan Salim.2021年8月15日21:47
我需要从下面的代码中绘制ROC曲线。关于如何进行的任何输入,都会得到很大的赞赏。
IMDS = imageageAtastore(imagefolder,'labelsource','foldernames','uppordubfolders',true);%minsetcount = min类别中的最小图像(tbl {:,2});
%限制图像的数量以减少%运行此示例所需的时间。maxNumImages=100;minSetCount=min(最大图像数,minSetCount);
%使用splitEachLabel方法修剪集合。imds=splitEachLabel(imds,minSetCount,“随机化”);
%注意,每个设置现在都有完全相同数量的图像。CountAckeLabel(IMDS)%加载净定网络net = resnet50()[培训集,testset] = spliteachlabel(IMDS,0.3,'Acquory');%从训练和测试集创建AugmentedimageGageTastore,以将IMD中的%图像调整为网络所需的大小。iconageize = net.layers(1).Inputsize;AugmentedTrainingset = AugmentedimageGedAtastore(图像化,培训集,'ColorPrepossing','Gray2RGB');AugmentedTestset = AugmentedimageDataStore(图像,测试集,'ColorPrepossing','Gray2RGB');%获得第二卷积层W1 = Net.Layers(2)的网络权重;重量;
%缩放并调整可视化的权重W1 = MAT2Gray(W1);W1 = Imresize(W1,5);
%显示网络权重的蒙太奇。第一层中有96个单独的%重量。图蒙太奇(W1)标题('第一个卷积层重量')FeatureLayer ='FC1000';TrainingFeatures =激活(Net,AugmentedTraininget,FeatureleLayer,...'Minibatchsize',32,'Outputas','列');%从培训训练训练中获取培训标签=培训队。
%列车使用快速线性求解器的多字符SVM分类器,并将%'观察'设置为“列”以匹配用于训练%功能的布置。分类器= fitcecoc(培训方法,培训师,......'学习者','linear','编码','Onevsall','观察','列');%Extract测试功能使用CNN TestFeatures =激活(NET,AugmentedTestset,FeatureLayer,...'Minibatchsize',32,'Outputas','列');
%将CNN图像特征传递给经过训练的分类器predictedLabels=predict(分类器,testFeatures,'ObservationsIn','columns');
%获取已知标签testLabels=testSet.labels;
%使用混乱矩阵制表结果。confmat = confusionmat(testlabels,predightlabels);
%将混淆矩阵转换为百分比形式Confmat = BSXFUN(@ Rdivide,Confmat,Sum(Confmat,2))%显示平均精度(DIAG(CONFMAT))
testImage=readimage(testSet,1);testLabel=testSet.Labels(1)%Create augmentedImageDatastore可在使用激活提取%图像功能时自动调整图像大小。ds=增强图像数据存储(图像大小、测试图像、“颜色预处理”、“灰度2RGB”);
使用CNN ImageFeatures =激活(NET,DS,FeatureLayer,'Outputas','列')提取图像特征;%使用分类器预测标记=预测(分类器,ImageFeatures,'观察','列')进行预测

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始打猎吧!

翻译人