Matlab 如何计算用于目标检测/识别的混淆矩阵?

Matlab 如何计算用于目标检测/识别的混淆矩阵?,matlab,plot,image-recognition,confusion-matrix,Matlab,Plot,Image Recognition,Confusion Matrix,我已经解决了一个共32个类别的图像识别问题。我得到了结果并计算了它的平均精度。我需要绘制混淆矩阵。我正在处理YOLOv2,并为检测网络创建了混淆矩阵。希望这有帮助:) testObjects是真标签,PredLabel是预测标签 TestData是imdsTest的imageDatastore() testObjects = testData.UnderlyingDatastores{1, 1}.Files ; %'C:\Users\admin\Desktop\Img_Data\Flower1

我已经解决了一个共32个类别的图像识别问题。我得到了结果并计算了它的平均精度。我需要绘制混淆矩阵。

我正在处理YOLOv2,并为检测网络创建了混淆矩阵。希望这有帮助:)

testObjects是真标签,PredLabel是预测标签
TestData是imdsTest的imageDatastore()

testObjects = testData.UnderlyingDatastores{1, 1}.Files  ; %'C:\Users\admin\Desktop\Img_Data\Flower1\Flower101.jpg'
testObjects = erase(testObjects,fullfile(pwd,imgFolderName)); %'\Flower1\Flower101.jpg'
testObjects = categorical(extractBetween(testObjects, "\","\")); % Flower1 - array

predLabels = zeros(2,1);  
predLabels = categorical(predLabels); % Prelocation
for iPred = 1:length(testObjects)  
    [~, idxx] = max(cell2mat(detectionResults.Scores(iPred))); % max of all the bounding box scores
    multiLabels = detectionResults.Labels{iPred,1};  % find label of max score
    if isempty(multiLabels) == 1  
        predLabels(iPred,1) = {'NaN'};  
        predLabels(iPred,1) = standardizeMissing(predLabels(iPred,1),{'NaN'});  
    else  
       predLabels(iPred,1) = (multiLabels(idxx,1));  
    end  
end  
predLabels = removecats(predLabels);

plotconfusion (testObjects,predLabels) %confusionchart(testAsts,predLabels)