scan-context/src/example/longterm_localization/NCLT/2012-01-15/3_Inference/PRcurve/drawPRcurve_NCLT_SCI.m

101 lines
3.0 KiB
Matlab

clear
%% Path info
Dataset = 'NCLT';
Method = 'SCI';
% ResultsDir = strcat('Result/', Dataset, '/', Method, '/');
ResultsDir = 'Result/';
%% Params
FigIdx = 1;
figure(FigIdx); clf;
TopNindexes = [25];
nTopNindexes = length(TopNindexes);
%% Main
SequenceNames = dir(ResultsDir); SequenceNames(1:2, :) = []; SequenceNames = {SequenceNames(:).name};
nSequences = length(SequenceNames);
for ithTopN = 1:nTopNindexes
TopNidx = TopNindexes(ithTopN);
for ithSeq = 1:nSequences
% seq info
ithSeqName = SequenceNames{ithSeq};
ithSeqPath = strcat(ResultsDir, ithSeqName, '/');
ithSeqPRcurveData = dir(ithSeqPath); ithSeqPRcurveData(1:2, :) = []; ithSeqPRcurveData = {ithSeqPRcurveData(:).name};
% load
nCorrectRejectionsAll = load(strcat(ithSeqPath, ithSeqPRcurveData{1}));
nCorrectRejectionsAll = nCorrectRejectionsAll.nCorrectRejections;
nCorrectRejectionsForThisTopN = nCorrectRejectionsAll(TopNidx, :);
nFalseAlarmsAll = load(strcat(ithSeqPath, ithSeqPRcurveData{2}));
nFalseAlarmsAll = nFalseAlarmsAll.nFalseAlarms;
nFalseAlarmsForThisTopN = nFalseAlarmsAll(TopNidx, :);
nHitsAll = load(strcat(ithSeqPath, ithSeqPRcurveData{3}));
nHitsAll = nHitsAll.nHits;
nHitsForThisTopN = nHitsAll(TopNidx, :);
nMissesAll = load(strcat(ithSeqPath, ithSeqPRcurveData{4}));
nMissesAll = nMissesAll.nMisses;
nMissesForThisTopN = nMissesAll(TopNidx, :);
% info
nTopNs = size(nCorrectRejectionsAll, 1);
nThres = size(nCorrectRejectionsAll, 2);
% main
Precisions = [];
Recalls = [];
Accuracies = [];
for ithThres = 1:nThres
nCorrectRejections = nCorrectRejectionsForThisTopN(ithThres);
nFalseAlarms = nFalseAlarmsForThisTopN(ithThres);
nHits = nHitsForThisTopN(ithThres);
nMisses = nMissesForThisTopN(ithThres);
nTotalTestPlaces = nCorrectRejections + nFalseAlarms + nHits + nMisses;
Precision = nHits / (nHits + nFalseAlarms);
Recall = nHits / (nHits + nMisses);
Acc = (nHits + nCorrectRejections)/nTotalTestPlaces;
Precisions = [Precisions; Precision];
Recalls = [Recalls; Recall];
Accuracies = [Accuracies; Acc];
end
% draw
figure(FigIdx);
plot(Recalls, Precisions, 'LineWidth', 2); % commonly x axis is recall
title('SCI at NCLT');
xlabel('Recall'); ylabel('Precision');
% axis equal;
xlim([0, 1]); ylim([0,1]);
grid on; grid minor;
hold on;
end
lgd = legend(SequenceNames, 'Location', 'best');
lgd.FontSize = 9;
lgd.FontWeight = 'bold';
%% save
% fileName = strcat('./results/', testDate, '_PRcurveWithEntropyThresVarying.png');
% saveas(gcf, fileName)
%
% fileName = strcat('./results/', testDate, '_EntireWorkSpace.mat');
% save(fileName)
end