在MATLAB中使用SVM实现HOG功能

时间:2014-04-05 21:03:55

标签: matlab classification svm feature-extraction matlab-cvst

我想基于使用SVM的HOG功能进行分类。

据我所知,HOG功能是每个单元格中所有直方图的组合(即它成为一个聚合直方图)。

我使用此page中的MATLAB代码为 Dalal-Triggs变体提取HOG功能。

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

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

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

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

因此,对于第一列火车,我会认为第一类标有+1,而reast类将为0。 第二列火车,我认为第二类用+1标记,而reast等级为0.依此类推......

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

因此,对于第一次训练,我只制作了2个红色而不是红色的二进制文件。

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

训练SVM的语法是:

          SVMStruct = svmtrain(Training,Group)

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

分类/测试的语法

          Group = svmclassify(SVMStruct,Sample)

如何在这里声明7个SVMStruct?

是吗? 或者我还有其他概念或合成器吗?

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

请帮帮我......

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

用于MATLAB的计算机视觉系统工具箱包括extractHOGFeatures功能,统计工具箱包括SVM。这是example如何使用HOG和SVM对图像进行分类。

答案 2 :(得分:0)

<强> 1。如何将其作为直方图并将其用于SVM分类器?

我想要做的一个区别是你已经有一个定向渐变特征的'直方图'。您现在需要将这些功能作为SVM的输入。为每个特征分配标签很奇怪,因为一个HoG特征可能会在另一个标记不同的图像中出现。

在实践中,所做的是从这些HoG特征中创建另一个称为一袋单词的直方图,并将它们作为输入提供给SVM。直觉是,如果两个特征非常相似,则需要对这两个HoG特征进行一次表示。这减少了输入数据的变化。现在我们为每个图像创建这个新的直方图。

以下列方式创建一个单词:

  1. 将所有HoG功能集中到“单词”中。假设你有1000个 这些话。

  2. 浏览所有HoG功能并将HoG功能分配给单词 在包中的所有单词中与该单词最接近(欧几里德距离)。

  3. 计算包中每个单词分配的单词数。这是 1XN(N =包中的单词数)将给出特征直方图 标记后作为SVM的输入。
  4. <强> 2。如何使用SVM进行多级分类? 如果您将重新训练SVM,您将获得另一个模型。有两种方法可以使用SVMTrain进行多类SVM

    1)一对一SVM

    使用以下方式输入每个标签类:

    模型1输入的示例将是

    bag of words features  for Image 1, RED
    bag of words features Image 2, GREEN
    

    模型1输入的示例将是

    bag of words features  for Image 3, YELLOW
    bag of words features Image 2, GREEN
    

    以上是针对每对标签类完成的。你将有N(N-1)/ 2型号。现在,您可以从N(N-1)/ 2模型中计算每个类的投票数,以找到要分配的标签。

    2)One vs All SVM

    使用以下方式输入每个标签类:

    模型1输入的示例将是

    bag of words features for Image 1, RED
    bag of words features for Image 2, NOT RED
    

    模型1输入的示例将是

    bag of words features for Image 2, GREEN
    bag of words features for Image 1, NOT GREEN
    

    以上是每个标签类完成的。你将有N个型号。现在,您可以计算N个模型中每个类的投票数,以找到要分配的标签。

    在此处详细了解类别级别分类:http://www.di.ens.fr/willow/events/cvml2013/materials/slides/tuesday/Tue_bof_summer_school_paris_2013.pdf