以下解释大白话居多,公式较少,主要是为了理解原理,有不对的地方可以在评论区里讨论。
假设检索库1000张人脸,底库10000张人脸,top1正确的人脸有900张,错误的人脸有100张。
1. 先说一下我之前的统计人脸识别率的方式
输出一个top1的准确率为900/1000=90.00%。
2. 以上计算方式的问题
因为实际项目上需要一个阈值,而如步骤1的实验是给不出阈值的,而阈值T的给定又决定着在实际项目使用时候的识别率(通过率)和误识率。
3. 解释一下TAR@FAR这个概念
先看下面这个表格:
误识率 (FAR) | 识别率 (TRA) | 阈值 (thres) |
1.00% | 91.12% | 76.90% |
0.10% | 86.50% | 82.95% |
0.01% | 76.65% | 86.95% |
FAR: 错误接受的比例
TAR: 正确接受的比例
计算方式:根据FAR确定thres,再根据thres计算TAR
4. 计算TAR@FAR0.01
即在误识率1.00%的情况下,识别率的大小。
1)首先对以上top1错误的100张人脸相似度进行一个排序,例如相似度分布为1%、2%、......、99%、100%。那么要保证1.00%的误识别率,可以设置阈值thres为99.5%,这样100张top1错误的人脸中只有1张人脸大于该阈值,并发生误报。
2)上一步已经确定下来了阈值thres,现在拿该阈值对top1正确的900个人脸进行筛选,假设这900个人脸中,有800个人脸的top1的相似度大于99.5%的阈值,那么识别率(或通过率(或TAR))则为800/900=88.89%。
5. FAR越小,即要求误报率越低,那么对于的阈值就会越高,则识别率(或通过率)就会越低。