【问题标题】:OpenCV SVM training datasetOpenCV SVM 训练数据集
【发布时间】:2015-08-14 01:25:42
【问题描述】:

假设我有一个包含大约 350 张正面图像和 400 多张负面图像的数据集。它们的大小不一样。它们的尺寸也大于 640x320。

  1. 我应该怎么做才能创建更好的数据集?我需要图像更小吗?如果是,为什么?

  2. 我应该对数据集应用一些规范化吗?应该是什么(对比度、降噪)?

  3. 我可以使用现有的数据集创建更大的数据集吗?如果是,怎么做?

提前致谢!

【问题讨论】:

  • 1. “更好的数据集”的单位是什么?图像不必更小,它们可能会更小。 2. 你可能会也可能不会。 3. 你可能会也可能不会。你看,这完全取决于你正在处理什么样的数据。
  • 您必须隔离这些图像的对象,以便在每个图像中基本上只呈现对象,居中且大小相同。应该有一些背景,但不要太多。因此,通常只有 500 张图像在该图像中的“某处”存在对象是不够的。对于尺寸,您应该选择要检测或可检测的最小尺寸。看看 INRIA 人类数据库,他们提供“原始图像”和“标准化训练数据集”,所以你可以得到一个印象:pascal.inrialpes.fr/data/human

标签: opencv dataset computer-vision svm training-data


【解决方案1】:
  1. 图像的最佳尺寸是您可以通过以下方式轻松分类对象 自己。
  2. 是的,分类器在归一化后效果更好,有 选项。最流行的方法是中心数据集(减去平均值)和归一化范围 值在 [-1:1] 范围内。其他流行的归一化方式与以前类似,但归一化标准差(在大多数情况下是首选)。
  3. 是的,您可以通过添加从现有数据集创建更大的数据集 现有数据集中的图像失真和噪点。

【讨论】:

  • 感谢您的回答。如果不是问题,我想问你一些问题。 “自己分类对象”实际上是什么意思?我的数据集是图像。 “标准化值范围”是什么意思?
  • “自己分类对象”我的意思是查看对象图像并确定它属于哪个类。如果您能够对其进行分类,请尝试减小图像样本大小并重试。如果您可以对对象进行分类,则图像包含分类所需的所有信息。图像分类中的归一化是像素值归一化或直方图归一化,有时也可以先从 DS 中的每个图像中减去平均图像。然后应用像素归一化。
  • 对数据集中属于不同图像的一组具有相同坐标的像素进行像素归一化。例如,您将一组具有坐标 (10,10) 的像素标准化。首先你找到所有这些像素的平均值(它将属于平均图像),从每个像素值中减去平均值,然后标准化集合的标准偏差(或标准化集合上的像素值范围)。
  • 你有什么建议我应该使用什么扭曲?
  • 最简单的情况是小型仿射变换。 OpenCV 中有补丁生成器,我不知道它在最近的版本中现在在哪里(希望它仍然在 features2d.hpp 中)但这个链接可以帮助你:physics.nyu.edu/grierlab/manuals/opencv/…
【解决方案2】:

查看 INRIA 数据集及其 cmets,了解他们如何“标准化”输入图像以进行 HoG 人员检测训练。

http://pascal.inrialpes.fr/data/human/

尚未提及的一件事是,对于大多数检测技术而言,仅收集一组 n 个图像以及该图像中“某处”所需的对象是不够的。相反,您应该在对象周围裁剪该图像(带有一些边框)。

例如对于人员检测,他们使用了这个输入图像:

但他们对这些区域(对象)进行了裁剪和重新缩放(和转换):

在论文中可能也有一些关于培训的好提示: http://lear.inrialpes.fr/people/dalal/NavneetDalalThesis.pdf

【讨论】:

    猜你喜欢
    • 2015-09-26
    • 2015-05-04
    • 2015-07-25
    • 2015-04-18
    • 2015-01-22
    • 2016-10-29
    • 2014-05-18
    • 2017-08-25
    相关资源
    最近更新 更多