实时 SVM 性能差

Poor real-time SVM performance

我正在开发一个手势识别程序。我的数据集由不同姿势的手组成。在进入神经网络之前,我尝试使用 SVM 来获取基线。我的数据集有 6 个 class 我正在尝试 class 验证,每个 class.

大约有 1000 个示例

我使用了 80-20 的拆分。 80% 用于训练,20% 用于测试。在 运行 测试集上的 SVM 模型之后,我绘制了一个混淆矩阵,它向我展示了它获得 ~96% Precision 、~96% Recall 和 ~96% F1-Score。

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

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 如此之高,有人知道为什么它会做得这么糟糕吗?

有 2 个可能的答案

  1. 您的模型过拟合。

  2. 您的训练和测试数据集的来源分布与您网络摄像头的数据不同。


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

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

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