【发布时间】:2013-03-10 01:30:15
【问题描述】:
我正在尝试对足球场上的码数进行分类。我能够很好地检测到它们(不同的方法)。我在十位数字'1,2,3,4,5'周围画了一个最小的边界框。我的目标是对它们进行分类。
我一直在尝试根据从训练集中提取的 hog 特征来训练 SVM 分类器。我的训练数字的一小部分在这里:http://ssadanand.imgur.com/all/
在训练时,我可视化了我的猪描述符,它们看起来是正确的。我使用 64X128 的训练窗口和 OPencv 的 HOGDescriptor 使用的其他默认参数。
一旦我训练了我的图像(每类 50 个样本,5 个类),我就有一个 250X3780 的训练向量和 1X250 的标签向量,其中包含我提供给 CvSVM 对象的类标签值。这是我有问题的地方。
我在使用 CvSVM 时尝试使用默认的 CvSVMParams()。在训练集上测试时表现糟糕!
我尝试自定义我的 CvSVPARAMS 这样做:
CvSVMParams params = CvSVMParams();
params.svm_type = CvSVM::EPS_SVR;
params.kernel_type = CvSVM::POLY;
params.C = 1; params.p = 0.5; params.degree = 1;
即使我在训练集上进行测试,这些参数和我的 SVM 分类器的不同变化也非常糟糕!
有人可以帮我为这个 5 类分类器参数化我的 SVM 吗? 我不明白我必须使用哪个内核和什么 svm 类型来解决这个问题。另外,我到底应该如何找出我的 svm 的 c、p、degree 的值?
我会假设这是一个非常简单的分类问题,因为我的所有对象都很好地限制在一个盒子中,分辨率相当好,并且类别,即:数字 1、2、3、4、5 在外观上相当独特。我不明白为什么我的 SVM 表现如此糟糕。我在这里错过了什么?
【问题讨论】:
标签: opencv classification svm