我正在编写一个使用 SVM 对某些图像(特别是这些图像)进行分类的应用程序。我的 Matlab 实现效果很好。使用 SIFT bag-of-words 方法,我能够通过线性内核获得接近 100% 的准确度。
出于速度/可移植性的原因,我需要在 C++ 中实现这一点,因此我尝试同时使用libsvm和dlib。我尝试了多种 SVM 类型(c_svm、nu_svm、one_class)和多个内核(线性、多项式、rbf)。我能够达到的最好结果是大约 50% 的准确率——即使在我训练过的相同样本上也是如此。我已经确认我的特征生成器正在工作,因为当我将 c++ 生成的特征导出到 Matlab 并对其进行训练时,我能够再次获得近乎完美的结果。
Matlab 的 SVM 实现有什么神奇之处吗?是否有任何我可能会研究的常见陷阱或领域来解释我所看到的行为?我知道这有点含糊,但部分问题是我不知道该去哪里。如果我可以提供其他有用的信息,请在评论中告诉我。