【问题标题】:All my questions about opencv_traincascade [closed]我关于opencv_traincascade的所有问题[关闭]
【发布时间】:2014-01-10 18:58:44
【问题描述】:

我花了几个星期来尝试创建一个好的级联分类器,但似乎这个过程充满了神秘色彩。我有很多问题:

1) 为什么opencv给我们的信息这么少?

2)它需要更多的正面图像还是负面图像?

3) 正面图像应该是多大的尺寸?和负面形象?它们必须具有相同的大小吗?

4) 如果我想为单个路标创建分类器,那么像this 这样的单个正图像就足以使用 opencv_createsamples 创建样本?

5) 创建一个在android应用上使用的分类器是更好的Haar还是LBP?

6) 合适的阶段数是多少?

7) minHitRate 和 maxFalseAlarmRate 的正确值是多少?

【问题讨论】:

    标签: android opencv object-detection object-recognition cascade-classifier


    【解决方案1】:
    1. 提供信息,只是读起来有点无聊http://docs.opencv.org/doc/user_guide/ug_traincascade.html
    2. 出于多种原因,您需要更多负片图像。首先,当正面图像多于负面图像时,它有时会崩溃,其次 - 大部分时间训练的重点是在负面图像中寻找被检测为对象的东西并修复错误。
    3. 据我所知,这并不重要,但相关的是他们自己的负面形象。它们应该接近你物体的真实背景,我的意思是如果它是一个交通标志,不要把在你办公室点击的图片作为背景,把点击的图片放在外面。
    4. 对我来说,有一张我的对象的图片就足够了,使用 opencv_createsamples 生成 1500 个样本,但最好有几张图像 10、20 来生成 100、200 个样本,然后将它们全部组合到一个训练集中.
    5. Haar 的训练和运行时间较慢,但有时更精确,所以我选择 LBP。
    6. 可以逐级训练级联,一开始就做10个-15个阶段,然后逐个添加。所有阶段都记录下来,不必每次都从第一阶段开始。

    7.我没有玩过这个参数,我总是将它们保留为默认值,但您可以在这里查看about traincascade paremeters, samples, and other... 以获得解释。

    同时检查这个问题并回答How to train cascade properlyFAQ - HAARTraining

    【讨论】:

    • 最后一个问题:我需要更多的正样本还是负图像?
    • 更多负面图片。我修复了答案的第二个项目符号。我通常给 1500 正面,3000 负面
    • 好的,我试试。非常感谢!
    • 我找到了这个post。在这里,他们使用比负图像更多的正样本,并且他们使用一个公式来计算要传递给 -npos 的正确样本数量。你知道吗?
    • 是的,我知道有一个公式,但提供更多负样本更容易。顺便说一句,我忘了提到不要在 numPos 参数中使用与 vec 文件中相同数量的正数。即,如果您的 vec 文件包含 1500 张正面图片,请在 numPos 参数中传递 1200 或 1300 之类的内容。
    猜你喜欢
    • 2015-07-08
    • 2023-03-23
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 2011-10-17
    • 2013-05-13
    相关资源
    最近更新 更多