bad_alloc() 错误,而 haar 级联训练

bad_alloc() error while haar cascade training

本文关键字:haar 级联 错误 alloc bad      更新时间:2023-10-16

我们已经在哈尔级联训练中遇到了一个星期的问题。实际上,我们正在按照本教程 http://coding-robin.de/2013/07/22/train-your-own-opencv-haar-classifier.html 来创建级联xml文件。但是在最后一个命令上

opencv_traincascade -data classifier -vec samples.vec -bg negatives.txt
-numStages 20 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 45
-numNeg 45 -w 90 -h 100 -mode ALL -precalcValBufSize 1024
-precalcIdxBufSize 1024

我们收到一个错误:

terminate called after throwing an instance of 'std::bad_alloc'
what(): std:: bad_alloc
Aborted (core dumped)

图像的规格为:45张正片和45张负片(尺寸均为90 X 100)。我已经确保samples.vec存在于同一个文件夹中,并且还尝试使用2048作为precalcValBufSize参数。请帮助我们!

内存已用完。您有以下几种选择:

  • 使用具有更多内存的 64 位计算机
  • 使用较小尺寸的正面训练图像。 24x24 或 32x32 是典型的。 64x64 被认为是大。
  • 使用 LBP 或 HOG 功能而不是 Haar。Haar功能比其他功能占用的内存多几个数量级。

顺便说一下,您的负面图像不应与正面图像的大小相同。负片图像应该是包含通常与感兴趣对象相关的背景的大型场景。 opencv_traincascade自动扫描它们以查找有用的负样本。