Visual c++ SVM训练用于推断视频中相对于其他两个点的点位置 我想用OpenCV C++来训练一个SVM,以便推断出图像中的点相对于所需点的两个其他点的位置。

Visual c++ SVM训练用于推断视频中相对于其他两个点的点位置 我想用OpenCV C++来训练一个SVM,以便推断出图像中的点相对于所需点的两个其他点的位置。,visual-c++,opencv,svm,training-data,Visual C++,Opencv,Svm,Training Data,基本上,我有整个视频中三个点的轨迹,我想用这些轨迹作为SVM的训练数据 我是机器学习技术的新手,读了一些书之后,我想我已经理解了,如果同时满足某些条件,SVM将返回布尔结果true,如果不满足,则返回false。在我的情况下,我需要一个在图像中的位置作为结果 我不确定该如何组织培训,我在想这样做: T1 T2 T3标签=1 其中T1、T2和T3包含属于三条轨迹的所有点,我知道这三条轨迹是正确的 T1 T2 T4标签=-1 其中T1和T2与之前相同,而T4包含不在轨迹T3上的随机点 一旦我用不同视

基本上,我有整个视频中三个点的轨迹,我想用这些轨迹作为SVM的训练数据

我是机器学习技术的新手,读了一些书之后,我想我已经理解了,如果同时满足某些条件,SVM将返回布尔结果true,如果不满足,则返回false。在我的情况下,我需要一个在图像中的位置作为结果

我不确定该如何组织培训,我在想这样做:

T1 T2 T3标签=1

其中T1、T2和T3包含属于三条轨迹的所有点,我知道这三条轨迹是正确的

T1 T2 T4标签=-1

其中T1和T2与之前相同,而T4包含不在轨迹T3上的随机点

一旦我用不同视频的不同轨迹训练了SVM,我想通过三个点:P1x,y和P2x,y对应于时间t的T1和T2,以及一个随机点Px,y,SVM应该预测随机点是否在想要的位置

任何人都可以向我解释这种方法是否错误以及为什么


谢谢

这种方法是错误的,主要是因为yout问题不是一个二进制分类问题。这是一个回归问题。您想要的输出是一个值,而不是一个二进制数,因此训练SVM或任何其他二进制分类器都不是一个好主意。分类问题是从您的输入数据搜索映射到一些有限和小的可能标签集,如真和假,或猫,狗或脸。另一方面,回归是寻找从输入数据到可能的多维实值空间的映射,因此,不是标签,而是寻找实际值。在你的例子中,你寻找坐标,我认为是两个实数。如果将问题建模为二进制分类,则:

没有合理的方法来创建训练集-你只有正面的例子,你可以通过获取不正确的点来生成负面的例子,但大多数都是,最好是训练一个单类SVM,但如前所述-这根本不是一个分类问题 实际的测试会非常复杂,因为你必须问每一点,这是一个正确的答案吗? 相反,您应该使用表单数据训练任何回归模型

(point_1, point_2) -> point_3
所以模型可以找到一个函数,它将两个输入点映射到一个输出点上。此任务有许多可能的模型:

线性回归 神经网络 支持向量回归 简言之:

您的输出是一个标签,离散值来自有限集->分类器 您的输出是一个连续值->reggresion模型 如果您仍然不清楚,我建议您观看斯坦福大学的一段精彩视频:

我不明白为什么要使用机器学习来推断图像中某个点相对于所需点相关的其他两个点的位置。你能解释一下吗?通缉点的轨迹在视频之间是相似的,所以我想使用机器学习来根据我知道的两个相关点的位置推断出轨迹中的位置,这是一个很好的解释。我对训练有疑问,有没有办法训练一个神经网络来定义发生点???