Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 过度拟合时OpenCV haar训练无限循环的解决方案是什么?_Image Processing_Opencv - Fatal编程技术网

Image processing 过度拟合时OpenCV haar训练无限循环的解决方案是什么?

Image processing 过度拟合时OpenCV haar训练无限循环的解决方案是什么?,image-processing,opencv,Image Processing,Opencv,我在openCV 2.4.3中运行Haar培训 我有10张底片和30张正片(我知道这是少量的) 正样本组织在“vec”文件中,负(背景)图像由存储图像路径的文本文件描述 对于如此少量的图像,存在一个完美的解决方案(所有背景图像分类为假,真实样本分类为真) 找到这个完美的解决方案后,openCV在icvGetHaarTrainingData()函数中进入一个无限循环 它希望找到级联失败的背景图像,但没有更多这样的图像,因此此函数永远停留在(;;)的循环中 icvGetBackgroundImage

我在openCV 2.4.3中运行Haar培训

  • 我有10张底片和30张正片(我知道这是少量的)
  • 正样本组织在“vec”文件中,负(背景)图像由存储图像路径的文本文件描述
  • 对于如此少量的图像,存在一个完美的解决方案(所有背景图像分类为假,真实样本分类为真) 找到这个完美的解决方案后,openCV在
    icvGetHaarTrainingData()函数中进入一个无限循环

    它希望找到级联失败的背景图像,但没有更多这样的图像,因此此函数永远停留在(;;)的
    循环中

    icvGetBackgroundImage()
    函数,在这个循环中调用,只是保持从硬盘加载被级联拒绝的相同图像

    有人知道我可以应用补丁或bug修复来解决这个问题吗

    我提出的一个可能的解决办法是让
    icvGetBackgroundImage()
    只加载每个文件一次,因为如果它被级联拒绝一次,它将始终被拒绝。但这是一个错误的调整,因为这个函数用于在
    cvCreateSamples()
    中生成“vec”文件,在这种情况下,我们确实希望它加载相同的文件几次

    第二种可能的修复方法-在vec文件中使用负面示例(如正面示例),而不是信息路径格式。这是一种通过不激活有问题的回调来克服无限循环的方法,但结果是导致崩溃的openCV错误。当负的“vec”文件达到EOF时会发生这种情况


    同时,通过直接更改openCV的源代码并重新编译二进制文件,我解决了这两个bug(无限循环和崩溃)。我将很快向openCV委员会提交我的更改。但我不敢相信我是唯一一个遇到这种问题的人…

    在这里发布了修复代码。请注意,原始openCV许可证也适用于它。

    你能发布你的代码吗?这将使故障排除变得更容易。OpenCV haar培训编译为exe,我正在从命令提示符激活exe文件。没有我的密码。问题出在openCV内部。我使用以下行调用这个exe文件:P:\Bin\opencv\u haartraining.exe-data P:\zDB\u CC\TrainData\cv-vec P:\zDB\u CC\TrainData\cv.vec-bg P:\zDB\u CC\TrainData\cv\u neg.txt-npos 10-nneg 30-nstages 5-nsplits 1-mem 1000-nonsym-minhitrate 0.99799-maxfalsalarm 0.039811-mode BASIC-bt-GAB-maxtresplits 0-minpos 500-w 16-h您可以发布吗您对这里的源代码所做的更改?我现在和你有同样的问题,抱歉。这很难。我在几个文件中进行了更改。给gmail的DanielHsH写封电子邮件,我会把我所做的更改和文档发送给你。现在它就像一个魔术!顺便说一句为了训练cascade进行良好的检测,您需要至少100万个负面示例。假设每轮你选择1000个例子,在10个阶段后,平均每个阶段cascade拒绝50%的否定,那么你将用完~1000000个例子。