OpenCV4Android SVM没有给出正确的预测



我是机器学习和openCV的新手。我从Cohn-Kanade面部数据库中为每种情绪(中性和快乐)拍摄了一组10张图像。然后,我从每个图像中提取面部特征,并将它们放入我的训练数据矩阵中,并为相应的情绪分配标签(例如:0表示中性,1表示快乐)。

我使用了 gamma = 0.1 和 C = 1 的 RBF 内核。训练后,我将传递从智能手机摄像头的实时摄像头帧中提取的面部特征以进行预测。预测始终返回 1。

如果我增加中性表达的训练样本数量

(例如:15 个中性表达图像和 10 个快乐表达图像),则预测始终返回 0,如果训练样本中每个表达式的图像数量相等,则 SVM 预测始终返回 1。

为什么 SVM 会这样运行?如何检查我是否使用了正确的伽玛和 C 值?另外,SVM 是否取决于训练图像和测试图像的分辨率?

我请求您上传 SVM 函数,以便我们理解您的代码。其次,我以前使用过 SVM,您需要规范化训练数据和标签。您还应该确保使用正确的分类器,因为并非所有分类器都受支持。点击此链接了解一些教程 http://docs.opencv.org/3.0-beta/modules/ml/doc/support_vector_machines.html

为了回答您的其他问题,不幸的是,您必须自己找到伽马和C的最佳组合,这是SVM的缺点。 https://www.quora.com/What-are-C-and-gamma-with-regards-to-a-support-vector-machine

是的,SVM 确实取决于分辨率,因为您的特征/特征向量会根据分辨率以及输入和标签而变化。附言理想情况下,这应该在评论中,但不幸的是我没有足够的积分来做到这一点。

相关内容

  • 没有找到相关文章

最新更新