词袋培训和测试OpenCV,Matlab
image-processing
matlab
matlab-cvst
opencv
6
0

我正在通过使用SIFT功能在opencv中实现“单词袋”,以便对特定数据集进行分类。到目前为止,我一直是苹果公司来聚类描述符并生成词汇表。据我所知,我必须训练SVM……但是我有一些我真的很困惑的问题。主要问题是实现背后的概念,这些是我的问题:

1-当我提取特征然后创建词汇表时,我是否应该提取所有对象(比如说5个对象)的特征并将它们放在一个文件中,所以我将它们全部合并到一个包含所有内容的词汇表文件中话?以及以后进行分类时如何将它们分开?

2-如何实现SVM?我知道openCV中使用的功能,但是如何?

3-我可以在MATLAB中进行工作,这意味着SVM培训的实现,但是有没有可用的代码可以指导我完成工作?我已经看到安德烈Vedaldi使用的代码, 在这里 ,但他每次用一个类和另一个问题,他没有说明如何,他是用他的练习创建.MAT文件只工作。我可以找到的所有其他实现都没有使用SVM。因此,您也可以在这一点上进行指导!

谢谢

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

这是一篇很好的文章,介绍了使用OpenCV v2.2进行分类的词袋模型。 http://app-solut.com/blog/2011/07/the-bag-of-words-model-in-opencv-2-2/

有关使用Normal Bayes分类器进行图像分类的后续文章。 http://app-solut.com/blog/2011/07/using-the-normal-bayes-classifier-for-image-categorization-in-opencv/

还提供了有关Caltech-256数据集的〜200行代码演示。 http://code.google.com/p/open-cv-bow-demo/downloads/detail?name=bowdemo.tar.gz&can=2&q=

以下是直观了解图像分类过程的内容: http : //www.robots.ox.ac.uk/~vgg/share/practical-image-classification.htm

确实帮助我澄清了很多问题。希望对您有所帮助。 :)

收藏
评论

当地特色

使用SIFT时,通常需要提取局部特征。那是什么意思您拥有图像,并且将从该图像中找到要从中提取局部特征向量的点。局部特征向量只是一个由数值组成的向量,该向量描述了从中提取图像的图像区域的视觉信息。尽管可以从图像A提取的局部特征向量的数量不必与可以从图像B提取的局部特征向量的数量相同,但是局部特征向量的数量分量(即维数)始终是相同。

现在,如果您想使用局部特征向量对图像进行分类,则会遇到问题。在传统的图像分类中,每个图像都是由全局特征向量描述的,在机器学习的上下文中,可以将其视为一组数字属性。但是,当您提取一组局部特征向量时,您没有图像分类所需的每个图像的全局表示。可以用来解决此问题的技术是单词袋,也称为视觉单词袋(BoW)。

视觉单词袋

这是(非常)简化的BoW算法:

  1. 从图像集中提取SIFT局部特征向量;

  2. 将所有这些局部特征向量放在一个集合中。此时,您甚至不需要存储从哪个图像中提取每个局部特征向量。

  3. 在局部特征向量集上应用聚类算法(例如k均值),以找到质心坐标并将ID分配给每个质心。这组质心将是您的词汇表;

  4. 全局特征向量将是一个直方图,该直方图计算每个质心在每个图像中出现了多少次。要计算直方图,请找到每个局部特征向量的最近质心。

影像分类

在这里,我假设您的问题如下:

您需要输入一组要标记的图像和一组未标记的图像,这些图像要根据其视觉外观分配标签。假设您的问题是对风景摄影进行分类。您的图像标签可以是“山”,“海滩”或“森林”。

从每个图像(即其视觉单词袋)提取的全局特征向量可以视为一组数字属性。代表每个图像的视觉特征和相应图像标签的这组数字属性可用于训练分类器。例如,您可以使用诸如Weka之类的数据挖掘软件来解决问题,该软件具有SVM的实现(称为SMO)。

基本上,您只需要根据ARFF文件格式设置全局特征向量和相应的图像标签的格式 ,该格式基本上是全局特征向量的CSV,后跟图像标签。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号