我正在尝试训练我自己的检测器以与 OpenCV::HOGDescriptor 一起使用,但我无法使现有的 HOGDescriptor 与我新训练的 SVM 一起工作。
我计算了正负训练图像的 HOG 特征,标记它们并使用 CvSVM 训练 SVM。我使用的参数是:
CvSVMParams params;
params.svm_type =CvSVM::EPS_SVR;
params.kernel_type = CvSVM::LINEAR;
params.C = 0.01;
params.p = 0.5;
然后我计算支持向量的原始形式,这样我只得到一个向量而不是多个向量,并使用 HOGDescriptor.setSVMDetector(vector); 设置计算的支持向量;
当我使用 CvSVM.predict() 时,我能够使用 SVM 正确分类对象,但是 HOGDescriptor.detect() 或 detectMultiScale() 总是返回很多正匹配并且不能给出准确的预测。
CvSVM.predict() 使用原始支持向量进行分类,因此我计算原始形式的方式可能有问题。
有没有人训练过自己的探测器,可以为我指明正确的方向?