Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单词袋训练与测试opencv,matlab_Matlab_Opencv_Image Processing_Matlab Cvst_Object Recognition - Fatal编程技术网

单词袋训练与测试opencv,matlab

单词袋训练与测试opencv,matlab,matlab,opencv,image-processing,matlab-cvst,object-recognition,Matlab,Opencv,Image Processing,Matlab Cvst,Object Recognition,为了对特定的数据集进行分类,我正在opencv中使用SIFT特性实现单词包。到目前为止,我一直致力于将描述符进行聚类并生成词汇表。正如我所知,我必须训练SVM。。。但是我有一些问题,我真的很困惑。主要问题是实施背后的概念,以下是我的问题: 1-当我提取特征并创建词汇表时,我是否要提取所有对象(比如说5个对象)的特征并将它们放在一个文件中,这样我就可以将它们放在一个包含所有单词的词汇表文件中?我以后在分类时会如何将它们分开 2-如何实现支持向量机?我知道openCV中使用的函数,但是怎么知道呢 3

为了对特定的数据集进行分类,我正在opencv中使用SIFT特性实现单词包。到目前为止,我一直致力于将描述符进行聚类并生成词汇表。正如我所知,我必须训练SVM。。。但是我有一些问题,我真的很困惑。主要问题是实施背后的概念,以下是我的问题:

1-当我提取特征并创建词汇表时,我是否要提取所有对象(比如说5个对象)的特征并将它们放在一个文件中,这样我就可以将它们放在一个包含所有单词的词汇表文件中?我以后在分类时会如何将它们分开

2-如何实现支持向量机?我知道openCV中使用的函数,但是怎么知道呢

3-我可以在MATLAB中完成这项工作,我指的是SVM训练的实现,但是是否有任何代码可以指导我完成我的工作?我看过Andrea Vedaldi使用的代码,但他每次只处理一个类和另一个问题,他没有展示如何创建他在练习中使用的.mat文件。我能找到的所有其他实现都没有使用SVM。所以,你也可以在这一点上指导

谢谢

本地特色 使用SIFT时,通常需要提取局部特征。这意味着什么?你有你的图像,从这张图像你将定位点,你将从中提取局部特征向量。局部特征向量只是一个由数值组成的向量,用于描述从中提取的图像区域的视觉信息。尽管可以从图像A中提取的局部特征向量的数量不需要与可以从图像B中提取的特征向量的数量相同,但局部特征向量的数量分量(即其维数)始终相同

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

视觉文字袋 以下是(非常)简化的弓算法:

  • 从图像集中提取SIFT局部特征向量

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

  • 在局部特征向量集上应用聚类算法(例如k-均值),以找到质心坐标并为每个质心分配id。这组质心将成为你的词汇表

  • 全局特征向量将是一个直方图,用于计算每个图像中每个质心出现的次数。要计算直方图,请为每个局部特征向量找到最近的质心

  • 图像分类 在这里,我假设您的问题如下:

    您有一组带标签的图像和一组不带标签的图像作为输入 要根据其视觉效果指定标签的图像 外表。假设您的问题是对风景摄影进行分类。 图像标签可以是,例如,“山脉”、“海滩”或 “森林”

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


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

    这是一篇非常好的文章,介绍了使用OpenCV v2.2进行分类的单词包模型。

    关于使用普通贝叶斯分类器进行图像分类的后续文章。

    还包括在Caltech-256数据集上的200行代码演示

    下面是一些可以直观感受图像分类过程的信息:


    真的帮我澄清了很多问题。我希望它能帮助别人

    VLFeat库实现了SIFT for Matlab以及其他功能,它有一个优秀的代码库。这个演示在哪里?在你提到的网站上,只有siftI看到了这个问题,我面临着和你一样的麻烦。发现此链接非常有用:。它也有一个MatlabZIP文件,但它是为32位处理器构建的。答案仍然不完整。明天我会努力完成它。我在等你完成它。到目前为止,我已经完成了4个步骤中的3个,我知道我必须创建柱状图。。但是我真的需要知道更多关于分类的训练和测试部分,你到目前为止写的东西真的很令人惊讶。我很长时间都不知道你编辑了这篇文章,因为我没有收到通知,这是一个如此精彩的答案,向我说明了我脑子里有这么多问题。。。。总之,我没有什么问题要问,它们可能对我和其他人有用。这些问题,我已经做了你所说的关于直方图的内容,我创建了一个文件,其中包含一个代码本单词,它是10幅图像的SIFT特征的100*128向量,我做了100个单词,因为我想做简单的单词,然后用我的工作更新它,,,所以我的问题是,对于物体“车”,这些词我能训练它们并假设它们吗