如何在对象识别中使用 SVM
Posted
技术标签:
【中文标题】如何在对象识别中使用 SVM【英文标题】:How to use SVM in Object recognition 【发布时间】:2017-06-13 10:41:21 【问题描述】:我正在从事一个关于识别室内环境对象(例如椅子、桌子)的项目。我是使用opencv(使用c ++)的机器的新手。我的计划是使用 SURF 特征检测方法,然后使用 SVM 分类对对象进行分类。
我已经看过很多示例代码,但我仍然不知道如何提供数据、将它们标记为 1 或 0、如何制作模型并使用它来训练......等等。如果有人可以帮助我完成明确的步骤,我将不胜感激。这对我来说真的很困惑。
【问题讨论】:
这个问题太笼统了。您应该专注于问题的一个方面,提供您尝试过的代码并清楚地解释什么不起作用。我建议使用Tour 并查看How to Ask 欢迎来到 ***。请阅读并遵循帮助文档中的发布指南。 on topic 和 how to ask 在这里申请。 *** 不是编码或教程服务。 【参考方案1】:您可以使用特征描述符作为训练机器学习模型的一部分。我曾与 SURF
合作过,但没有用它来训练我的模型。
我可以通过一个项目示例为您提供帮助,其中我使用了HOG 并使用SVM 进行培训。请查看this repository。我知道您需要C++
,而我的示例在Python
,您可以将此存储库作为示例,并以您喜欢的语言使用它们。
主要涉及这些步骤:
获取可以分别标记1和-1(或0)进行分类的正负图像样本。如果你认为,你有足够的数据,你可以继续进行特征工程部分。或者,您可以从存储库中获取帮助 sample_create.py
并创建更大的数据集。
对样本进行特征工程。即,找到特征描述符并将它们存储在您以后可以用来训练模型的地方。您可以从存储库中的文件 feature_engineering.py
获取帮助,该文件读取所有图像,创建 HOG 描述符并将它们保存到文件中。
最后一步是将训练数据传递给训练模型。我在示例中使用了 SVM。这显示为文件linear_svm.py
。我已经为此使用了 TensorFlow 库。
模型将被转储并保存,通过将图像直接传递给它,可以用于进一步的对象检测。我很快就会发布这个用法。
【讨论】:
非常感谢您的关心。 linear_svm 表示它是一对一的分类,对吗?如果您能指导我多对多,我将不胜感激。 有关线性支持向量机的更多信息,请参阅en.wikipedia.org/wiki/Support_vector_machine#Linear_SVM。我可以看到你想要一个多类分类,多类 svm 是可能的。请在此处参考更多信息:en.wikipedia.org/wiki/Support_vector_machine#Extensions。仅供参考,它不完全是一对一或多对多,它总是像类的数据。您所需要的只是具有与之关联的类 (github.com/cprakashagr/hog-svm-tf/blob/master/src/…) 的数据,然后继续进行训练。以上是关于如何在对象识别中使用 SVM的主要内容,如果未能解决你的问题,请参考以下文章