我对支持向量机(SVM)感到困惑。
我正在OpenCV库中使用SVM实现面部表情识别。我有一个分类器,来自不同人群的七种基本人类表达(中立,快乐,悲伤,惊讶,愤怒,恐惧和厌恶)的集合。让我们说一个新人进来,SVM试图预测这个人。它会正确猜测(或至少以较低的识别率识别它)?
我尝试这样做并检查使用交叉验证(我将培训和测试集分开),经过多次迭代后,识别率平均约为50%。但是,如果我测试面部图像,它已经在训练集中学习,识别率提高了90%。
同样进行面部表情识别的我们的方法基于机器学习系统 支持向量机(SVM)。面部特征跟踪器 从特征运动中收集一组位移 视频流。这些随后用于训练SVM 分类器识别以前看不见的表达
所以我的主要问题是,
这是否意味着SVM无法正确预测看不见的样本(模仿上述某个表达的新人)?
希望有人可以提供帮助,我希望我足够清楚
P.S我所说的看不见的表达方式是一个新人(SVM以前从未见过),但是这个人模仿我上面提到的一个表达式。不是其他表达方式。
答案 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}}收集的所有样本中,您可以手动或自动尝试分离新的表达式群集!