SVM能预测看不见的表情吗
Can SVM predict unseen expression
我对支持向量机(SVM)感到困惑。
我正在OpenCV库中使用SVM实现面部表情识别。我有一个分类器,它是从不同人群的七种基本人类表情(中性、快乐、悲伤、惊讶、愤怒、恐惧和厌恶)中训练出来的。让我们假设一个新人进来,SVM试图预测这个人。它能猜对吗(或者至少能以较低的识别率识别它)?
我试着这样做,并使用交叉验证(将训练和测试集分开)进行检查,经过多次迭代,识别率平均在50%左右。然而,如果我在它已经在训练集中学习的面部图像上进行测试,识别率会提高到90%。
这篇同样做面部表情识别的论文说:
我们的方法以机器学习系统为基础支持向量机(SVM)。人脸特征跟踪器从中的特征运动中收集一组位移视频流。这些随后用于训练SVM分类器识别以前看不见的表达式
所以我的主要问题是,
这是否意味着SVM无法正确预测一个看不见的样本(一个模仿上述表达的新人)
希望有人能帮忙,我希望我足够清楚
p.S我所说的看不见的表情是指一个新的人(SVM以前从未见过),但这个人模仿了我上面提到的一个表情。而不是其他表达式。
"以前看不见的表达式"只是指看不见样本,模型可以是svm、决策树或其他分类模型。
我认为,看不见的面部图像精度下降的原因与你选择的特征有关,而这可能与特定的人高度相关。特征选择方法可能有帮助,模型中的L1调节(L1-SVM)可能有帮助。
当然,SVM可以正确预测看不见的表达式——这就是"泛化"的实际含义。然而,除了你在训练集中收集的表情之外,它无法预测其他人类表情(这在这里不是问题)。
当然,预测看不见的面孔比预测训练模型的数据更难。所以,不用担心,只要像你已经做的那样使用你的机器。另一方面,如果你想减少泛化误差,你可以尝试使用其他功能。
我不知道如何理解你的问题。。。
首先,您似乎在识别known expressions
(即(neutral, happy, sad, surprise, anger, fear, and disgust)
)的泛化方面存在问题。
通常,使用机器学习的目的是将新的人脸图像分类为这些表情中的一个。所学习的泛化将是识别未知人脸上的那些表情(或者仅仅是已知人脸的新/未知图像)。
但你要求对新的表达进行分类,例如confused
,它在整个学习过程中不是主题,也与已知的表达无关(例如,如果困惑,则是惊讶和愤怒的混合)?但这是不可能的。你能做的就是有一个unknown expression
类。只要您识别出unknown expression
,就会保存这些信息。从所有收集到的unknown expression
样本中,您可以手动或自动尝试分离新的表达簇!
- std::vector的包装器,使数组的结构看起来像结构的数组
- 看起来is_nothrow_constructible_v()在MSVC中被破坏了,我错了吗
- 从函数角度看ID到文件路径的内部与外部映射
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- 学习多线程C++:添加线程不会使执行速度更快,即使它看起来应该
- C++驱动程序看不到头文件
- 请解释字谜的代码,我看不懂计数器数组,每个值已经是0
- 在 SVM-Struct 中未定义对 sqrt 的引用(已使用 -lm)
- 尽管一切看起来都很好,但值不会交换
- 自制的上衣:看起来一样,但不完全相同
- 看不到文件'SDL2.lib'
- WSL 看不到环境变量
- 为什么我的 FreeRTOS 任务看不到类成员?
- C++:处理错误,看不懂我的错误
- Google Colab 看不到 .so 文件
- 派生类看不到基类成员
- 为什么我看不到字符串?
- Qmenubar在Linux上缺少或看不见
- 格温+普朗格什么也看不见
- SVM能预测看不见的表情吗