SVM 训练 C++ OpenCV

SVM training C++ OpenCV

我的印象是 training data 用于训练 SVM 由图像特征组成,但是在再次 reading this post 之后,training_mat 被赋予示例中的 SVM 只是将 img_mat 扁平化为一维。

所以我的问题是,在训练 SVM 时,您是逐行完整地给出整个图像,还是 detectextract 特征,然后将其中的 Mat 展平为 1-Dimension?

您可以提取特征,也可以使用像素强度值作为特征。在这个例子中,他们做了后者。在这种情况下,您最终会得到非常多的功能,其中许多功能可能没有用。这使得 SVM 训练的收敛更加困难,但仍然是可能的。根据我的个人经验,如果您提取较少数量的 "good" 最能描述您的数据的特征,SVM 的效果会更好。然而,近年来,已经表明,最先进的估计器,如深度神经网络(当使用而不是 SVM 时)可以在仅使用像素强度值作为特征时表现得非常好。这消除了在 public 数据集(如 ImageNet

上产生最先进结果的方法中对特征提取的需要