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

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

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

  • 我很确定我在这里缺少什么,任何指针将不胜感激。

    注意:我要编译的唯一变体是调用dlib::dnn_trainer::train(),其 vector 为dlib::matrix(大小在编译时固定),而 vector 为无符号长标签(无符号标签未编译),尽管train()在这两种类型上都是模板化的。有指针吗?

    最佳答案

    您不必在编译时固定dlib::matrix的大小。只需调用set_size()就可以了。另请参见http://dlib.net/faq.html#HowdoIsetthesizeofamatrixatruntime

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

    关于c++ - dlib-19.1:从图像(例如dlib::cv_image)初始化dlib::matrix以进行DNN训练,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39877949/

    10-12 23:08