我正在训练一个HOG + SVM模型,我的训练数据具有各种尺寸和纵横比。SVM模型无法在可变大小的列表上进行训练,因此我想计算一个不受图像尺寸影响的固定长度的梯度直方图。
有什么巧妙的方法可以做到这一点吗?还是最好调整图像大小或填充它们?
回答:
在这种情况下,人们通常会采取以下两种方法之一:
- 将所有图像(或图像块)调整到固定尺寸,并从中提取HOG特征。
- 使用“词袋/特征袋”方法,不调整图像尺寸。
第一种方法1.
非常简单,但它有一些问题,方法2.
试图解决这些问题。首先,想想HOG描述符做了什么。它将图像划分为固定长度的单元,逐单元计算梯度以生成基于投票的单元直方图。最后,你会得到所有单元的连接直方图,这就是你的描述符。
因此,这里有一个问题,因为你想要检测的对象必须以相似的方式覆盖图像。否则,你的描述符会根据对象在图像中的位置不同而看起来不同。
方法2.
的工作方式如下:
- 从训练集中正负图像中提取HOG特征。
- 使用像k-means这样的聚类算法来定义固定数量的
k
个中心点。 - 对于数据集中每张图像,提取HOG特征,并逐元素与中心点进行比较,以创建频率直方图。
使用频率直方图来训练你的SVM,并在分类阶段使用它。这样,位置就不重要了,你将始终拥有固定大小的输入。你还将受益于维度的减少。