我在计算机视觉的vlfeat库上相当新手,我在处理它时遇到了问题。我想要做的是使用直方图梯度图(HOG)作为特征向量来在不同维度的LIBSVM图像中进行分类。
我正在处理的第一个问题是vl_hog返回一个HOG矩阵,而不是一个向量。这不是一个真正的问题,因为我可以按照以下方式对该矩阵进行矢量化:
hog = vl_hog(image,cellSize);
features=hog(:);
第二个问题是什么让我感到害怕。因为图像具有不同的尺寸,所以特征向量也有不同的维度,所以用它们提供libsvm是不可能的,或者我错了?我能以更简单的方式解决这个问题吗?我错过了什么吗?
答案 0 :(得分:1)
您需要创建本地功能的全局表示,以便将数据提供给SVM。这项任务最受欢迎的方法之一是词袋(功能)。 vlfeat有一个很好的演示/示例。您可以从vlfeat website检查此代码。
对于您的特定情况,您需要在Caltech-101中安排您的培训/测试数据,如数据目录:
然后您需要调整以下配置设置:
conf.numTrain = 15;
conf.numTest = 15;
conf.numClasses = 102;
此演示使用SIFT作为本地功能,但您可以在之后将其更改为HOG。