Opencv traincascade无法填充临时阶段

Opencv traincascade无法填充临时阶段,opencv,opencv3.0,stage,training-data,cascade-classifier,Opencv,Opencv3.0,Stage,Training Data,Cascade Classifier,我有20个阳性样本和500个阴性样本。我使用createsample实用程序创建了.vec文件。现在,当我尝试使用traincascade.exe实用程序训练分类器时,遇到以下错误: 我曾研究过许多针对面临类似问题的人的解决方案,但没有一个有效 我尝试过的事情:1。增加负样本量2。检查negative.txt文件3中存储的负片(或背景图像)的路径。改变不同的参数 以下是有关路径的一些信息:我的工作目录包含以下文件:1。Traincascade.exe 2。正像文件夹3。负片图像文件夹4。vec

我有20个阳性样本和500个阴性样本。我使用createsample实用程序创建了.vec文件。现在,当我尝试使用traincascade.exe实用程序训练分类器时,遇到以下错误:

我曾研究过许多针对面临类似问题的人的解决方案,但没有一个有效

我尝试过的事情:1。增加负样本量2。检查negative.txt文件3中存储的负片(或背景图像)的路径。改变不同的参数

以下是有关路径的一些信息:我的工作目录包含以下文件:1。Traincascade.exe 2。正像文件夹3。负片图像文件夹4。vec文件5。Negative.txt(具有负片图像文件夹中图像路径的文件)

My Negative.txt文件具有负片图像文件夹中图像的绝对文件路径。我还尝试将文件路径更改为以下格式:

NegativeImage文件夹\Image1.pgm

但是没用!我也试过正反斜杠


我已经用尽办法来更改文件路径或进行任何修改,使这项工作

首先:NumStages 1和maxDepth 1是故意的吗?
查看Opencv的源代码(,),该错误在函数中时抛出

bool CvCascadeClassifier::updateTrainingSet( double& acceptanceRatio)
无法填写负片样本数negCount=500。
之前,阳性样本的一切都正常(屏幕上打印的pos计数行就是证明)。
当imgReader.getNeg(img)返回false时,无法对源代码negCount进行深入挖掘,这意味着它无法提供任何图像,而当源否定列表为空时,就会出现这种情况。 因此,您必须集中精力为算法提供正确的负片列表。
有两种方法可以解决这个问题:确保读取Negative.txt,所有路径都是规则的,并且列表中的每个图像都可以定期读取。
文件名是“Negative.txt”还是“Negatives.txt”


不管怎样,由于正面和负面的样本太少,你无法训练任何功能,只有让你了解训练过程是如何运作的,这才是有用的

首先:NumStages 1和maxDepth 1是故意的吗?
查看Opencv的源代码(,),该错误在函数中时抛出

bool CvCascadeClassifier::updateTrainingSet( double& acceptanceRatio)
无法填写负片样本数negCount=500。
之前,阳性样本的一切都正常(屏幕上打印的pos计数行就是证明)。
当imgReader.getNeg(img)返回false时,无法对源代码negCount进行深入挖掘,这意味着它无法提供任何图像,而当源否定列表为空时,就会出现这种情况。 因此,您必须集中精力为算法提供正确的负片列表。
有两种方法可以解决这个问题:确保读取Negative.txt,所有路径都是规则的,并且列表中的每个图像都可以定期读取。
文件名是“Negative.txt”还是“Negatives.txt”


不管怎样,由于正面和负面的样本太少,你无法训练任何功能,只有让你了解训练过程是如何运作的,这才是有用的

我成功地解决了这个问题,并对分类器进行了训练。然而,我不能100%肯定我所做的改变是如何起作用的

这就是我所做的: 我正在使用Excel生成Negative.txt文件。我将输入一个图像的文件路径并增加图像文件名(因为我的图像名为image1、image2、image3…)。因此,前面提到的格式是:

C:\OpenCV-3.0.0\OpenCV\build\x64\vc12\bin\Negative\Image1.pgm


最后将文件另存为Unicode txt文档。但是,将其保存为unicode txt文档会导致问题中所述的错误。我将它保存为一个文本(制表符分隔)文件,它工作正常。

我能够解决这个问题,并成功地运行分类器训练。然而,我不能100%肯定我所做的改变是如何起作用的

这就是我所做的: 我正在使用Excel生成Negative.txt文件。我将输入一个图像的文件路径并增加图像文件名(因为我的图像名为image1、image2、image3…)。因此,前面提到的格式是:

C:\OpenCV-3.0.0\OpenCV\build\x64\vc12\bin\Negative\Image1.pgm


最后将文件另存为Unicode txt文档。但是,将其保存为unicode txt文档会导致问题中所述的错误。我将它保存为一个文本(制表符分隔)文件,它成功了。

谢谢您的回复!关于阶段的数量,我最初从10个阶段开始。那没用。我只是尝试了不同的-numStages值,看看它是否会有任何不同,因为我无法找出错误的确切原因。使用默认的maxDepth值。它是Negatives.txt。我进一步减少了负片的数量,并查看了每一张图像的路径。我仍然遇到同样的错误。我之所以对负片样本使用低计数,只是因为我认为这样更容易调试,并有助于我更好地理解训练过程。负片图像的大小(宽度x高)是多少?所有文件都是.pgms吗?如果是,试着至少放一个png。大小真的重要吗?我认为图像尺寸过大会减缓训练过程。但它应该还能训练对吗?目前,我的图像尺寸很大(1920x1080)。我也尝试过更小的图片,但我得到了同样的错误。我想象这个错误很小,只是想弄清楚它是什么。一个常见的错误是拍摄与窗口大小一样小的负片。ypur案例中的60x30。感谢您的回复!关于阶段的数量,我最初从10个阶段开始。那没用。我只是尝试了不同的val