2014-10-06 121 views
1

我正在实现一个面部表情识别,并使用SVM对给定的表情进行分类。 当我训练,我用这个命令行阅读svm数据并重新训练更多数据?

svm.train(myFeatureVector,myLabels,Mat(),Mat(), myParameters); 
svm.save("myClassifier.yml"); 

这将在稍后的时候我会预测使用

response = svm.predict(incomingFeatureVector); 

但是当我要训练不止一次(退出程序,并重新开始) ,它似乎覆盖了我以前的svm文件。有没有什么办法可以读取以前的svm文件并向其中添加更多数据(然后重新保存它等)?我抬头一看on this openCV documentation,什么都没发现。但是,当我读on this page;有一种称为CvSVM :: read的方法。我不知道该做什么/如何实施它。

希望有人能帮助我:(

+1

没有,再培训的SVM是不可能的。有提供在线支持向量机不同的库,但OpenCV中的不是其中之一 – 2014-10-06 16:56:53

+0

Are you sure?所以这没有任何解决方案? ( – 2014-10-06 17:15:51

+0

就像我提到的,一些在线学习库可用。 OpenCV的SVM不支持这一点,它所基于的LibSVM也不支持。 – 2014-10-06 20:24:01

回答

1

你正在尝试做的是增量学习但遗憾的是支持向量机是批处理算法,因此,如果您要添加更多的数据,你有整套的再培训试。

有在线学习的替代品,像台Pegasos SVM但我不知道有任何被上OpenCV的实施

+0

我认为这是我现在可以使用的最好的方法..但是这会很麻烦,因为这意味着需要更多的数据来训练,它需要更多的时间来训练(到目前为止它不到一分钟......但仍然会如果我可以重新训练它,那就太棒了。) – 2014-10-07 14:45:17