我需要一些幫助來訓練Android應用程序的SVM。 我有一組圖像在不同的類(12類),並從它們獲取所有描述符。我設法爲每個圖像獲得相同數量的描述符。我需要的是用這些描述符爲我的android應用程序訓練SVM。 我不知道應該在Android模擬器中訓練它還是編寫一個C++程序來訓練SVM,然後將其加載到我的應用程序中(如果我使用OpenCV的lib for windows來訓練SVM並保存它,將我用於Android的庫識別保存的SVM文件?)。我想我不應該在模擬器中訓練帶有這麼大數據集的SVM。 我已經在Weka的SMO(http://www.cs.waikato.ac.nz/ml/weka/)上測試過描述符的數據集,並且獲得了很好的結果,但是我需要實現(或使用openCV的)SVM並將其保存爲未來的分類。OpenCV for Android - 使用SURF描述符訓練SVM
回答
這裏是一個在OpenCV4Android中訓練SVM的例子。 trainData
是一個MatOfFloat
,它的形式將取決於您用來獲取特徵向量的方法。爲了製作trainData
,我用Core.hconcat()
將數據集中每個元素的特徵向量連接成一個單獨的Mat
。
Mat responses = new Mat(1, sizeOfDataset, CvType.CV_32F);
responses.put(0, 0, labelArray); // labelArray is a float[] of labels for the data
CvSVM svm = new CvSVM();
CvSVMParams params = new CvSVMParams();
params.set_svm_type(CvSVM.C_SVC);
params.set_kernel_type(CvSVM.LINEAR);
params.set_term_crit(new TermCriteria(TermCriteria.EPS, 100, 1e-6)); // use TermCriteria.COUNT for speed
svm.train_auto(trainData, responses, new Mat(), new Mat(), params);
我很確定OpenCV使用相同的格式在Android和C++接口中保存SVM。當然,你總是可以培養在Android中SVM和保存XML文件來使用的東西你的模擬器的SD卡一樣
File datasetFile = new File(Environment.getExternalStorageDirectory(), "dataset.xml");
svm.save(datasetFile.getAbsolutePath());
然後從SD卡把它並將其存儲在您的應用程序的文件夾/res/raw
。
非常感謝您的回答!我在設置trainData時遇到了一些麻煩,但在閱讀[this](http://stackoverflow.com/questions/14694810/using-opencv-and-svm-with-images)文章和[documentation](http:// docs.opencv.org/doc/tutorials/ml/introduction_to_svm/introduction_to_svm.html)我想通了。 – 2013-04-28 19:29:23
很高興幫助你:) – 2013-04-28 20:24:21
@ 1'':你可以請提供一些關於[這個問題]的建議(http://stackoverflow.com/questions/29072000/opencv4android-template-matching-using-camera)? – 2015-03-16 08:03:48
- 1. OpenCV線性SVM不訓練
- 2. OpenCV的SURF比較描述
- 3. OpenCv中SVM的訓練矩陣
- 4. OpenCV - 使用SURF描述符和BruteForceMatcher對象匹配
- 5. 連接SURF特徵和氡特徵來訓練SVM
- 6. 加載訓練SVM - Emgu CV
- 7. 使用顏色直方圖訓練支持OpenCV的SVM
- 8. accord.net svm增量訓練
- 9. 使用SURF描述符的miniflann.cpp中的錯誤
- 10. 不同維度的圖像訓練SVM
- 11. OpenCV的3.2.0:訓練SVM閱讀坎尼圖像
- 12. HOG描述符使用Python + OpenCV
- 13. 在Android中使用受過訓練的Scikit-learn svm分類器
- 14. 上身檢測的訓練HOG描述符
- 15. OpenCV 3.0.0 SVM訓練模型保存/加載
- 16. 錯誤,同時節省訓練的SVM在OpenCV中3.2.0的Java
- 17. 一對一地訓練scikit svm(在線或隨機訓練)
- 18. 找不到正確的FAST-SURF匹配當使用openCV for android
- 19. 如何在MATLAB上開始SVM訓練
- 20. 在SVM中只訓練一次python
- 21. 如何訓練matlab中的SVM用於字符識別?
- 22. OpenCV - 從預先裁剪的補丁中提取SIFT/SURF描述符
- 23. Python的OpenCV的手寫識別與SVM,改變訓練和測試量
- 24. 如何在R中使用預訓練的SVM模型?
- 25. OpenCV圖像描述符到JSON
- 26. Java的OpenCV的訓練SVM錯誤 - 輸入樣本必須是1維向量
- 27. 用模式識別算法SURF,SIFT在OpenCV for ANDROID
- 28. 將一個圖像中的SURF描述符與其他圖像中的描述符列表進行比較
- 29. 如何在OpenCV 2.4.13中導入經過訓練的SVM檢測器
- 30. OpenCV HOG描述符上的SVMLight
我是OpenCV的新手,我想問你一個問題。這是什麼意思,你有12個不同的課程? – definera 2014-12-23 21:19:59