选择/规范化HoG参数以进行物体检测?


问题内容

我正在使用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功能的参数?还是有其他方法可以做到这一点?

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


问题答案:

如您所说,HOG基本上使用一个以像素为单位建立像元大小的参数。因此,如果图像大小发生变化,则单元数会不同,描述符的大小也会有所不同。

使用HOG的主要方法是使用像素大小相同的窗口(训练和测试期间的大小相同)。因此extracted window,大小应相同trainingsample

参考文献中,一位用户说:

HOG不是尺度不变的。对于每个图像获得相同的长度特征向量并不能保证比例不变。

因此,您应该使用相同的窗口大小…