从图像创建Haar级联显示错误

问题描述 投票:0回答:1

我想创建自己的车牌级联。我已经找到了一个称为Cascade-Trainer-GUI的GUI。我正在使用Windows 10。您可以从此处下载gui:

http://amin-ahmadi.com/cascade-trainer-gui/

我有两个带有正负图像的文件夹。每个文件夹包含约150张图像。当我运行该程序时,它会在几秒钟内完成,但是我没有得到cascade.xml文件。我得到了.txt文件,在该txt文件的末尾说:

OpenCV Error: Insufficient memory (Failed to allocate 1357715212 bytes) in cv::OutOfMemoryError, file D:\cv\opencv_3.2.0\sources_withTextModule\modules\core\src\alloc.cpp, line 52

我已经阅读了文档,并且已经在youtube上观看了一些视频,但是我不知道自己在做什么错。

这些是我尝试训练级联时PC的性能:

enter image description here

我已经尝试清理磁盘空间并关闭所有其他程序,以便可以增加RAM内存,但仍然遇到相同的错误。

我试图将缓冲区的大小从1024减小到256。在那种情况下,它开始工作,但是5-6个样本(10分钟)后显示错误Insufficient Count of Samples,我试图将最大要素的参数数量从100减少%到70%,但同一时间后出现相同错误。

您可以从这里下载图像,我将它们分为正面和负面:

https://www.sendspace.com/file/rygohr

您知道我做错了什么,该怎么办才能解决?我应该在此GUI中选择哪些参数?

还有,是否有某种在线创建haar级联的应用程序?

python opencv haar-classifier
1个回答
0
投票

我相信您的问题是由于用于训练的图像补丁的大小。在原始的Violaj-Jones论文中,他们使用了20x20像素的色块,从而产生了18万多个功能。为了在级联的每个阶段中找到最佳的特征集,增强算法必须在每次迭代中找到最佳的特征/阈值组合(弱分类器是感知器)。这涉及计算具有M个可能阈值的N个特征的熵,其中M与训练图像的数量一致。然后,在每个提升迭代中需要MxN个存储空间。假设此程序在内部使用浮点精度,则每次提升迭代大约需要MxNx4字节的内存。对于20x20图像补丁程序,这仅是180000x(119 + 114)x4 = 167,760,000字节,即大约0.16 GB,但是如果训练补丁程序的大小较大或您所设置的基本特征集的数量可能更大。用途大于原始的Violaj-Jones论文(在本文中,基本特征集为4,但还有另一种集称为haar-like)。然后,我相信您需要配置训练图像补丁的大小。

© www.soinside.com 2019 - 2024. All rights reserved.