1. 程式人生 > >人臉識別-閉集測試指標CMC曲線 人臉識別-閉集測試指標CMC曲線

人臉識別-閉集測試指標CMC曲線 人臉識別-閉集測試指標CMC曲線

人臉識別-閉集測試指標CMC曲線

2017年11月24日 09:32:57 閱讀數:535
																				<div class="tags-box space">
							<span class="label">個人分類:</span>
															<a class="tag-link" href="https://blog.csdn.net/cuixing001/article/category/7306898" target="_blank">CMC曲線																</a>
						</div>
																							</div>
			<div class="operating">
													</div>
		</div>
	</div>
</div>
<article class="baidu_pl">
	<div id="article_content" class="article_content clearfix csdn-tracking-statistics" data-pid="blog" data-mod="popu_307" data-dsm="post">
							<div class="article-copyright">
				版權宣告:本文為博主原創文章,未經博主允許不得轉載。					https://blog.csdn.net/cuixing001/article/details/78621094				</div>
							            <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-2c6a5211c9.css">
					<div class="htmledit_views" id="content_views">

做FaceIdentification時候,需要用到CMC曲線,橫座標為rank,縱座標是faceIdentification Rate。

在繪製CMC曲線之前,做好rowNames,colNames,simMatrix三個矩陣的準備,分別為m個樣本的標籤ID,n個註冊集中ID(無重複有序),分數矩陣simMatrix是m*n的。每行代表一個樣本的得分。

simMatrix(i,j)表示第i個樣本在第j個標籤ID的得分,分越大就越相似。分數一般在[0,1]之間。

%% 行代表樣本ID,列代表註冊的人臉ID(每個唯一)
rowNames = string
(Labels); % m*1的 colNames = string(uniqueLabel'); % 1*n的 simMatrix = scoreMatrix; % m*n的

[orderMatrix,index] = sort(simMatrix,2,‘descend’);

%% plot CMC 曲線
nums = size(orderMatrix,1);
rankN = 20;
accuracy = zeros(1,rankN);
for i = 1:rankN % 計算rank1到rankN
correctNumber = 0;
for j = 1:nums
currentColNamesIndex = index(j,1

:i);
isIn = ismember(rowNames(j),colNames(currentColNamesIndex));
if isIn
correctNumber = correctNumber+1;
end
end
accuracy(i) = correctNumber/nums;
end
figure;
hold on;
plot(1:i,accuracy,‘r-’)
grid on
xlabel(‘rank’);
ylabel(‘faceIdentification Rate’)
title(‘CMC曲線’)


上述程式碼實現原理點這裡