OpenCV Traincascade.exe 崩溃且无输出

Posted

技术标签:

【中文标题】OpenCV Traincascade.exe 崩溃且无输出【英文标题】:OpenCV Traincascade.exe crashes without output 【发布时间】:2016-03-03 13:38:54 【问题描述】:

这是我第一次尝试使用opencv的级联训练机制。我正在尝试基于一个正图像和 3 个负图像的小图像集。我关注了instructions of the official opencv documentation。

负片图片由描述文件bg.txt引用:

Negative/t1.jpg
Negative/t2.jpg
Negative/t3.jpg

负像有不同的尺寸(都在“1920 x 一些”像素范围内)。

正像用于生成矢量文件

opencv_createsamples.exe -img Positive/p1.jpg -num 5000 -w 100 -h 60 -show -vec vecFile.vec

到目前为止一切正常,没有错误。我猜矢量文件vecFile.vec 不可读是正常的,因为它存储了 5000 张图像。

当我现在想通过使用来应用级联训练时

opencv_traincascade.exe -data TrainData/ -vec vecFile.vec -bg bg.txt -w 100 -h 60 -npos 10 -nneg 10

程序崩溃,没有任何输出(“程序已停止工作”)。知道为什么会这样吗?我是不是忘记了一些重要的参数?

我使用的是 Windows 10 和 opencv 3。

【问题讨论】:

【参考方案1】:

当我去年尝试训练级联时,我遇到了同样的问题。我发现它非常占用内存,所以如果您使用 5000 张以您编写的大小(-w 100 -h 60)采样的图像,您的 PC 可能会出现内存不足(或其他诸如堆大小限制之类的东西) .在我看来,trainscascade 将所有样本数据放在 RAM 中进行训练。

您可能必须尝试更小的尺寸,例如您提到的文档示例,-w 24 -h 24,并少量增加,直到获得合适的尺寸但没有崩溃。

【讨论】:

这似乎真的解决了它,非常感谢。有趣的是,在它崩溃之前,我有一个内存不足异常(它写在控制台输出中)并且已经减少了它。所以我没想到这个问题仍然是一个问题,因为控制台输出不存在。 24 x 24 听起来很小 :-)

以上是关于OpenCV Traincascade.exe 崩溃且无输出的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV Traincascade.exe 崩溃且无输出

opencv_annotation.exeopencv_createsamples.exeopencv_traincascade.exe

错误“无法填充临时阶段的训练数据集。”在使用 OpenCV 的 traincascade 工具时

使用opencv训练分类器时,traincascade训练报错:Train dataset for temp stage can not be filled.解决方法

OpenCV中的Haar+Adaboost:minHitRate与maxFalseAlarm

OpenCV中的Haar+Adaboost:分类器训练过程