Hu 矩和 SVM 不起作用

Posted

技术标签:

【中文标题】Hu 矩和 SVM 不起作用【英文标题】:Hu moments and SVM does not work 【发布时间】: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(眼睛)的特征上 【参考方案1】:

希望下面的建议可以帮到你……..

    最简单的任务是使用聚类算法并尝试将数据聚类为两类。如果像“k-means”这样的算法可以完成这项工作,为什么还要使用 SVM 和神经网络来让事情变得复杂。我建议您使用这种技术,因为您的特征向量维度非常小(7 Hu Moments)以及您的样本数量。

    执行特征归一化(在第 4 点中指定)以确保值落在有限范围内。

    查看“您的数据真的可分离吗?”由于您的数据很小,请从正图像中获取一些样本,从负图像中获取一些样本并绘制特征向量。如果您可以直观地看到差异,那么任何学习算法都可以为您完成这项工作。正如我之前所说,简单的技巧比复杂的数学做得更好。

    只有当您决定使用 SVM 时,您才应该了解以下内容:

    • 从您的代码中可以看出,您使用的是线性 SVM,可能是您的数据不能被线性内核分离。尝试使用一些多项式内核或其他内核。 openCV 有一个选项 bool CvSVM::train_auto 看看就好。

    • 尝试检查你得到的特征向量值是否是正确的值(确保它们不是一些垃圾值)。

    • 您还可以在将其用于训练之前执行特征归一化“ZERO MEAN and UNIT VARIENCE”。

    • 最重要的是增加训练图像的数量,包括正面和负面标记。

    • 最后但同样重要的是,SVM 并不神奇,归根结底,它只是在两组点之间画一条线。所以不要指望它会把你给它的任何东西分类为输入。

    如果没有任何效果“只需改进您的特征提取技术”

【讨论】:

以上是关于Hu 矩和 SVM 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

transpportrule不起作用

PHP.INI不起作用

C#DataGridView的行列表头背景色字体色不起作用

关于Animate css不起作用的原因

修改php.ini不起作用是为啥

Vba窗体的keydown怎么不起作用