所有关于 opencv_traincascade 的问题

5

我已经尝试了几个星期来创建一个好的级联分类器,但似乎这个过程被神秘化了。我有很多问题:

1) 为什么OpenCV提供的信息这么少?

2) 它需要更多的正面样本还是负面样本?

3) 正面样本应该有什么大小? 负面样本呢? 它们必须都有相同的大小吗?

4) 如果我想为单个路标创建分类器,像这张图片这样的单个正面图像就足够了吗?可以用OpenCV_createsamples创建样本吗?

5) 在Android应用程序中使用的分类器更好是Haar还是LBP?

6) 什么是正确的阶段数?

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

1个回答

6
  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.我没有调整这些参数,我总是将它们保留为默认值,但您可以在此处了解有关traincascade参数、样本和其他内容的说明。

还要查看这个问题和答案:如何正确训练级联常见问题 - HAARTraining


最后一个问题:我需要更多的正样本还是负样本图像? - user2919607
更多的负面图片。我修复了我的答案中的第二个要点。 通常我会给出1500个正面图片,3000个负面图片。 - Dabo
好的,我会尝试。非常感谢你! - user2919607
我发现了这个帖子。在那里,他们使用比负样本更多的正样本,并使用一个公式来计算要传递给-npos的正确样本数。你知道这方面的一些内容吗? - user2919607
这是我要分享的链接FAQ - HAARTraining,以下是从该链接中复制的内容:已达到所需的叶子误报率。分支训练终止——无法使用这些负图像构建具有良好误报率的分类器。请确保您的负图像确实为负 =),maxfalsealarm应在[0.4-0.5]之间。 - Dabo
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接