实时SVM性能差

时间:2018-04-04 02:24:43

标签: python scikit-learn computer-vision classification svm

我正在制作一个手势识别程序。我的数据集由不同姿势的双手组成。我试图在跳入神经网络之前使用SVM获得基线。我的数据集有6个我正在尝试分类的类,每个类有大约1000个例子。

我使用了80-20分裂。 80%用于培训,20%用于测试。在测试集上运行SVM模型之后,我正在绘制一个混淆矩阵,它表明它的精度达到了~96%,召回率达到了96%,F1得分达到了96%。

以下是我的训练集图像的一些示例:

https://imgur.com/gwRSx3C
https://imgur.com/UxUPj5t
https://imgur.com/wXcaUq6

网络摄像头图片

https://imgur.com/j97cTnp
https://imgur.com/6QDHMAD
https://imgur.com/C9DELsr

以下是我的网络摄像头中的一些图片。

我很自然地被激怒了。唯一不足的是,当我将我的模型连接到网络摄像头进行实时推理时,该模型是临界对接。任何人都有任何想法,如果精度,召回,f1如此之高,为什么它会如此糟糕?

1 个答案:

答案 0 :(得分:1)

有2个可能的答案

  1. 您的模型过度拟合。

  2. 从中提取训练和测试数据集的分布与网络摄像头的数据不同。

  3. 我认为您的问题是您的网络摄像头数据与您的训练数据有很大不同。

    要调试模型,您应该执行以下操作

    • 将训练数据与网络摄像头图像进行比较。
    • 使用验证集,仅在最后一刻使用测试集。
    • 重新考虑您的功能。
    • 使用您的部分网络摄像头数据进行训练并混合到数据集中。