2017-07-27 185 views
2

我不太清楚如何用HOG描述符实现“Bag of Words”方法。 我检查了几个通常会提供以下几个步骤的来源:带HOG描述符的单词包

  1. 计算有效训练图像集的HOG。
  2. 应用聚类算法从描述符中检索n个质心。
  3. 执行一些魔术来创建具有计算HOG的最接近质心频率的直方图,或使用OpenCV实现来执行此操作。
  4. 列车的线性SVM与直方图

涉及魔法(3)是没有真正明确的步骤。如果我不使用OpenCV,我将如何实现它?

HOG是以细胞方式计算的向量。所以我对每个单元格都有一个向量。我可以迭代矢量并计算矢量的每个元素的最接近的质心,并相应地创建直方图。这是否是一个正确的方法来做到这一点?但如果是这样,我仍然有不同大小的载体,并没有从中受益。

回答

1

可以表示主要步骤;

1-从整个训练集中提取特征。 (HOG功能为您的目标)

2-将这些功能聚类到词汇表V中; (K-Means,K-Medoid,你的超参数为K)

3-将每个训练图像编码为每个词汇元素在图像中出现的次数的直方图。然后每个图像由长度为K的矢量表示。

例如; K的第一个元素可能会出现5次,K的第二个元素可能会在您的图像中出现10次。最后你会有一个有K个元素的向量。

K [0] = 5 K [1] = 10 .... .... K [η] = 3

4-列车使用该载体的分类器。 (线性SVM)

当给出测试图像时,提取特征。现在将测试图像表示为每个聚类中心与V最接近的测试图像中某个要素的直方图。这是一个长度为K的矢量。

+0

感谢您的回答!如何用felzenszwalb生猪做这件事?因为这些HOG通常是一组32维向量。 –

+1

我没有确切的解决方案,也许你可以尝试最简单的方法来计算向量的平均值。例如:x1 + x2 + ... + xn/n = X,这个X可以是您的固定尺寸描述符。 也许它不起作用,我们可以试试。 – BlackCode

+0

你有没有尝试过任何解决方案来处理这个问题?如果您有解决方案,可以与我们分享吗?谢谢 – BlackCode