【问题标题】:Parameters of dlib shape predictor modeldlib 形状预测器模型的参数
【发布时间】:2019-05-28 11:20:27
【问题描述】:

我在自定义数据上训练了 dlib 形状预测器模型(使用 train_shape_predictor.py 文件)。结果我得到了 .dat 文件。现在我有一个图像,其中包含一个已训练 dlib 预测模型的对象。我将如何使用该预测模型来预测输入图像中的形状? 我看到Dlib shape prediction documentation,提到 dlib 形状预测器接受两个参数:

  1. 一张图片
  2. 一个盒子(Dlib 矩形)

现在这些参数是什么,就我而言,因为我只有一张图像(包含一个对象,将通过训练好的模型进行预测)?

我们将非常感谢您在这方面的任何帮助。

【问题讨论】:

    标签: python computer-vision training-data dlib


    【解决方案1】:

    如文件所述:

    • 图像是一个包含 8 位灰度或 RGB 的 numpy ndarray 图片。 --> 在此处传递您的图像
    • box 是在内部开始形状预测的边界框。 --> 如果你已经有了对象的边界框(例如,一张脸在图像中的位置),请在此处传递。

    一个典型的应用是:

    rects = dlib.simple_object_detector(image)
    
    for rect in rects:
       shape = dlib.shape_predictor(image, rect)
    

    【讨论】:

    • 是否需要使用dlib对象检测器。有没有其他方法,我不必使用 dlib 对象检测器?你能解释一下吗?
    • @user8611018 形状预测器只需要一个图像帧和一个 dlib 矩形对象来估计形状。因此,如果您不想使用 dlib 对象检测器,那么在这种情况下,首先使用您的自定义对象检测器并找到边界框的点 (rmin, cmin) 和 (rmax, cmax) (r=row,c=上校)。然后将它们转换为 dlib 矩形对象,如“dlib_rect = dlib.rectangle(rmin, cmin, rmax, cmax)”,现在将此矩形对象与图像帧一起传递给 shape_predictor 对象,如“landmarks = pred_object(image, dlib_rect)”,其中pred_object = dlib.shape_predictor(r"some_model.dat")
    【解决方案2】:

    您可以使用任何对象检测器来查找边界框。正如Quang所说,dlib是正确的。

    您也可以使用 OpenCV 的检测器。但是,你需要记住,dlib 的矩形四坐标和 OpenCV 矩形表示是不同的。

    从 Opencv 获取边界框后,执行此操作。

    d_rect = dlib.rectangle(left= o_rect[0] , top=o_rect[1], right=o_rect[2], bottom=o_rect[3])
    

    其中 o_rect 是 OpenCV 矩形。

    【讨论】:

      猜你喜欢
      • 2019-02-18
      • 2019-07-19
      • 2019-03-07
      • 2018-10-01
      • 2023-03-09
      • 2017-05-29
      • 2019-06-06
      • 2019-10-20
      • 2020-07-26
      相关资源
      最近更新 更多