matlab - 在 MATLAB 中使用 SVM 实现 HOG 特征

标签 matlab classification svm feature-extraction matlab-cvst

我想使用 SVM 基于 HOG 特征进行分类。

我理解 HOG 特征是每个单元格中所有直方图的组合(即它成为一个聚合直方图)。

我在此 page 中使用 MATLAB 代码提取 HOG 特征对于Dalal-Triggs 变体

例如,我有一个大小为 384 x 512 的灰度图像,然后我在 9 个方向和一个单元格大小为 8 处提取 HOG 特征。通过这样做,我得到 48 x 64 x 36特征。

如何将其制作成直方图并将其用于 SVM 分类器?

因为例如,我将有 7 类图像并且我想进行训练(用于训练的图像总数为 700),然后根据训练阶段生成的模型对新数据进行分类。

我读到对于多类,我们可以用 ONE vs ALL 训练我们的 SVM,这意味着我必须为我的 7 个类训练 7 个分类器。

所以对于第一列火车,我会考虑将第一节标记为 +1,将第二节标记为 0。 而第 2 列火车,我会认为第 2 类标记为 +1,其余类将标记为 0。依此类推。

例如,我有颜色类别: 红色、绿色、蓝色、黄色、白色、黑色和粉色。

所以对于第一次训练,我只制作了 2 个红色和非红色的二进制文件。

对于第二次训练,我将标签设为绿色而不是绿色...... 是这样吗??

训练SVM的语法是:

          SVMStruct = svmtrain(Training,Group)

但在这种情况下,我将有 7 个 SVMStruct..

分类/测试的语法

          Group = svmclassify(SVMStruct,Sample)

如何在这里声明7个SVMStruct??

是吗?? 或者还有其他我必须知道的概念或语法??

对于训练,我将拥有 48 x 64 x 36 的特征,我如何在 SVM 中训练这些特征? 因为正如我读到的那样,它们只有 1xN 的特征矩阵..

请帮帮我...

最佳答案

HOG 和 SVM 是最成功的目标检测算法。要应用这种方法,是的,在将它们输入 SVM 分类器之前,您确实必须有两个不同的训练数据集。例如,你想检测一个苹果,那么你必须有两个训练数据集,positive images 是图像中包含苹果的图像,negative images 是图像中不包含苹果的图像。然后,您将两个训练数据集(正面和负面)的特征分别提取到 HOG 描述符中,并分别对其进行标记(即 1 表示正面,0 表示负面)。之后,结合正负特征向量并将它们提供给 SVM 分类器。

您可以使用 SVM Light 或 LibSVM,这对初学者来说更容易且用户友好。

关于matlab - 在 MATLAB 中使用 SVM 实现 HOG 特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22886789/

相关文章:

matlab - MATLAB rgb2hsv()与OpenCV cvtColor()

r - 使用 Caret 包中的朴素贝叶斯分类器时的警告

algorithm - 遗传算法与matlab如何使用分类精度作为适应度函数

algorithm - 如何通过连续特征对一组样本进行分类?

opencv - 如何使用 OpenCV 3 训练 SVM 进行 "Euro"硬币识别?

android - 支持向量机预测方法

user-interface - 如何防止 MATLAB GUI 中的 LATEX 标签变得模糊?

plot - Matlab contourf() 在全局 map 上绘制数据

machine-learning - 每个Bounding Box的置信值

MATLAB 2016b : Determine unassigned symbolic functions of an expression