4

我正在使用 HoG 功能通过分类进行对象检测。

我对如何处理不同长度的 HoG 特征向量感到困惑。

我已经使用大小相同的训练图像训练了我的分类器。

现在,我从图像中提取区域以运行分类器 - 比如说,使用滑动窗口方法。我提取的一些窗口比训练分类器的图像大小要大得多。(它在测试图像中可能预期的最小可能对象尺寸上进行了训练)。

问题是,当我需要分类的窗口大于训练图像大小时,HoG 特征向量也比训练模型的特征向量大得多。

那么如何使用模型的特征向量对提取窗口进行分类呢?

例如,让我们取一个提取的窗口的尺寸,即 360x240,并将其命名为extractedwindow. 然后让我们取一张我的训练图像,它只有 20x30,并调用它trainingsample

如果我采用 HoG 特征向量,如下所示:

fd1, hog_image1 = hog(extractedwindow, orientations=8, pixels_per_cell=(16, 16), cells_per_block=(1, 1), visualise=True, normalise=True)

fd2, hog_image2 = hog(trainingsample, orientations=8, pixels_per_cell=(16, 16), cells_per_block=(1, 1), visualise=True, normalise=True)

print len(fd1)
print len(fd2)

那么这是特征向量之间的长度差异:

2640
616

那么这是如何处理的呢?提取的窗口是否应该按比例缩小到训练分类器的样本大小?还是应该根据每个提取的窗口更改/归一化 HoG 特征的参数?还是有其他方法可以做到这一点?

我个人在 python 中工作,使用 scikit-image,但我想这个问题与我使用的平台无关。

4

1 回答 1

3

正如您所说,HOG 基本上使用一个参数来确定以像素为单位的单元大小。因此,如果图像大小发生变化,则单元格的数量不同,然后描述符的大小也不同。

使用 HOG的主要方法是使用像素大小相同的窗口(在训练期间和测试期间大小相同)。所以extracted window应该是一样大小的trainingsample

参考资料中,一位用户说:

HOG 不是尺度不变的。为每张图像获取相同长度的特征向量并不能保证尺度不变性。

所以你应该使用相同的窗口大小......

于 2014-05-23T08:26:26.597 回答