【问题标题】:OpenCV Haar classifier - is it an SVMOpenCV Haar分类器-它是SVM吗
【发布时间】:2014-04-28 23:00:27
【问题描述】:

我在工作中使用了 OpenCV Haar 分类器,但我一直在阅读关于 OpenCV Haar 分类器是否为 SVM 的相互矛盾的报告,谁能澄清它是否使用了 SVM?此外,如果不使用 SVM,Haar 方法与 SVM 方法相比有什么优势?

【问题讨论】:

    标签: opencv machine-learning svm haar-classifier


    【解决方案1】:
    • SVMBoosting(AdaBoost、GentleBoost 等)是特征分类策略/算法。支持向量机解决了一个复杂的优化问题,通常使用核函数,它允许我们通过在更高维度的特征空间中工作来分离样本。另一方面,boosting 是一种基于以智能方式组合大量“廉价”分类器的策略,从而实现非常快速的分类。那些弱分类器甚至可以是 SVM。

    • 类哈尔特征是一种基于积分图像的特征,非常适用于计算机视觉问题。

    也就是说,您可以将 Haar 特征与两种分类方案中的任何一种结合起来。

    【讨论】:

    • 那么我是否正确地说使用 AdaBoost 优于 SVM 的优势在于它允许分类器的训练速度比 SVM 更快?第二个问题,假设我的第一个问题是正确的,这会导致更快地检测视频流中的对象还是速度差异仅适用于训练阶段?
    • 这两种方法都是现成的,您可以尝试(例如使用 OpenCV)。我想说 SVM 更容易训练和评估(和理解)。然而,由于它们都是非参数的、避免过拟合的方法,我想我会同时尝试它们,看看哪一个给出了最好的验证结果。
    • 目前我正在使用 AdaBoost 实现 OpenCV Haar 分类器,它运行良好,但我希望能够解释代码背后发生的事情,因此我很感兴趣。
    • 好的:openCV 所做的是 1) 从图像中提取 Haar 特征 2) 训练包含阈值化某些特征的弱分类器(阅读 Viola&Jones 的原始论文了解更多信息) 3) 使用投票方案(这是 Adaboost 算法)。
    • 在分类阶段,第一个分类器是那些容易丢弃负样本(非对象图像)的分类器,因此进行了提升。
    【解决方案2】:

    这不是 SVM。这是文档: http://docs.opencv.org/modules/objdetect/doc/cascade_classification.html#haar-feature-based-cascade-classifier-for-object-detection

    它使用 boosting(支持 AdaBoost 和其他各种类似的方法 -- 都基于 boosting)。

    与评估速度有关的重要区别在级联分类器中很重要,并且它们基于阶段的提升算法允许非常快速的评估和高精度(特别是支持具有许多否定的训练),在此方面比 SVM 具有更好的平衡点特定的应用程序。

    【讨论】:

    • 那么说支持向量机仍然会更准确但以评估速度为代价是否正确? (通过评估速度,我假设是指识别实时视频流中的对象所花费的时间?)
    • @Colin747:非线性 SVM 可能更准确,但您必须尝试一下。是的,它可能很容易慢 1000 倍,这在这个领域是一个交易破坏者。
    猜你喜欢
    • 2012-06-25
    • 2015-01-14
    • 2012-03-02
    • 2019-08-15
    • 1970-01-01
    • 2013-01-20
    • 2014-06-02
    • 2011-08-04
    相关资源
    最近更新 更多