use*_*490 5 matlab classification svm feature-extraction matlab-cvst
我想基于使用SVM的HOG功能进行分类.
据我所知,HOG特征是每个单元格中所有直方图的组合(即它成为一个聚合直方图).
我在本页面中使用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,而重新等级将为0.而第二列火车,我将认为第二类被标记为+1并且重新上课将是0.等等..
例如,我有颜色类别:红色,绿色,蓝色,黄色,白色,黑色和粉红色.
所以对于第一次训练,我只制作了2个红色而不是红色的二进制文件.
对于第二次训练,我将标签设为绿色而不是绿色..是不是就这样?
训练SVM的语法是:
SVMStruct = svmtrain(Training,Group)
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我将有7个SVMStruct ..
分类/测试的语法
Group = svmclassify(SVMStruct,Sample)
Run Code Online (Sandbox Code Playgroud)
如何在这里声明7个SVMStruct?
是对的吗??还是有另外一个概念或合成器我必须要知道?
对于培训,我将拥有48 x 64 x 36的功能,我如何在SVM中训练这些功能?因为正如我所读到的,它们只有1xN的特征矩阵.
请帮我...
HOG 和 SVM 是最成功的目标检测算法。要应用此方法,确实必须有两个不同的训练数据集,然后才能将它们输入 SVM 分类器。例如,你想检测一个苹果,所以你必须有两个训练数据集,正图像是图像中包含苹果的图像,负图像是图像中不包含苹果的图像。然后,将两个训练数据集(正数和负数)中的特征分别提取到 HOG 描述符中,并分别对其进行标记(即 1 表示正数,0 表示负数)。然后,结合正负特征向量并将它们输入到 SVM 分类器。
您可以使用 SVM Light 或 LibSVM,这对于初学者来说更简单且用户友好。