行人再识别之评估标准(CMC曲线)
CMC曲线总结
1、概念
CMC曲线全称是Cumulative Match Characteristic (CMC) curve,也就是累积匹配曲线,同ROC曲线Receiver Operating Characteristic (ROC) curve(受试者工作特征曲线)一样,是模式识别系统,如人脸,指纹,虹膜等的重要评价指标,尤其是在生物特征识别系统中,一般同ROC曲线一起给出,能够综合评价出算法的好坏。
2、计算方法
CMC曲线就是算一种top-k的击中概率,主要用闭集测试。比如有n个注册样本,现在想测试性能,测试样本依次和n个注册样本算取一个距离,然后排序,看类类样本位于前top-k,最后统计得到CMC曲线。
注:top-k的意思就是第k次命中
3、举例
参见博客https://www.researchgate.net/post/How_is_CMC_produced_recognition_rate_vs_Rank_for_unknown_faces
①比如说有三个类(class),每个类对应一个测试(test),然后设置了相似函数,越大则越可能为同一类。
情况一: 表1
Class1 |
Class2 |
Class3 |
|
Test1 |
0.9 |
0.8 |
0.7 |
Test2 |
0.8 |
0.9 |
0.8 |
Test3 |
0.7 |
0.6 |
0.9 |
如果存在上述情况(每一类对应的测试在该类测试下识别率都是最大的),则说明rank1=100%,rank2=100%,rank3=100%,可以说一次命中。
情况二: 表1
Class1 |
Class2 |
Class3 |
|
Test1 |
0.8 |
0.9 |
0.7 |
Test2 |
0.9 |
0.8 |
0.7 |
Test3 |
0.7 |
0.6 |
0.9 |
如果存在上面的情况(存在一类对应的测试在其他类上面得到的识别效果比在本类上面的识别效果好),则说明rank1=66.6%,rank2=100%,rank3=100%,可以说前两次命中。
对66.6%的第一种理解:因为提前已经针对三个类提出了三种测试,如果在第一次测试中没有验证到第一类的识别率是最高的,那么可判定T1—C1失败(未命中),而表二中的T2—C2、T3—C3已经确定识别率最高(即命中),换一种说法就是需要两次机会才能 “答对”结果,那么从整体看的话,就是66.6%的准确率。
可以把三类测试当作三次做题的机会,而选项也有三个,那么表二就是使用两次机会答对的前提下第一次答错的几率。
②比如说有五个类(class),每个类对应一个测试(test),然后设置了相似函数,越大则越可能为同一类。
Class1 |
Class2 |
Class3 |
Class4 |
Class5 |
|
Test1 |
0.9 |
0.7 |
0.6 |
0.5 |
0.8 |
Test2 |
0.8 |
0.9 |
0.7 |
0.6 |
0.5 |
Test3 |
0.7 |
0.8 |
0.9 |
0.7 |
0.6 |
Test4 |
0.6 |
0.9 |
0.6 |
0.6 |
0.7 |
Test5 |
0.5 |
0.8 |
0.7 |
0.9 |
0.5 |
如果出现上述较为复杂的情况,T1—C1、T2—C2、 T3—C3(三次一次命中)、 T4—C2、 T5—C4(没有一次命中)。
Rank 1: 60% (tests 1,2,3 are among the N=1 top matches ) 3/5
Rank 2: 80% (test 1,2 ,3 ,4 are among N=2 top matches) 4/5
Rank 3: 80% (test 1,2 ,3 ,4 are among N=3 top matches) 4/5
Rank 4: 100% (test 1,2 ,3 ,4 and 5 are among N=4 top matches) 1
Rank 5: 100% (test 1,2 ,3 ,4 and 5 are among N=5 top matches) 1
3、规律总结
①Rank i 的值是趋于1的。也就是说,给的机会越多(即测试次数越多),那么识别的准确度越好;
②如果每次测试对应的类都是识别率最高的话,那么就是一次命中,即Rank i=100%(i=1,2,3,…);
③如果一个样本按照匹配程度从大到小排列后,到最后一项,才匹配到正确标签,这就说明分类器不太好,把最应匹配的判别成最不应匹配的。
附计算CMC曲线的函数代码:
function accuracy = calrank(distance,rankvalue,info)
for k = 1:length(rankvalue)
count = 0;
for i = 1:size(distance,1)
rankinfo = distance(:,i);
%[score,position] = sort(rankinfo,'ascend');
[score,position] = sort(rankinfo,info);
for j = 1:rankvalue(k);
if (position(j)==i)
count = count + 1;
break;
end
end
accuracy(k) = count/size(distance,1);
end
end
注:distance代表全比对的分数,那么对角线是类类样本的比对分数。info为排列顺序,升序为’ascend’,降序为’descend’。 rankvalue是我们需要选取的top-k的值,可以赋值为rankvalue=[1,2,3,4,5,…,k];
最广泛使用的行人再识别评价方法为累积匹配特性曲线(CMC)的绩效指标。之所以采用这个度量,是因为行人再识别被直观地视为一个排序问题,其中图库中的每个元素都是基于其与探针的比较进行排序的。排列正确的匹配值等于或小于一个特定值的概率被绘制成与图库集大小的关系图。
以下是LZ对CMC曲线top-k的总结
行人再识别之评估标准(CMC曲线)相关推荐
- 基于双阶段度量学习的跨模态行人再识别
基于双阶段度量学习的跨模态行人再识别 摘要: 由于从可见光和热成像摄像头采集而来的图像风格迥异,跨模态行人再识别面临着巨大挑战.目前的深度学习方法,大都利用度量学习来获取区分性特征.然而,现有的度量学 ...
- 武汉大学 计算机学院 曹瑀,利用人体部位特征重要性进行行人再识别.pdf
利用人体部位特征重要性进行行人再识别.pdf (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 第42卷 第1期2017年1月武 汉 ...
- 超阿里、大华,澎思科技行人再识别(ReID)技术刷新三大数据集记录
整理 | Jane 出品 | AI科技大本营(ID:rgznai100) [导读]不久前,江苏省某市公安通过 AI 技术分析监控摄像头中的信息,抓获了一个偷盗电动车的嫌疑人员.监控摄像头在现场拍到的是 ...
- CVPR 2019 | 旷视研究院提出Re-ID新方法VPM,优化局部成像下行人再识别
全球计算机视觉三大顶级会议之一 CVPR 2019 将于当地时间 6 月 16-20 日在美国洛杉矶举办.届时,旷视研究院将带领团队远赴盛会,助力计算机视觉技术的交流与落地.在此之前,旷视每周会介绍一 ...
- 车牌识别数据集_行人再识别数据集
目前行人再识别的数据集比较常用的有:Market-1501. DukeMTMC-reID.CUHK03,后面有时间会上传如何处理数据集的代码.目前常使用的方式:数据集下有以下几个文件夹: train: ...
- 难度炸裂!DeepChange:一个新的超大规模的换衣行人再识别数据集
关注公众号,发现CV技术之美 传统的行人再识别限定了研究范围是短时范围的再识别(short-term re-id),即假设数据集中的行人的衣服不会发生变化.近年来,可换衣的行人再识别研究引起了学者的兴 ...
- 无需聚类,杭电学者提出基于软化相似度学习的无监督行人再识别
请点击: 无需聚类,杭电学者提出基于软化相似度学习的无监督行人再识别 查看详情. 标注成本越来越高,无监督学习越来越受重视. 该文有非官方实现的开源代码,欢迎参考.
- ECCV 2020 | 清华提出基于循环关联的自监督行人再识别, 无标签ReID仅需两个摄像头!...
作者:清华大学电子系三年级博士生 王重道 本文将分享来自清华大学的电子系在读博士生王重道等人在ECCV的工作.他们提出了一种简单有效的自监督行人再识别解决方案--CycAs,它的良好性能证明了针对任务 ...
- 澎思科技新出行人再识别(ReID)算法,刷新三大数据集最高记录
点击我爱计算机视觉标星,更快获取CVML新技术 导语:在视频监控越来越普及的时代,行人重识别成为最炙手可热的技术,也是各大视频监控厂商技术争夺的焦点.澎思科技最近提出的新算法刷新了三个权威数据集新纪录 ...
最新文章
- Visual Studio中的快捷键
- codeblock生成64位dll_Pythonnet/clr : Unable to find assembly xxxx.dll
- Activiti工作流的应用示例
- Python 技术篇-基于PyHook3+threading多线程实现鼠标单击事件和双击事件的识别实例演示
- STM32移植RT-Thread后的串口在调试助手上出现:(mq != RT_NULL) assert failed at rt_mq_recv:2085和不能接收数据问题讨论
- 关于vue项目中添加less,less-loader不能运行的问题
- 总是想逃避不想去面对(又是发牢骚的一天)
- 通过图书编号查询python_文字版图书管理-python练习
- 选择排序 自带时间复杂度分析
- java 反射 内存_Java内存到反射入门
- cad动态块制作翻转_装X必学,手把手教你做CAD动态属性块
- bind() c语言,c/c++ 标准库 bind 函数详解
- 反演控制 matlab,基于matlab的反演程序
- Java导出源程序_JAVA导出项目的所有源代码到一个文件
- Connected to the target VM, address: '127.0.0.1:60885', transport: 'socket'
- D8(YT88)加密狗破解与加密工具
- 泽众AutoRunner软件的使用方法,以测试win10环境下系统自带的计算器为例
- 前后端利用accessToken与refreshToken无感刷新
- CONTINUOUS CONTROL WITH DEEP REINFORCEMENT LEARNING
- 【智慧家科教2023新春首训】东方昱老师畅谈新发展之路:前途是光明的 未来是可期的