【问题标题】:dlib-19.1: Initialize dlib::matrix from image (e.g. dlib::cv_image) for DNN trainingdlib-19.1:从图像(例如 dlib::cv_image)初始化 dlib::matrix 以进行 DNN 训练
【发布时间】:2017-02-14 03:12:28
【问题描述】:

我目前正在尝试使用我存档的图像训练 DNN(OCR 上下文...每个类的输入图像是数千个固定大小的小图像的聚合图像)。

我有一些代码可以打开并将聚合图像正确分割成小的 OpenCV cv::Mat's。我的问题是,似乎没有办法

  • 直接在 dlib::cv_image 上训练 DNN(可以包裹在 cv::Mat 周围;我收到 500 多行编译器错误)或
  • 无需复制每个元素即可轻松地将 cv::Mat 转换/包装为 dlib::matrix

我很确定我在这里遗漏了一些东西,任何指针将不胜感激。

注意:我要编译的唯一变体是调用 dlib::dnn_trainer::train() 带有一个 dlib::matrix 向量(大小在编译时固定)和一个带有无符号长标签的向量(无符号标签没有compile),尽管 train() 在这两种类型上都是模板化的。有什么指点吗?

【问题讨论】:

    标签: c++ opencv deep-learning dlib


    【解决方案1】:

    您不必在编译时修复 dlib::matrix 的大小。只需调用 set_size() 即可。另见http://dlib.net/faq.html#HowdoIsetthesizeofamatrixatruntime

    此外,如果您想使用 dlib::matrix 以外的其他内容作为输入,您可以这样做。您只需要定义自己的输入层。您必须实现的接口已在此处完整记录:http://dlib.net/dlib/dnn/input_abstract.h.html#EXAMPLE_INPUT_LAYER。您还可以查看现有的输入层作为示例。但请务必阅读文档,因为它会回答您可能遇到的问题。

    【讨论】:

    • 谢谢,我错误地认为基于 generic_image 的所有东西都会神奇地与输入层一起工作。现在将使用矩阵。另一个问题(但不想用太多细节问题污染 SO):我正在尝试验证我使用 caffe 和 dlib 获得的训练结果。我设法让网络开始训练,但未能获得可比较的结果。试图尽可能忠实地重建我的训练方案,但找不到关于如何在 dlib 中设置重量衰减和动量的信息。这是目前可能的,还是自动设置?
    • 您可以将这些值设置为您想要的任何值。所有这些都在两个介绍示例程序中进行了讨论。除此之外,还记录了整个 API。此页面上有一个深度学习部分,其中包含指向所有内容的链接:dlib.net/ml.html。另外,dlib.net/faq.html#Whereisthedocumentationforobjectfunction
    • 找到了:它是训练器的一个属性,可以在构造时明确设置:dlib::dnn_trainer trainer(net, dlib::sgd(float weight_decay, float moment));
    【解决方案2】:

    Dlib 有一个很棒的功能来完成这项任务:http://dlib.net/imaging.html#assign_image,但它会复制每个元素

    这里是如何使用它的示例代码:

    // mat should be greyscale image (8UC1)
    void cv_to_dlib_float_matrix(const cv::Mat& mat, dlib::matrix<float>& res)
    {
        cv::Mat tmp(mat.cols, mat.rows, CV_32FC1); 
        cv::normalize(mat, tmp, 0.0, 1.0, cv::NORM_MINMAX, CV_32FC1);
        dlib::assign_image(res, dlib::cv_image<float>(tmp));
    }
    

    【讨论】:

      猜你喜欢
      • 2015-11-10
      • 2017-12-02
      • 2021-02-26
      • 2019-07-19
      • 2017-02-18
      • 2016-11-15
      • 2018-04-19
      • 2018-12-14
      • 2019-12-26
      相关资源
      最近更新 更多