【问题标题】:train hog out of memory训练猪失忆
【发布时间】:2018-06-05 16:49:11
【问题描述】:

我正在使用 opencv sample train hog,我在函数加载样本中有 2200 个 pos 图像和大约 80000 个负数,我收到此错误

正在加载负图像...OpenCV 错误:OutOfMemoryError 中的内存不足(无法分配 46080 字节),文件 D:\openCv\opencv\sources\modules\core\src\alloc.cpp,第 52 行 OpenCV 错误:创建时断言失败 (u != 0),文件 D:\openCv\opencv\sources\modules\core\src\matrix.cpp,第 433 行 在抛出 'cv::Exception' 的实例后调用终止 what(): D:\openCv\opencv\sources\modules\core\src\matrix.cpp:433: error: (-215) u != 0 in function create

我得到这个的功能是:

void load_images(const String & dirname, vector< Mat > & img_lst, bool showImages = false)
{
    vector< String > files;
    glob(dirname, files);

    for (size_t i = 0; i < files.size(); ++i)
    {
        Mat img = imread(files[i]); // preia imagine
        if (img.empty())            // treci peste daca este imagine invalida
        {
            cout << files[i] << " is invalid!" << endl;
            continue;
        }

        if (showImages)
        {
            imshow("image", img);
            waitKey(1);
        }

        if (i == files.size() - 1)
        {
            cout << "jjj"<< i;
        }
        cout << files[i] << endl;

        img_lst.push_back(img);
        if (i == files.size() - 1)
        {
            cout << "has been  pushed";
        }
    }
}

我怎么能改变这个功能不收到这个错误谢谢:)

【问题讨论】:

  • 您是为 64 位还是为 32 位编译。如果您正在编译 32 位,请尝试使用 64 位平台。
  • 调整图片大小?您要加载多少数据?使用任何系统监控工具进行监控,看看您分配的内存是否比您意识到的要多。如果您尝试以 10MB 的大小加载 10,000 张图像,则您需要有大约 10GB 或更多的内存,具体取决于它们的存储方式。这可能超出了您系统的能力。
  • @BennoGeels 我认为是 64,但我不知道在哪里检查,问题是两天前一切正常,一切正常,但现在我想为负文件训练两次它并没有不再工作了,在视觉上我只是收到一个错误,调试器粉碎了我在 qt 中发布的内容,我的图像是 64 128
  • @tadman:实际上,应该是 >200GB。 (没有 .reserve 调用 img_list)。这是假设 10MB 未压缩图像。如果您有一个 10 MB 的 JPEG,它的内存可能会大得多。
  • @MSalters 也许将这两个值相乘而不是猜测会给我一个更好的答案。感谢您指出这一点!

标签: c++ opencv


【解决方案1】:

我在这里看到的主要错误是缺少std::vector::reserve 调用。你有一个相当不错的估计你将有多少图像(忽略你跳过的空图像)。由于您不调用.reservevector 将需要使用指数增长策略,该策略通常会过度分配 1.5 或 2 倍。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-19
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    相关资源
    最近更新 更多