【问题标题】:Extracting the descriptors of a bunch of sample images and training an SVM in OpenCV提取一堆样本图像的描述符并在 OpenCV 中训练一个 SVM
【发布时间】:2016-03-26 22:54:40
【问题描述】:

我有 4 种相同颜色的音符符号:全音符、半音符、四分音符和八分音符。我需要对图像进行分类并判断它是否具有其中一个符号(目前只有一个)以及哪个符号。例如,如果我有一张只有乐谱的图像(但没有其他任何东西),它应该告诉我图像是空的,但如果我有一张带有半音符符号的图像,它应该告诉我类似“这是一个二分音符”。

假设我对每个可能的符号有 20 个样本图像,并且有 20 个基本情况(其中没有),我想训练一个 SVM 来对任何输入图像进行分类。我已经阅读了有关如何做到这一点的信息,但我仍然有一些疑问。我认为这个过程是这样的(如果我错了,请纠正我):

  1. 提取所有样本图像的描述符。
  2. 将这些描述符放在不同的Mat 对象中(每个符号一个)。
  3. 将这些 Mats 输入到 SVM 以对其进行训练。
  4. 使用 SVM 对图像进行分类。

我对我认为的过程有具体的疑问:

  1. 我所描述的正确流程是我需要做的吗?
  2. 是否应该在将样本图像提供给描述符提取器之前对其进行预处理(例如提取背景并应用精巧的边缘)? o 我可以让它们保持原样吗?
  3. 我已经阅读了三种提取描述符的方法:HOG、BOW(词袋)和 SIFT。我认为他们都做我需要的,但我不知道该使用哪一个。我看到 HOG 主要(如果不是所有时候)用于面部和行人检测,我不知道它是否可以用于我的情况。关于应该使用哪一个的任何建议?
  4. 每个案例我应该有多少样本图片?

我不需要具体的实现细节,但我确实需要这些问题的答案,提前谢谢你

【问题讨论】:

  • 你想要一个 svm 分类器来对 4 种类型的笔记进行分类......我认为为这个简单的任务训练分类器有点开销......或者我错过了什么?
  • @HumamHelfawi 好吧,我需要做的是通过网络摄像头检测用户将粘贴在粘在墙上的 3mtx50cm 工作人员上的大音符并播放音符一段时间,具体取决于在它的形状上。笔记不会总是笔直的,不会总是具有相同的大小(相机可能更近或更远)并且不会总是接收相同的照明。所以我认为这将是最好和更准确的方法。但如果有另一种方法可以检测您能想到的形状,将不胜感激。
  • 在您的任务中,您不会描述整个图像,而只会描述所需的对象。因此您需要执行一些手动标记工作。
  • sift 将与弓相结合。 hog 将与 svm 结合使用。两者的工作方式截然不同。

标签: c++ opencv svm shapes object-detection


【解决方案1】:

我不是 SIFT 和 BOW 专家,但我对 HOG 和 SVM 有所了解。

1 我所描述的过程是否适合我需要做的事情? 如果您使用的是 OpenCV 和 HOG,那是不正确的。查看 OpenCV 示例中 HOG 的示例代码,您会发现,一旦提取,描述符直接提供给 SVM,而无需填充 MAT 元素。

2 在将样本图像提供给描述符提取器之前,我是否应该对其进行预处理(比如提取背景并应用精巧的边缘)? o 我可以让它们保持原样吗? 这不是强制性的。预处理已被证明非常有用,但对于您的简单情况,您将不需要它。另一方面,如果您的墙上有图画、贴纸或其他可能会混淆检测器的东西,那么可以。这可能是减少误报数量的好方法。

3 我已经阅读了三种提取描述符的方法:HOG、BOW(词袋)和 SIFT。我认为他们都做我需要的,但我不知道该使用哪一个。我看到 HOG 主要(如果不是所有时候)用于面部和行人检测,我不知道它是否可以用于我的情况。关于应该使用哪一个的任何建议? 我只对 HOG 有直接的了解。您可以使用 HOG 轻松实现自己的检测器,没有任何问题,我目前正在将它用于交通标志。注意您要使用的检测窗口。您可以保留所有其他参数不变,它适用于简单的情况。

4 每个案例我应该有多少样本图片? 再次取决于情况。我会说 200 张图片(也可以尝试更少)上课就可以了,但你总是可以通过对正面应用一些转换来增加数量。尝试翻转、饱和或模糊图像。

更多注意事项。我认为您可以使用灰度图像,因为颜色对于区分音符并不重要(都是相同的颜色,对吗?)。如果您遇到误报问题,您可以尝试使用 HSV 颜色空间过滤掉您将用于检测音符的色块(它确实适用于红色!!)。训练 SVM 最简单的方法是使用线性内核,然后为每个类训练一个模型。

【讨论】:

    猜你喜欢
    • 2013-04-16
    • 2017-10-19
    • 2013-06-14
    • 2014-06-30
    • 2016-03-29
    • 2014-01-29
    • 1970-01-01
    • 2015-06-03
    • 2013-03-10
    相关资源
    最近更新 更多