发布网友 发布时间:2022-04-22 10:11
共1个回答
热心网友 时间:2022-05-22 01:45
如果某个识别对象和训练库中的某一个很匹配,那么就会有很高的相似度。
如果识别对象不在训练库中,那么就算是返回了结果,相似度也不会很高,只不过是数值上的最优解。
所以,设置一个相似度的阀值(THREADHOLD), 最匹配误差(leastDistSq)大于这个阀值就可以判断为不在训练库中!
追问能否请教一下相似度的阀值(THREADHOLD)应该怎么样设定呢?依据什么来设定?
追答这个可以使用测试来得出,你用一些匹配的人脸去识别,再用一些不匹配的人脸去识别,分别将运行时最终的leastDistSq输出出来。这样就得到了两组数据,你的THREADHOLD只要能将两组数据很好的区分开就好了!
假如你得到两组leastDistSq数据:
匹配的: 0.2, 0.12, 0.15, 0.3, 0.21
不匹配的:0.5, 1.12, 3.15, 5.3, 3.21
那么,可以看到所有匹配的leastDistSq都小于0.4,反之亦然。所以如果我们来用0.4来做阀值,所有的均可以正确区分。
如果你的人脸识别算法本身精确度不高的话,匹配的数值和不匹配的可能有重叠的部分,只要找一个数字,能够尽可能多的正确区分就可以了。