SVM可以预测看不见的表达

时间:2014-10-14 09:42:49

标签: c++ opencv machine-learning svm

我对支持向量机(SVM)感到困惑。

我正在OpenCV库中使用SVM实现面部表情识别。我有一个分类器,来自不同人群的七种基本人类表达(中立,快乐,悲伤,惊讶,愤怒,恐惧和厌恶)的集合。让我们说一个新人进来,SVM试图预测这个人。它会正确猜测(或至少以较低的识别率识别它)?

我尝试这样做并检查使用交叉验证(我将培训和测试集分开),经过多次迭代后,识别率平均约为50%。但是,如果我测试面部图像,它已经在训练集中学习,识别率提高了90%。

同样进行面部表情识别的

This paper说:

  

我们的方法基于机器学习系统   支持向量机(SVM)。面部特征跟踪器   从特征运动中收集一组位移   视频流。这些随后用于训练SVM   分类器识别以前看不见的表达

所以我的主要问题是,

这是否意味着SVM无法正确预测看不见的样本(模仿上述某个表达的新人)?

希望有人可以提供帮助,我希望我足够清楚

P.S我所说的看不见的表达方式是一个新人(SVM以前从未见过),但是这个人模仿我上面提到的一个表达式。不是其他表达方式。

3 个答案:

答案 0 :(得分:0)

“以前看不见的表达”只是意味着看不见的样本,模型可以是svm,决策树或其他分类模型。

我认为在看不见的面部图像中精度降低的原因与您选择的功能有关,这可能与特定的人高度相关。特征选择方法可以帮助,模型中的L1调整(L1-SVM)可能有所帮助。

答案 1 :(得分:0)

当然,SVM可以正确地预测看不见的表达 - 这实际上意味着"泛化"。然而,它不能预测其他人类表达而不是你在训练集中收集的表达(这不是问题)。

而且,自然地,预测看不见的面孔比预测模型训练的数据更难。所以,不用担心,只需使用你已经做过的机器。另一方面,如果要减少泛化错误,可以尝试使用其他功能。

答案 2 :(得分:0)

我不确定如何理解你的问题...

首先,您似乎在识别known expressions (neutral, happy, sad, surprise, anger, fear, and disgust)时会出现问题。confused

通常,使用机器学习的目的是将新的面部图像分类为其中一个表达式。学习的概括将是识别未知面部上的表达(或者只是已知面部的新/未知图像)。

但是你要求分类为新的表达式,例如unknown expression,这在整个学习过程中不是主题,并且与已知的表达式无关(例如,如果混淆了惊喜和愤怒的混合)? Afaik这是不可能的。 你能做的就是拥有一个班级unknown expression。每当您识别unknown expression时,您都会保存这些信息。从{{1}}收集的所有样本中,您可以手动或自动尝试分离新的表达式群集!