OpenCV - LBP Traincascade 无法通过第 0 阶段的预计算,但 HAAR 工作正常?

标签 opencv

我运行 opencv_traincascade,但我从未达到阶段 0 的预计算时间。

编辑:我的问题似乎与 LBP 训练有关。我将 featureType 更改为 HAAR,下面的分类器在几分钟内完成了训练

编辑:预计算时间以秒为单位,因此在第 0 阶段,您应该看到它在 10 秒内达到预计算,但我看到它长达 40 秒。预计算时间可能从一个阶段到另一个阶段稳步增加,然后在后期突然急剧增加到半小时(如果你正在处理数千个样本,甚至可能比这更长,但我还没有到那一步)

(我将继续更新这篇文章,填充我已经理解的东西,这些东西阻止我理解预先计算,并且可能会找出为什么 HAAR 训练会起作用而 LBP 不起作用。它可能只需要查看启动阶段循环的源代码)

问题

我运行 opencv_traincascade,但我从未达到阶段 0 的预计算时间。

我使用的是 2014 年购买的 MacBook Air。

Processor 1.3 GHz Intel Core i5
Memory 4 GB 1600 MHz DDR3
Graphics Intel HD Graphics 5000
Software OS X 10.9.4 (13E28)

我的终端看起来像这样,并且在我的事件监视器中运行了大约 390%(真的吗?)的 CPU 和 4 个线程。

===== TRAINING 0-stage ===== <BEGIN POS count : consumed x : x NEG count : acceptanceRatio y : 1

虽然我已经尝试创建许多分类器,但为了分享我们都可以涉及的东西,我将引用一个汽车检测教程,因为我得到相同的结果不管它是否是我自己的训练或不。此培训师已发布,我看到其他人引用过它,所以我认为它有效。

https://www.youtube.com/watch?v=WEzm7L5zoZE

在我的桌面上我有:

在 cars.info 文件夹中包含相对文件路径和信息 (1 0 0 100 40) 的 pos 文件夹;
包含负样本的 neg 文件夹的相对路径的 bg.txt 文件;
一个名为“data”的空数据文件夹;
正样本的 cars.vec 文件。我可以查看矢量文件和图像。

原来100x40有550个正样本,用createsamples创建vec文件后是48x24

100x40有500个负样本

这里是createsamples命令,供引用:

opencv_createsamples -info cars.info -num 550 -w 48 -h 24 -vec cars.vec

然后我运行以下命令:

opencv_traincascade -data data -vec cars.vec -bg bg.txt -numPos 500 -numNeg 500 -numStages 2 -w 48 -h 24 -featureType LBP

PARAMETERS: cascadeDirName: data vecFileName: cars.vec bgFileName: bg.txt numPos: 500 numNeg: 500 numStages: 2 precalcValBufSize[Mb] : 256 precalcIdxBufSize[Mb] : 256 stageType: BOOST featureType: LBP sampleWidth: 48 sampleHeight: 24 boostType: GAB minHitRate: 0.995 maxFalseAlarmRate: 0.5 weightTrimRate: 0.95 maxDepth: 1 maxWeakCount: 100

无论我尝试训练什么,这是我从未见过的达到 LBP 预计算的输出;我如何尝试更改样本大小、图像分辨率、minHitRate 或降低 numPos。

===== TRAINING 0-stage ===== <BEGIN POS count : consumed 500 : 500 NEG count : acceptanceRatio 500 : 1

请询问我未能提供的任何信息。我道歉。

我读到过有关培训师陷入无限循环的报道,并且需要修改源代码。但是,我希望可以避免这种情况,因为这似乎对其他人(至少对作者)有用。

感谢大家在过去的所有问题和答案中帮助我完成各种编码项目。

最佳答案

我以前遇到过这样的问题。我解决的办法是把precalcValBufSize和precalcIdxBufSize的值分别设置为0和0。LBP好像预计算不行。但是,将它们设置为 0 后效果很好。LBP 的训练过程比 Haar 快得多。

关于OpenCV - LBP Traincascade 无法通过第 0 阶段的预计算,但 HAAR 工作正常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25477841/

相关文章:

python - 基于示例的修补-如何计算轮廓和等值线的法线

opencv - 构建并安装 OpenCV。默认安装路径与头文件预期的不同

python - 使用opencv识别OCR期间的元音字符

c++ - 我实际上如何在捕获的一半图像上设置光流?

java - OpenCV - 安卓 : java. lang.IllegalArgumentException: bmp == null

python - 在 Raspberry Pi 上使用 Python 和 OpenCV 的低 FPS

c++ - opencv连接细线

python - 人脸图像聚类

python - 使用 Pytesseract OCR 对具有表结构的图像进行错误字符识别

c++ - OpenCV - 如何使用 Eclipse C++ IDE 将在/home 中编译的 opencv 库优先于来自/usr/lib/的那些