【问题标题】:Generating good training data for haar cascades为 haar 级联生成良好的训练数据
【发布时间】:2015-05-15 08:37:41
【问题描述】:

我正在尝试构建用于对特定字体进行 OCR 的 haar 级联;每个字符一个分类器。

只需将字体绘制到图像上,我就可以生成大量训练数据。因此,计划是为每个字符生成正训练数据,并使用其他字符的示例作为负训练数据。

我想知道我应该在训练数据中加入多少变化。通常我会尝试一切,但我收集这些东西需要几天的时间来训练(对于每个角色!)所以一些建议会很好。

所以,有几个问题:

  • 训练算法是否识别出我不关心透明像素?或者,如果我将角色叠加在不同的背景上,效果会更好吗?
  • 我应该包含每个字符都显示有不同前缀和后缀的图像,还是应该单独处理每个字符?
  • 我应该包括角色放大和缩小的图像吗?我认为该算法几乎忽略了大小,并且无论如何都会缩小所有内容以提高效率?

谢谢!

【问题讨论】:

    标签: opencv haar-classifier


    【解决方案1】:

    训练算法是否识别出我不关心透明像素?或者如果我将角色叠加在不同的背景上会更好吗?

    您在训练数据部分中为图像提供的“噪音”越多,那么它就越稳健,但是训练所需的时间越长。然而,这是您的负面样本将发挥作用的地方。如果您有尽可能多的负训练样本和尽可能多的范围,那么您将创建更强大的检测器。话虽如此,如果你有一个特定的用例,那么我建议稍微调整你的训练集以匹配它,它会不太健壮但在你的应用程序中会更好。

    我应该包含每个字符以不同前缀和后缀显示的图像,还是应该单独处理每个字符?

    如果您想检测单个字母,请单独训练。如果您训练它检测“ABC”并且您只想要“A”,那么它将开始收到混合消息。只需训练每个字母“A”、“B”等,然后您的检测器应该能够在较大的图像中挑选出每个单独的字母。

    我应该包含角色放大和缩小的图像吗?我认为该算法几乎忽略了大小,并且无论如何都会缩小所有内容以提高效率?

    我不相信这是正确的。 AFAIK HAAR 算法无法缩小经过训练的图像。因此,如果您在 50x50 字母上训练所有图像,但图像中的字母是 25x25,那么您将无法检测到它们。如果你反过来训练和检测,你会得到结果。从小处着手,让算法为您改变大小(向上)。

    【讨论】:

      猜你喜欢
      • 2019-01-21
      • 2020-10-16
      • 2019-02-06
      • 2012-03-05
      • 2015-09-12
      • 2014-12-15
      • 2015-02-08
      • 2017-11-04
      • 2015-07-26
      相关资源
      最近更新 更多