利用SVM方法对可能有效的特征进行分类。SVM是典型的机器学习方法。
考虑到代码简单易操作,采用保存特征向量文件,离线训练SVM模型,然后在线predict的方法。以后可以加入opencv的SVM部分代码
(融入opencv的code)。
步骤1:保存特征向量文件
这里采用svmLight的文件结构,每个特征向量保存成
1 6:0.0198403253586671 15:0.0339873732306071 29:0.0360280968798065 31:0.0378103484117687 41:0.0456787263779904
63:0.021442413608662
-1 6:0.0123633287504592 10:0.0521393287595611 11:0.111113376990214 13:0.0821691181155986 18:0.0330902766305449
27:0.0179995240985769
正样本和负样本个数大概在1:2的比例
Implement:在程序中定义一个结构,用来保存视频中每帧计算得到的Features,然后根据标记文件,输出此时的Feature到文件。
特征向量文件保存在硬盘里面,如fopen("D:\\train.dat", "ab+");
步骤2:离线训练SVM模型
利用svmLight的Learn.exe训练该特征向量文件,得到相应的SVM模型。这里采用线性核,方便predict计算。
svm_learn data1/train.dat data1/train.model
从训练得到的model(简单测试)中,可以看出,该model使用线性核,支持向量有31个,判决阈