4

我正在尝试使用 dlib 机器学习库进行对象检测。

正如我按照说明编写的那样,一切似乎都很好,但是即使在原始图像上我也无法检测到我的对象。即使我在唯一的黑色图像上对其进行测试,它也会发现一个检测。这不应该发生。如果我将一张经过训练的图像粘贴到黑色图像上,它会发现很多不应该发生的检测。

我没有触摸 train_object_detector.cpp 文件。它是原创的。

这是我的示例图片

在此处输入图像描述在此处输入图像描述 在此处输入图像描述在此处输入图像描述在此处输入图像描述在此处输入图像描述

我使用 imglab 创建的 XML 文件。

<?xml version='1.0' encoding='ISO-8859-1'?>
<?xml-stylesheet type='text/xsl' href='image_metadata_stylesheet.xsl'?>
<dataset>
<name>imglab dataset</name>
<comment>Created by imglab tool.</comment>
<images>
  <image file='totaldata/1.jpg'>
    <box top='0' left='1' width='61' height='64'/>
  </image>
  <image file='totaldata/2.jpg'>
    <box top='0' left='1' width='63' height='65'>
      <label>1</label>
    </box>
  </image>
  <image file='totaldata/3.jpg'>
    <box top='1' left='0' width='61' height='61'>
      <label>1</label>
    </box>
  </image>
  <image file='totaldata/4.jpg'>
    <box top='0' left='0' width='59' height='63'>
      <label>1</label>
    </box>
  </image>
  <image file='totaldata/5.jpg'>
    <box top='2' left='1' width='59' height='60'>
      <label>1</label>
    </box>
  </image>
  <image file='totaldata/6.jpg'>
    <box top='0' left='2' width='60' height='62'>
      <label>1</label>
    </box>
  </image>
</images>
</dataset>

只有黑色的检测屏幕截图 在此处输入图像描述

仅使用黑色和一张经过训练的图像的检测屏幕截图。

在此处输入图像描述

以防万一这是 cpp 文件的链接。

http://dlib.net/train_object_detector.cpp.html

先感谢您。

4

1 回答 1

6

你不应该裁剪你的训练图像。您需要提供看起来像您将在测试期间使用的图像的训练图像。

在这种情况下,图像窗口的部分特征向量是从图像外部的区域中提取的(因为您的对象被裁剪得如此紧密)并且由于图像的外部被假定为黑色,它正在学习您的对象总是被包围黑色像素。

于 2015-05-20T00:35:57.733 回答