gpt4 book ai didi

android - OpenCV for Android - 使用 SURF 描述符训练 SVM

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:39:25 51 4
gpt4 key购买 nike

我需要一些帮助来为 Android 应用程序训练 SVM。我有一组不同类别(12 个类别)的图像,并从中获取了所有描述符。我设法为每个图像获得相同数量的描述符。我需要的是使用这些描述符为我的 android 应用程序训练 SVM。我不确定我是否应该在 Android 模拟器中训练它或编写 C++ 程序来训练 SVM,然后将其加载到我的应用程序中(如果我使用 OpenCV 的 windows 库来训练 SVM,然后保存它,将我用于 Android 的 lib 识别保存的 SVM 文件?)。我想我不应该在模拟器中用这么大的数据集训练支持向量机。我已经在 Weka ( http://www.cs.waikato.ac.nz/ml/weka/ ) 的 SMO 上测试了我的描述符数据集并获得了良好的结果,但我需要实现(或使用 openCV 的)SVM 并保存它以供将来分类训练。

最佳答案

这是在 OpenCV4Android 中训练 SVM 的示例。 trainDataMatOfFloat ,其形式将取决于您用来获取特征向量的方法。制作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++ 接口(interface)中保存 SVM。当然,您始终可以在 Android 中训练 SVM 并将 XML 文件保存到模拟器的 SD 卡中,使用类似

File datasetFile = new File(Environment.getExternalStorageDirectory(), "dataset.xml");
svm.save(datasetFile.getAbsolutePath());

然后将其从 SD 卡中取出并存储在您应用的 /res/raw 中文件夹。

关于android - OpenCV for Android - 使用 SURF 描述符训练 SVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16162150/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com