使用不同尺寸但相同数量的 HoG 特征的图像训练分类器

Posted

技术标签:

【中文标题】使用不同尺寸但相同数量的 HoG 特征的图像训练分类器【英文标题】:Training a classifier using images of different dimensions but same number of HoG features 【发布时间】:2014-09-02 09:22:13 【问题描述】:

我想用一些图像训练我的分类器,其中一些具有不同的尺寸。

它们都属于以下维度:

100x50 50x100 64x72 72x64

但是,使用 9 个方向箱和每个单元 8 个像素,每个单元生成 648 个 HoG 特征。

我实际上将所有图像都选择为其中一种尺寸,以便它们最终具有相同数量的 HoG 特征,从而使训练是统一的。

我选择这个的原因是因为训练图像中感兴趣的对象有时具有不同的纵横比,因此将所有图像裁剪为相同大小,因为其中一些图像留下了太多背景。

现在我的问题是 - 只要 HoG 特征的数量一致,训练图像的纵横比/图像尺寸是否重要? (我的训练算法只包含 HoG 特征)。

【问题讨论】:

【参考方案1】:

如果您的 HOG 特征都使用 8x8 单元格,那么如何为不同尺寸的图像获得相同尺寸的矢量?在更大的图像中不会有更多的单元格吗?

一般来说,如果你想使用 HOG,你应该将所有图像调整为相同大小。

另一个问题:你只是想对已经裁剪的图像进行分类,还是想在大场景中检测物体?如果你只是想分类,那么纵横比的变化可能是个问题。另一方面,如果要进行滑动窗口对象检测,则纵横比的变化是一个更大的问题。您可能必须根据纵横比将您的类别分成子类,并为每个子类训练一个单独的检测器。

编辑: 抱歉,但是通过使用舍入误差和纵横比差异使 HOG 向量具有相同的长度是作弊。 :) 重点是让 HOG 单元对空间信息进行编码。相应的单元格必须在不同的图像中编码相同的点。否则你就是在比较苹果和橘子。

就物体检测而言,纵横比是最重要的。您将在图像上滑动一个窗口,并且该窗口最好与您尝试检测的对象具有相同的纵横比。否则,它根本行不通。因此,如果您有这 4 个不同的纵横比,最好的办法是训练 4 个不同的检测器。

【讨论】:

对你的第一个问题 - 不是真的。例如,对于一个 50x100 的图像,9 个方向和 8x8 单元格,每个块 1 个单元格,我最终得到floor(50/8) * floor (100/8) * 9 = 648 HoG 特征。对于 64x72 图像,它又是 floor(64/8) * floor (72/8) * 9 = 648。我必须做你提到的两件事。 1)我必须自己进行裁剪以训练和测试图像,然后只对裁剪后的图像进行分类,2)我也必须在大场景中检测对象。我认为这样做(所有图像的 HoG 特征数量相同,无论它们的尺寸如何)都可以解决这两个问题。 一个简短的后续问题:***.com/users/961627/user961627

以上是关于使用不同尺寸但相同数量的 HoG 特征的图像训练分类器的主要内容,如果未能解决你的问题,请参考以下文章

使用 OpenCV 提取 HoG 特征

opencv进阶-HOG+SVM行人检测(已训练好的分类器)

Opencv学习之路—Opencv下基于HOG特征的KNN算法分类训练

OpenCV与图像处理

如何使 HOG 特征向量适应线性 svm 输入

在 MATLAB 中使用 SVM 实现 HOG 特征