【问题标题】:OpenCV poor performance of Haar classifier trained by me我训练的 Haar 分类器的 OpenCV 性能不佳
【发布时间】:2017-12-10 23:55:26
【问题描述】:

我想使用 Haar 分类器来检测场景中是否存在车辆(目前仅尝试使用汽车)。由于我在网上没有找到很多经过训练的 XML 文件,所以我决定自己生成。

我发现了一些用于类似目的(训练计算机视觉算法)的车辆图像集,并使用它们创建了我自己的 XML 文件。已经快一周了,其中一些已经完成,所以我尝试使用它们,但结果很糟糕。我在网上找到的分类器工作得很好,至少看起来他们正在尝试检测车辆并以足够快的速度进行实时应用(可能是 5-10 FPS 左右)。

而我的使用 detectMultiScale() 使用相同的参数来分析帧可能需要几分钟,如果我传递不同的参数(例如增加最小尺寸、减小最大尺寸、增加缩放因子),它会运行得更快(可能 1 FPS ) 但绝对没有检测到任何值得注意的东西,从未检测到任何车辆,并且随机检测到一些沥青点作为车辆。

我在生成文件时哪里出错了?我完成这项任务的时间有限,而且这些分类器可能需要整整一周的时间来训练,所以我剩下的尝试很少。作为参考,我的方法是(遵循this 教程):

-取所有正负图像;如果没有提供负片图像,则从另一个数据集中获取负片图像,至少与正片一样多的负片

-生成与正数一样多的样本

-使用与建议相同的参数,除了图像大小(设置为给定数据集中图像的大小)和 nstages(设置为 10,因为 20 耗时太长)

-对于npos参数,我使用样本数的1/10,使用完整的样本数导致几个小时后“断言失败”,显然样本数不能与npos相同this 所以我给了自己一个安全边际。

TL;我自己训练的 DR Haar 分类器的性能比网上找到的要差得多(在时间和准确性方面),需要有关如何改进它的建议,而不是浪费一周的时间来训练它。

【问题讨论】:

  • npos 应该是 20 个阶段的阳性样本的 90% 左右,minHitRate 为 0.995。那个 yozr 分类器需要这么多 timr 来检测是一个提示,因为过采样而过于复杂。你能发布一些你的阳性样本吗?
  • 我在 Github 上找到了一个 project,它似乎完全符合您的要求,基于此 post。显然,它提供了一个cars.xml 文件,用于训练算法。

标签: opencv classification cascade haar-classifier


【解决方案1】:

这里有两个问题。一、分类器的准确率低。另一个,分类器运行太慢了。

您使用的参考似乎没有问题。这些步骤看起来很准确,我亲自按此顺序尝试过,并取得了不错的效果。

正如@Micka 所提到的,大约 90% 的原始样本数的 nPos 就足够了。 minHitRate 是一个可以更改的参数。您是否观察到训练时显示的数字?准确率如何提高,您的分类器是否停止训练(或者您是否在学习结束前使用训练好的参数?)?

对于检测速度慢,最可能的原因是您的训练数据没有快速学习的简单特征。您是否尝试对用于训练的数据进行检测?在那种情况下结果如何?编译器设置或高图像分辨率也可能是一个问题,但如果您尝试使用其他分类器使用相同的输入和设置,则不太可能。

如果您想尝试不同的方法(并拥有 GPU),YOLO V2 应该更快、更准确地完成这项任务。

【讨论】:

    猜你喜欢
    • 2019-01-10
    • 2019-01-21
    • 2014-02-14
    • 2012-03-05
    • 2011-05-06
    • 2012-06-07
    • 2015-12-06
    • 2014-04-05
    • 2020-10-16
    相关资源
    最近更新 更多