【发布时间】:2017-11-30 10:23:04
【问题描述】:
我对海洋图像进行了 SVM 训练和分类。我通过 HoG 提取特征并训练了特征。在将特征标记为 1 和 0 后,我测试了我的图像。结果,我总是有 50%。我想也许我的图像不好,所以我单独测试了每张图像并去掉了不好的图像。当我测试一张图像时,准确率是 100%。然后,当我将另一个图像添加到测试图像文件夹(也有 100% 的准确率)时,我得到了大约 54% 的结果。总的来说,我在两个测试图像中有两个错误标记的特征。我不明白为什么我的准确率很低。这是我用来计算的公式;
acc = numel(find(Predict_label==test_label))/length(test_label);
disp(['Accuracy ', num2str(acc)])
谢谢。
【问题讨论】:
-
提供更多代码。
Predict_label和test_label的尺寸是多少。例如。size(Predict_label)的结果是什么?您显示的代码部分看起来是正确的。我也不明白如果你只有 2 张图片,你怎么能得到 54%。它是 0、50 或 100.. -
可能有很多原因。这可能是 HOG 功能的问题 - 可能是窗口太小,角度箱的精度不够,可能归一化不正确等。这可能是您选择的内核。它也可能是您选择的图像。这里不足以告诉你你的分类发生了什么。你需要告诉我们更多关于你是如何训练你的 SVM 的。请分享一些代码或其他内容,让我们了解您在训练模型时实际所做的工作。顺便说一句,做
numel + find非常糟糕。只需使用nnz。有些图片也不错。 -
我正在从有效点中提取 HoG 特征。我错误地解释了我正在训练的内容。我正在围绕有效点训练特征。所以我在水平线上有 50 个随机位置,在背景上有 50 个随机位置。每个图像都有地面实况数据。两者的尺寸均为 198x1。我尝试过不同的内核,正如我所说的,当我单独检查图像时,准确度是 100%。当我添加第二张图片时,问题就开始了。什么是nnz?我应该在代码中添加哪一部分(培训、测试)?
-
你的解释真的很混乱。一些解释你在做什么的图片会有所帮助。此外,编辑您的问题并添加更多代码。
nnz只是替换numel(find(..。 -
我添加了一些代码,这些是示例结果; imgur.com/a/QbF7j 在结果图像中绿色表示正确,红色表示错误。
标签: matlab image-processing machine-learning classification svm