【发布时间】:2014-05-15 02:13:16
【问题描述】:
我在尝试使用 SVM 训练数据时遇到了一个问题。 我从人脸图像中得到了一些不同的区域(一组连接的像素),而眼睛的区域非常相似,所以我想使用 Hu 矩进行形状描述和 SVM 进行训练。 但是 SVM 不能正常工作,方法 svm.predict 之后将所有内容评估为非眼睛,此外,在训练阶段标记和使用的相同区域作为眼睛,被评估为非眼睛。 特征数据仅包含 7 个 Hu 矩。稍后我会在这里发布一些源代码示例,在此先感谢:)
附加信息:
输入图像: http://i.stack.imgur.com/GyLO0.png
为 1 张图片设置基本 svm:
int image_regions = 10;
Mat training_mat(image_regions ,7,CV_32FC1); // 7 hu moments
Mat labels(image_regions ,1,CV_32FC1); // for labels 1 (eye) and -1 (non eye)
// computing hu moments
Moments moments2=moments(croppedImage,false);
double hu[7];
HuMoments(moments2,hu);
// putting them into svm traning mat
for (int k=0;k<huCounter;k++)
training_mat.at<float>(counter,k) = hu[k]; // counter is current number of region
if (isEye(...))
{
labels.at<float>(counter,0)=1.0;
}
else
{
labels.at<float>(counter,0)=-1.0;
}
//I use the following:
CvSVM svm;
CvSVMParams params;
params.svm_type = CvSVM::C_SVC;
params.kernel_type = CvSVM::LINEAR;
params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER, 1000, 1e-6);
// ... do the above mentioned phase, and then:
svm.train(training_mat, labels, Mat(), Mat(), params);
【问题讨论】:
-
7 个幽默可能不足以进行分类的“特征空间”
-
你只有 10 个特征/幽默来训练?
-
大家好,我只是在对训练阶段使用的相同数据进行训练后尝试运行 SVM,但我仍然得到 svmpredict() 响应 -1(非眼睛)的结果,甚至在标记为 1(眼睛)的特征上
标签: c++ opencv computer-vision svm