【问题标题】:HaarTraining - MATLAB or OpenCV?HaarTraining - MATLAB 还是 OpenCV?
【发布时间】:2023-03-04 10:03:01
【问题描述】:

我必须训练多达 20 个 haar 分类器。我所拥有的是:

  1. 通过编译提供的cpp文件的传统命令行方法 在 OpenCV 发行版中
  2. MATLAB 中的级联训练 GUI

在命令行方法中,ObjectMarker 界面与 CGT、MATLAB 的 ROI 标记界面相比,非常不太友好

但是,每当我使用 CGT、MATLAB 时,即使对于 250 个正图像30000 个负图像(均使用视频文件创建)的小样本,它也无法显示:

"Could not create sufficient samples, either decrease the False Alarm Rate, decrease the number of stages or increase the number of negative images."

误报率已经设置为0,即要使用的+ve和-ve图像数量相等,阶段数已经是一个非常小的值,即10。我无法通过这个。

那些已经创建了高效工作的分类器的人,请指导我:

  • 我应该使用这两种方法中的哪一种?

  • 上面列出的方法有什么替代方法吗?

【问题讨论】:

    标签: matlab opencv computer-vision matlab-cvst haar-classifier


    【解决方案1】:

    您要检测什么样的物体?你使用什么样的负面图像?理想情况下,负图像应该是通常与您感兴趣的对象相关联的场景的大图像。

    编辑: 即使您提供 30K 负 图像,训练可能仍然没有足够的负 样本。 trainCascadeObjectDetector 函数通过运行检测器来为每个阶段生成负样本,该检测器由它目前在负图像上的阶段组成。如果检测器检测到任何物体,它们就会被构造为误报,并将它们用作下一阶段的负样本。根据您提供的负片类型,很可能在经过一定数量的阶段后,当前检测器不会检测到负片图像中的任何误报。

    您说过您的负面图像来自您房间的视频。问题可能是你所有的负面图像都太相似了。因此,您可能应该尝试在您的否定集中包含其他图像,以使其多样化。此外,您应确保在负面图像中包含包含您正在训练的手势以外的手势的图像。

    【讨论】:

    • 嗨@Dima。我正在使用一些人手手势的图像,例如向左、向右等发出信号。我使用的负面图像是从我房间的随机视频中提取的,除了感兴趣的对象之外,还有其他可见的对象。跨度>
    • 现在,正如下面的教程所建议的那样,我将选择大约 50 个正样本和 600+ 个负样本。 tuicool.com/articles/fqAFb2
    • 首先,您是否正在为每个手势训练一个单独的检测器,对吗?如果不是,你应该是。对于每个手势,您应该将其他类型的手势作为负面图像。
    • 是的,我正在为每个手势训练一个单独的检测器。问题是训练开始但停止(尽管最后一条消息是“Training is Complete”),中间说它没有达到负样本,即使我使用了 30K 样本来处理 500 个正样本。
    • 我已经编辑了答案。我希望这能澄清事情。祝你好运!
    猜你喜欢
    • 2012-06-13
    • 1970-01-01
    • 2015-12-07
    • 2013-04-09
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    相关资源
    最近更新 更多