我正在尝试对足球场上的码数进行分类。我能够很好地检测到它们(不同的方法)。我在十位数字'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 表现如此糟糕。我在这里想念什么?