python - Haar分类器参数调整

标签 python python-2.7 opencv object-detection haar-classifier

我正在尝试训练一个 haar 分类器来检测图像中的乐高积木人脸,但我真的很难调整参数。

我拍摄了 3 个乐高积木的照片(每个 50 张图片)并使用 opencv 我将它们的头部分离为 40x40 图像。

示例图片如下:

enter image description here

除此之外,我还使用了 500 张空白背景图像作为数据集中的负片图像。 我创建了路径并生成了 samples.vec 文件,如 opencv 文档中所述。

之后,我尝试训练我的 haar 分类器。我使用了在另一个类似项目中找到的这些参数: opencv_traincascade -data classifier -vec samples.vec -bg negatives.txt\ -numStages 10 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 1000\ -numNeg 600 -w 40 -h 40 -mode ALL -precalcValBufSize 1024\ -precalcIdxBufSize 1024

结果真的很糟糕。分类器识别不存在的乐高积木,奇怪的是它不识别预期的乐高面孔。

我真的很难调优这个分类器,因为参数列表很大而且我不知道如何设置值来产生高效的分类器并且不需要很长时间来训练。

如有任何帮助,我们将不胜感激,尤其是关于如何选择参数以及“普通”计算机的预期训练时间是多少。感谢您的宝贵时间!

(p.s.:训练时长为2小时,我觉得太快了,可能是表现不好的原因)。

最佳答案

在这里看看我的回答 - Generating good training data for haar cascades

如果您的训练集确实是您发布的那张图片的大小,那么 40x40 很可能只是宽度和高度的过大方式。 2 小时对于训练来说是可以的,但在 0.999 时我不希望它很快达到 10 个阶段。

这是没有真正“正确”答案的问题之一。不过,我建议使用更高分辨率的图片。

评论问题的答案 第一条评论——在你将要使用的图像上训练你的分类器,所以如果它们是低分辨率的,那么就坚持使用低分辨率。这可能只是一个更难的问题。

第二条评论 - 如果您只在一个场景中进行训练,即如果您有一个具有独特背景的乐高照相亭,并且您只检测到 int 帽子,那么请使用除正面特征之外的所有特征。 IE。背景。它成为一个更容易的 CV 问题,当我说负面是“其他一切”时,我的意思是你试图检测的内容。如果你想检测在伦敦街头走来走去的乐高人,那么你需要一个比他们都在同一背景下大得多的负片集。它甚至可能有助于使您的背景具有独特的颜色或其他东西,我不确定。

关于python - Haar分类器参数调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46116661/

相关文章:

python - Round 函数不四舍五入?

python - 如何限制使用 random.choice() 选择列表项的次数

python - 函数调用堆栈 : keras_scratch_graph Error

python - python中的字符串解码方法错误

c++ - OpenCV(3.4.1) 错误 : Null pointer

python - 加入 Python 中的多个线程之一

python-2.7 - 如何访问 Gstreamer 注册表以以编程方式获取可用插件的列表

opencv - 如何检查轮廓是否为椭圆?

opencv - 从 opencv 中的立体装备拍摄的图像生成的点云

python - 在 PyInstaller 下生成 x32 和 x64 版本