我正在尝试使用线性支持向量机进行多类对象类别识别。到目前为止,我了解到主要使用两种方法 - 一对一(OVA)和一对一(OVO)。
但我很难理解它的实现。我的意思是我认为使用的步骤是:
- 首先,特征描述符是通过 SIFT 准备的。所以我有一个 128XN 的特征向量。
- 接下来,为特定对象类别(例如汽车)准备 SVM 分类器模型,我将 50 张汽车图像作为正训练集,并从每个类别中随机抽取其余类别的总共 50 张图像(这部分正确吗?)。我为所有此类类别(比如其中 5 个)准备了此类模型。
- 接下来,当我有输入图像时,我是否需要将图像输入到所有 5 个模型中,然后检查每个模型的值 (+1/-1)?我很难理解这部分。
在一对多方法中,您必须检查所有 5 个模型。然后你就可以做出最有信心值的决定。LIBSVM
给出概率估计。
在一对一的方法中,你可以占据多数。例如,您测试 1 vs. 2、1 vs. 3、1 vs. 4 和 1 vs. 5。您将其分类为 3 例中的 1 例。您对其他 4 个类执行相同的操作。假设其他四个类别的值为[0, 1, 1, 2]
。因此,第1类获得次数最多,因此该类为最终类。在这种情况下,您还可以进行总概率估计。取最大值。除非在一对中分类出现严重错误,否则这种方法是有效的。例如,在 1 vs. 4 中,它以 0.7 的置信度对 4 进行分类(真实类别为 1)。那么仅仅因为这一决定,你的概率估计总数可能会猛增并给出错误的结果。这个问题可以通过实验来检验。
LIBSVM 使用一对一的方式。你可以检查一下推理过程here。你可以阅读this他们也在论文中捍卫了一种与所有的分类方法并得出结论认为它是not必然比一对一更糟糕。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)