我需要关于opencv_traincascade参数的建议,用于我的训练集

我有两个数据集:第一个包含340张尺寸为440×200的图像,每张图像上的对象尺寸在9×10像素到25×15像素之间。另一个是包含570张尺寸为440×200的负样本图像。我使用以下参数进行训练:-numPos 250 -numNeg 22000 -w 10 -h 10 –numStages 24 –minHitRate 0.995 -maxFalseAlarm -maxDepth 20 -maxWeakCount 600 -mode ALL

我的数据集是从之前标记好的图像中创建的。

我还尝试了-numPos 320和300。第一次使用-numPos 320时,在第4阶段以“正样本数量不足”的错误结束。我重新运行了相同的级联,使用-numPos 300。它又多了一个阶段,但还是以同样的错误结束。第三次我选择了-numPos 250,它在第2阶段失败了,第1阶段的误报率为0!但在第二阶段为0.028。

因此,我很乐意听到任何建议,但我的问题是:使用这么少的正样本训练级联是不可能的吗?但即使在前几个阶段,它也给我非常低的误报率。所以它可以成为一个好的分类器吗?


回答:

关于你的第一个问题:

实际上并不清楚每种图像需要多少。还真的取决于你想要检测的对象,它到底有多复杂。不过,这是可能的,例如,在这个网站的实验中使用了40个正样本和600个负样本,http://coding-robin.de/2013/07/22/train-your-own-opencv-haar-classifier.html

然而,对象越复杂,我认为你需要训练更多的正负图像。如果我没记错的话,大约三到四年前我做的一个手部检测项目,需要大约800多个正图像和几乎两倍的负图像,我的朋友和我才对检测率感到满意。

基本上,训练的图像越多,你的对象检测就越准确。

你的第二个问题:

你必须注意的是,分类器的误报率至少与检测率一样重要。通常,当一对一的误报率没有严格控制时,整个分类器将无法使用。

还要注意,在大多数情况下,误报错误率大于检测错误率,这使得误报率在设计分类器时成为一个难以最小化的标准。

尝试通过以下方式理解这一点:http://www.uic.edu/classes/idsc/ids572cna/Model%20evaluation.pdf,还有另一个更容易理解和学习如何训练分类器的文本:http://note.sonots.com/SciSoftware/haartraining.html

所以当你问:“它在前几个阶段就给我非常低的误报率。所以它可以成为一个好的分类器吗?”我的回答是,为什么不呢?

另外,如果可能的话,尝试将负图像增加到正图像的两倍。这是我的常规做法。

希望我的回答对你有帮助。祝你好运。如果有任何问题,请随时评论。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注