我使用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,但我想这个问题与我使用的平台无关。
答案 0 :(得分:3)
正如您所说,HOG基本上使用一个参数来确定以像素为单位的像元大小。因此,如果图像大小发生变化,则单元格数量不同,然后描述符的大小也不同。
The main approach是使用HOG是使用相同大小的窗口(在训练期间和测试期间大小相同)。因此extracted window
的大小应与trainingsample
相同。
在that引用中,有一位用户说:
HOG不是规模不变的。获得相同长度的特征向量 每个图像都不能保证比例不变性。
所以你应该使用相同的窗口大小......