【问题标题】:Histogram of Oriented Gradients as feature vectors with vlfeat/libsvm使用 vlfeat/libsvm 将定向梯度直方图作为特征向量
【发布时间】:2014-04-04 14:27:05
【问题描述】:

我是计算机视觉 vlfeat 库的新手,我在处理它时遇到了问题。我想要做的是使用定向梯度直方图(HOG)作为特征向量在不同维度的 LIBSVM 图像中进行分类。

我要处理的第一个问题是 vl_hog 返回给我一个 HOG 矩阵,而不是一个向量。这不是一个真正的问题,因为我可以按如下方式对该矩阵进行矢量化:

            hog = vl_hog(image,cellSize); 
            features=hog(:);

第二个问题是什么让我感到害怕。因为图像有不同的维度,特征向量也有不同的维度,所以不可能用它们来提供 libsvm,或者我错了?我可以用更简单的方式解决这个问题吗?我错过了什么吗?

【问题讨论】:

  • 你必须采用相同大小的块,我的意思是如果你想做行人检测(这是原始 HOG 论文所做的),他们采用 128x64 的恒定块大小。这取决于您要检测的内容。显然,现在有先进的方法,但你必须描述问题。
  • @Parag 我想用 Hog 描述一些图像,但我不明白为什么 vl_hog 返回的是矩阵而不是向量。还是谢谢。
  • 你的目标是什么?您是要识别该图像的类别,还是要进行对象检测?如果你想描述图像,可视化 HOG,this 是一个很好的链接。只需在该页面上播放一些图像,您就会知道它们在做什么。
  • @Parag 我想识别给定图像的类别。图像是边界框中的字母,没有固定大小。我想要一个特征向量来描述给定的字母,但是无论图像大小如何,这些特征向量都必须具有相同的尺寸,所以我可以使用 libsvm 进行分类。我在 vlfeat 和您的链接中看到的是一种仅查看渐变角度的方法,对吗?
  • 好的。你有两个选择。 1. 找到一个可以在不改变纵横比的情况下调整所有字母大小的通用尺寸。这应该可以完成这项工作。 2. 基于零件的检测:这有点困难,对于字母检测来说会是多余的。此外,在开始基于零件的检测之前,您必须阅读一些文献。我会选择第一个选项。

标签: matlab computer-vision libsvm vlfeat


【解决方案1】:

您需要创建本地特征的全局表示,以便将数据提供给 SVM。这项任务最流行的方法之一是词袋(特征)。 vlfeat 有一个很好的演示/示例。您可以从vlfeat website查看此代码。

对于您的特定情况,您需要在 Caltech-101 中安排您的训练/测试数据,例如数据目录:

  • 字母 1
    • 图片 1
    • 图片 2
    • 图片 3
    • 图 4
    • ...
  • 第 2 封信
    • ...
  • 第 3 封信
    • ...

那么您需要为您的案例调整以下配置设置:

conf.numTrain = 15 ;

conf.numTest = 15 ;

conf.numClasses = 102 ;

此演示使用 SIFT 作为本地特征,但之后您可以将其更改为 HOG。

【讨论】:

  • 谢谢。这对我很有帮助。
猜你喜欢
  • 1970-01-01
  • 2011-08-01
  • 1970-01-01
  • 2018-11-03
  • 2013-06-22
  • 2017-12-10
  • 2015-01-21
  • 2013-11-08
相关资源
最近更新 更多