【问题标题】:Adaboost Cascade TPR and FPRAdaboost 级联 TPR 和 FPR
【发布时间】:2015-08-09 20:20:37
【问题描述】:

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

我们需要高 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 就越低,但 TPR 也会降低。

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

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

【问题讨论】:

    标签: opencv machine-learning object-detection adaboost


    【解决方案1】:

    您在如何计算总 fpr 和 tpr 以及观察到随着阶段越多总 fpr 和 tpr 减少的方法是正确的。我们不使用 0.999999 的 tpr 和 0.000001 的 fpr 的原因是,它会导致提升过程生成具有许多弱分类器的阶段来达到这些速率。您的目标是整个级联的高 tpr 和低 tpr,但是如果您训练具有如此极端值的阶段,则只需要一个阶段,因为它已经是具有这些速率的良好分类器。

    因此,我们通常使用 tpr = 0.99 和 fpr = 0.5 之类的值的原因是为了保持阶段小而简单,并使用级联结构从错误的分类中恢复。本质上,0.99 的 tpr 和 0.5 的 fpr 意味着任何阶段都必须检测 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)。

    【讨论】:

    • 我有一个物体检测任务,最终 tpr 0.82 是不可接受的,所以我需要减少阶段数或提高阶段 tpr 吗?是不是在某些阶段 adaboost 无法达到所需的 tpr 或 fpr?我怎样才能检测到它?如果我使用 1 个阶段和许多弱分类器,问题会简化为特征选择?
    • 您可以随时减少阶段数,但这也会增加 fpr。增加阶段 tpr 是另一种选择(例如阶段 tpr = 0.999 => 最终 tpr = 0.98),但这会炸毁您的阶段。阶段 tpr 总是可以到达(例如,如果阶段总是回答 1,它的 tpr 将是 1)。对于阶段 fpr,它不能保证,但它是有道理的,因为否则学习将永远不会停止。你必须使用增强的级联吗?根据您使用的功能和您的目标预测时间,使用其他东西可能会更好。
    猜你喜欢
    • 2019-01-11
    • 2014-08-05
    • 2013-09-01
    • 2015-08-28
    • 2020-12-30
    • 2020-12-28
    • 2017-11-06
    • 2019-08-22
    • 1970-01-01
    相关资源
    最近更新 更多