【问题标题】:SVM training C++ OpenCVSVM 训练 C++ OpenCV
【发布时间】:2015-04-18 10:38:57
【问题描述】:
我的印象是,用于训练SVM 的training data 包含图像特征,但在再次reading this post 之后,示例中的SVM 的training_mat 只是@ 987654326@ 扁平化为一维。
所以我的问题是,在训练 SVM 时,你是给它完整的图像,逐行,还是你 detect 和 extract 的特征,然后将 Mat 的特征压平变成一维?
【问题讨论】:
标签:
c++
opencv
machine-learning
svm
training-data
【解决方案1】:
您可以提取特征,也可以使用像素强度值作为特征。在这个例子中,他们做了后者。在这种情况下,您最终会得到大量功能,其中许多功能可能无用。这使得 SVM 训练的收敛更加困难,但仍然是可能的。根据我的个人经验,如果您提取较少数量的最能描述您的数据的“好”特征,则 SVM 效果会更好。然而,近年来,已经表明,像深度神经网络这样的最先进的估计器(当使用而不是 SVM 时)可以在仅使用像素强度值作为特征的情况下表现得非常好。这消除了在公共数据集(如ImageNet)上产生最先进结果的方法中对特征提取的需求