2014-10-06 33 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