Adaboost Cascade TPR和FPR

时间:2015-05-27 16:04:56

标签: opencv machine-learning object-detection adaboost

当我们使用AdaBoost进行对象检测时,我们需要为每个阶段设置TPR和FPR(AdaBoost的迭代)。

我们需要高TPR和低FPR。

据我所知,结果我们有:

总TPR =(阶段1 TPR)(阶段2 TPR)...... (阶段N TPR)

例如0.9 * 0.9 * 0.9~ = 0.729

总FPR =(第1阶段FPR)(第2阶段FPR)...... (第N阶段FPR)

并且对于FPR 0.5 * 0.5 * 0.5 = 0.125

因此,您使用较低FPR的阶段越多,但TPR也会减少。

那么为什么不在每个阶段使用阶段TPR = 0.9999(9)和FPR = 0.00001并且阶段数量很少?

必须如何选择每个阶段的TPR和FPR?它如何依赖于阶段数?

1 个答案:

答案 0 :(得分:2)

你是如何计算总fpr和tpr以及观察到更多阶段的总fpr和tpr减少。我们之所以不使用0.999999的tpr和0.000001的fpr,是因为它会导致增强过程产生具有许多弱分类器的阶段以实现这些速率。你的目标是整个级联的高tpr和低,但是如果训练具有如此极端值的阶段,你只需要一个阶段,因为它已经是具有这些速率的良好分类器。

因此,我们通常使用tpr = 0.99和fpr = 0.5等值的原因是为了保持阶段小而简单,并使用级联结构从错误的分类中恢复。基本上,tpr为0.99,fpr为0.5意味着任何阶段必须检测99%的阳性样本,同时允许将50%的阴性样本分类为阳性。任何被第一阶段归类为正面的东西然后被传递到第二阶段然后处理误报。其中最多接受50%,然后传递到第三阶段,依此类推。许多阶段的优势在于,如果第一阶段拒绝样本,您就不必评估任何其他阶段,这可以为您节省大量时间。

假设我们有fpr = 0.5,tpr = 0.99和20个阶段,那么最终的fpr是0.5 ^ 20 = 9.5 * 10e-7,最终的tpr是0.99 ^ 20 = 0.82。

根据算法允许您选择的内容,您可以计算相应的fpr和tpr。例如,如果给出阶段数N和最终fpr,则可以取最终fpr的第N个根来获得阶段fpr。如果给出阶段和最终fpr,则使用log10并且可以计算至少为了达到最终fpr所需的阶段数(N = log10(最终fpr)/ log10(阶段fpr)。