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

我们需要高TPR和低FPR。

据我了解,我们有:

总TPR =(stage1 TPR)(stage2 TPR)...(stageN TPR)

例如0.9 * 0.9 * 0.9〜= 0.729

总FPR =(stage1 FPR)(stage2 FPR)...(stageN FPR)

与FPR 0.5 * 0.5 * 0.5 = 0.125相同

因此,您使用的FPR越多,获得的FPR越低,但是TPR也会降低。

那么,为什么不每个阶段都使用阶段TPR = 0.9999(9)和FPR = 0.00001且阶段数少呢?

在每个阶段如何选择TPR和FPR?它如何取决于阶段数?

最佳答案

您对如何计算总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(final fpr)/ log10(stage fpr)。

08-24 15:45