我希望有人可以解释如何使用词袋模型使用 SIFT/SURF/ORB 特征和支持向量机来执行图像分类?
目前我可以计算图像的 SIFT 特征向量,并实现了 SVM,但是我发现很难理解关于如何使用词袋模型“向量量化”SIFT 特征并构建直方图的文献固定大小的向量,可用于训练和测试 SVM。
欢迎任何有关该主题的教程或文献的链接,谢谢
我希望有人可以解释如何使用词袋模型使用 SIFT/SURF/ORB 特征和支持向量机来执行图像分类?
目前我可以计算图像的 SIFT 特征向量,并实现了 SVM,但是我发现很难理解关于如何使用词袋模型“向量量化”SIFT 特征并构建直方图的文献固定大小的向量,可用于训练和测试 SVM。
欢迎任何有关该主题的教程或文献的链接,谢谢
如果可以实现 SVM,则可以量化特征。:)
通常使用 k-means 聚类对特征进行量化。首先,您决定您的“词汇量”应该是多少(比如 200 个“视觉词”),然后针对该数量的集群(200)运行 k-means 聚类。SIFT 描述符是128 个元素的向量,即128 维空间中的点。因此,您可以尝试对它们进行聚类,就像任何其他点一样。您从大量图像中提取 SIFT 描述符,类似于您希望使用特征包进行分类的那些。(理想情况下,这应该是一组单独的图像,但实际上人们通常只是从他们的训练图像集中获取特征。)然后你在这组大的 SIFT 描述符上运行 k-means 聚类,将其划分为 200 个(或其他)集群,即将每个描述符分配给一个簇。k-means 将为您提供 200 个聚类中心,
然后,您获取图像中的每个 SIFT 描述符,并通过找到离它最近的集群中心来确定它属于 200 个集群中的哪一个。然后,您只需计算每个集群中有多少特征。因此,对于具有任意数量的 SIFT 特征的任何图像,您都有 200 个 bin 的直方图。那是您提供给 SVM 的特征向量。(注意,特征一词严重超载)。
我记得,关于如何对这些直方图进行归一化,已经做了很多工作。我可能是错的,但我似乎记得一篇论文声称二进制特征向量(即,如果该集群中至少存在 1 个特征,则为 1,否则为 0)比直方图效果更好。您必须查看文献以获取详细信息,并且细节很重要。
编辑: MATLAB 的计算机视觉系统工具箱现在提供功能包功能。