blufr 算法的理解---理解的不对的,欢迎拍砖

来源:互联网 发布:主机mac地址怎么查 编辑:程序博客网 时间:2024/05/21 08:56

现在已知的算法是lfw 有6000对,3000 对正样本,3000 对负样本,利用十重交叉验证的方式来计算识别率。

虽然在现在的lfw 数据集上已经可以达到99% 但是并不能保证在真实的场景下有比较好的性能。

作者提出了一种新的方法,主要是扩展了原来基础上只有6000 对正负样本的计算。

现在作者把lfw 数据集分成一部分训练集,一部分测试集,训练集的样本平均在3400 多张左右,训练集的选取和测试集的选取都基于一些规则(比如要求训练集有1500 个人,其中包含至少437人有2个以上的人脸,因为总共有5749 个人,所以测试集包含其余的(5729-1500)个人,大概是1243 个人有2个以上的人脸,经过测试里面含有2个人以上的人是 1680个,跟paper 里面讲的是吻合的)。

训练集对于我们的作用目前在我看来是用来求主成分分析的W 矩阵,本文要求的时候降维之后为400.

作者把原来的verfication 的任务扩展为 更接近于实际场景的verfication +DIR

verfication 任务是只校验两个人脸是不是一个人。 

以第一轮为例:

作者训练部分的样本为:2952  那么相应的测试部分的样本为(13233-2952)=10281 

对于测试样本经过pca 之后是降低维度之后的样本,先求norm,(如果不求norm 会对结果有什么影响)

10281 个样本之间两两求相似度.(作者采用的trick是求一个下三角的方式)

这样得到是所有10281 之间样本的相似度。 我们还可以得到这些样本之间那些是一类的,那些不是一类的

我们可以得到不是一个人的总的个数和他们的计算分值。(10281*10281-10281)/2 所有对的个数

其中负样本对的个数为:52612506  正样本对的个数为:231834 

我们把这些负样本的score 从大往小排,根据:

thresholds(~isZeroFAR & ~isOneFAR) = impScore( falseAlarms(~isZeroFAR & ~isOneFAR) );

这样我们得到每个falseAlarms 点处的阈值:

FAR  false accept ratio (是将其他人看做你的概率)

计算方法是:非同人分数>T/非同人比较次数

我的理解为:因为负样本为52612506 个,如果FAR 为0.0001 那么允许错分的样本数目为 52612506*0.0001=5261.2506个,那么由于负样本的score 是从上往下排的,所以只允许上面得分高的被错分掉,

那么阈值要设置为0.8293

那么我们可以计算 VR 就是正样本里面score>0.8293 的值, 与全部正样本的比值。

对DIR 我现在的理解为:

DIR 是把测试集分成三部分:一部分是gallay set G(only one image per subject was selected),由于测试集包含1242 个人, 那么除了gallay 以外的其他的人脸组成PG, 其他的人脸组成PN, 平均下来,PG 大概有4350 张图片,PN 有3249 个人的4357 张图片。(互斥的关系)

以第五轮为例: PG 有4417 个, PN 有4053 个样本


FAR 的选取方式跟VR 的方式是一样的。阈值的选取方式。


对于PN 里面的样本,都是负样本,那么我们在每一行找一个与gallay 里面的图片相似度最高的得到一个列向量。

把这些元素降序排列,

对于face verification 这个任务,我们采用ROC 曲线来刻画。

对于DIR 这个任务,采用CMC 曲线来刻画





0 0
原创粉丝点击