为Latent-SVM训练模型

时间:2015-07-01 14:21:41

标签: matlab model svm

早上好的同事们!

我正在从我自己的数据集中训练一个新模型!

我没有找到关于这个主题的信息,然后我希望我的信息可以帮助人们,我也可以得到一些答案。

我将尝试解释我需要采取的步骤来训练我自己的模型,然后再讨论一些问题......

  • 我已从http://cs.brown.edu/~pff/latent-release4/
  • 下载潜在代码
  • 我从http://host.robots.ox.ac.uk/pascal/VOC/voc2008/index.html
  • 下载了PASCAL VOC 2008代码(devkit)
  • 我已经模拟了VOC PASCAL的文件/文件夹的结构,但在我自己的数据集中:
    • 注释即可。我创建了一个.xml,我已经定义了一个对象,face,(在每个图像中我只有一个面)。我没有定义困难或构成......
    • JPEGImages 我存储了所有图片
    • ImageSets 我在其中定义了三个文件:
      • test.txt ,在那里我写了我的阳性样本的文件名
      • train.txt ,在那里我写了负面样本的文件名
      • trainval.txt ,在那里我写了我的正样本的文件名(与test.txt完全相同的文件)。
  • 我在globals.m和VOCinit.m中更改了一些内容(告诉算法路径和某些文件的位置......)

然后我用命令运行训练:pascal(' face',1);

按照这些步骤,我已经完成了训练,并且没有失败,我得到了自己的模型但是我有些怀疑......

  1. 你能在我的解释中看到任何奇怪的东西吗?可以吗?
  2. 文件test.txt / trainval.txt必须相等吗?为什么......这是什么意思?
  3. 我是否必须在模型INSIDE函数中选择我想要的零件数量?
  4. 请你想象我有两种样品(正面和侧面),我想要检测两种样品......我怎样才能解决这个问题?我想我必须训练一个带有两个组件的模型......但是我怎么能告诉训练代码哪个是正面或侧面样本?在带有标签姿势的注释中? (我不这么认为......)还有其他办法可以达到这个目的吗?
  5. 感谢您的时间! 我希望你能解决我的疑虑:)

1 个答案:

答案 0 :(得分:0)

我认为test.txt应该包含样本(图像),用于估计学习面部后系统的好坏程度。但是,在学习阶段(训练)期间使用trainval.txt来微调模型的参数;它是监督学习的重要组成部分。

此外,很难有一个单独的SVM来分类正面和侧面的面。这是我的建议:

  • 训练一个SVM以检测输入图像是正面还是侧面。称之为SVM-0
  • 为正面训练另一个SVM。此SVM将对您的所有个人进行分类。但请注意,SVM通常是二进制分类器,因此请确保选择正确的SVM,即作为多类体系结构的SVM。请拨打此SVM-F
  • 为横向面孔制作最终的SVM。同样,使用多类SVM。称之为SVM-S

将输入图像呈现给SVM-0,如果检测到它是正面,则再次将输入呈现给SVM-F;否则,将输入提供给SVM-S

根据我的经验,您应该期望SVM-S的效果非常低。这是一个难以解决的问题。但正面并不是什么大问题,除非你正在处理姿势,光照和表情(PIE)不同的面孔。通过图像中的PIE变化,人脸识别受到很大影响。

我建议您this website,它包含非常好的信息和初学者教程,有或没有经验。