人脸识别---开集测试评价指标ROC曲线

时间:2022-12-08 10:25:26

摘要:本文主要讲开集测试指标ROC曲线。

开集测试更加符合实际的场景。一般要得到ROC曲线需要准备三个数据集,一个是gallery集,称为注册集,第二个是包含gallery集的ID的probe集,和不包含gallery集的ID的probe集,我们只需要计算类类比对分数和类间比对分数,这是一种1:n的比对方式。 代码如下:

function [result,pre_FPR,pre_TPR]=drawROC(scores,labels,axisROC)

[sort_scores,idx]=sortrows([scores labels],[1 2]);
sort_label=sort_scores(:,2)';
sort_scores=sort_scores(:,1)';
pos=sum(labels(:));
neg=length(labels)-pos;

TPR=fliplr(cumsum(fliplr(sort_label),2));
FPR=fliplr(cumsum(fliplr(1-sort_label),2));

acc=TPR+(neg-FPR);
acc=acc/(neg+pos);

[bestAcc,bestThresh]=max(acc);
TPR_atBestThresh=TPR(bestThresh)/pos;
FPR_atBestThresh=FPR(bestThresh)/neg;
bestThresh=sort_scores(bestThresh);

acc=[acc neg/(neg+pos)];
pre_TPR=[TPR/pos 0];
pre_FPR=[FPR/neg 0];

调用方式

scores = [inter intra]';
labels = [zeros(size(inter,2),1);ones(size(intra,2),1)];
[result,pre_FPR,pre_TPR]=drawROC(scores,labels,[0.001;1;0;1]);

可以得到的曲线


人脸识别---开集测试评价指标ROC曲线