我已经实施了 Bag Of Words,一切都很顺利。但是,我对一些步骤以及如何实施感到困惑。
我可以创建弓描述符作为词袋中创建样本的最后一步,如此处所示bowDE.compute(img, keypoints, bow_descriptor);
.. 问题是我对接下来的步骤感到困惑。
我知道在 BOW 中我必须用非类(可乐)来训练和测试类(汽车),我在 Bow_descriptor 向量中创建的内容仅适用于类汽车,所以我有仅属于汽车的样本向量。以下是我用于训练和测试系统的问题。
1-我应该将bow_descriptor向量的一半用于类(可乐),其余部分用于非类(可乐),还是我必须为非类(可乐)创建一个新的bow_descriptor?
2-我需要进行多类别分类,在完成第一个类别(汽车)系统后,我需要训练一个新类别(公共汽车+火车等),我应该为每个类别创建一个新的训练模型吗, 或者
是否可以与之前的培训一起进行培训程序(即培训类BUS,在同一系统中与类车进行培训)?
为所有类创建一个对象还是为每个类创建一个对象并不重要,只要为所有类使用相同的字典即可。
仅创建一个对象可能更经济。但提取的图像描述符应该是相同的。
关于多类 SVM:
您使用了 SVM 标签。所以我假设你想使用 SVM。确实存在使用 SVM 显式进行多类分类的方法,更常见的是训练多个二元 SVM 并将它们组合起来以获得多类结果。
您可以使用 1-vs-1 设置,即为每个类对训练一个 SVM。为了进行测试,您需要在每个 SVM 上评估您的测试示例。最常赢得这些决斗的班级将成为你的最终结果。
另一种流行的方法是一对多 SVM。在这里,您为每个类训练一个 SVM,其中当前类的样本被标记为正,所有其他样本被标记为负。在测试过程中,得分最高的班级获胜。
因此,如果您想使用 1-vs-1 设置,您可以在添加新类时重用一些二进制 SVM。 1-vs-All 设置是不可能的,因为您需要将新类添加到每个 SVM 的负样本中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)