2015-07-01 59 views
0

好的同事!训练隐性支持向量机的模型

我非常喜欢用我自己的数据集来训练一个新模型!

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

我会尽量解释我都需要做训练我自己的模型和步骤以后的一些问题...

  • 我从下载潜代码:http://cs.brown.edu/~pff/latent-release4/
  • 我有下载从PASCAL VOC 2008码(的devkit):http://host.robots.ox.ac.uk/pascal/VOC/voc2008/index.html
  • 我有效仿文件的结构/ VOC的PASCAL的,但在我自己的数据集文件夹:
    • 注释。我已经创建了一个.xml,我已经定义了一个对象,脸,(每张图片中我只有一张脸)。我没有界定困难或姿势...
    • 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. 请你想象我有两种样品(正面和侧面),我想检测两种样品......我该如何解决这个问题?我以为我必须训练一个有两个部件的模型......但是我怎样才能告诉训练码是正面还是侧面的样本?在带有标签姿势的注释中? (我不这么认为......)还有其他方法来解决这个问题吗?

谢谢你的时间! 我希望你能解决我的疑惑:)

+0

那么.... @ 3yanlis1bos或巴勃罗里瓦斯,也许你可以帮助我。 我收集这些图像集合以训练两种模型(正面和侧面): *(300正面+300横向)正样本 - > trainval.txt *(1000)负样本 - > train.txt *(100)测试样本 - > test.txt 由于我的图像非常静态(它们之间非常相似),我随机轮换一些度数以在训练中产生一些变化。 这是正确的吗? 我的问题是,当我运行我的探测器时,正面和负面样品的分数是相似的...然后我得到太多的FP和FN ... 感谢! – Ricardo

回答

0

我认为test.txt应该包含样本(图片),将用于估计系统在学习脸后有多好。然而,在学习阶段(训练)使用trainval.txt来微调模型的参数;它是监督式学习的重要组成部分。

此外,很难让单个SVM对正面和侧面的人脸进行分类。这里是我的建议:

  • 训练一个SVM来检测输入图像是正面还是侧面。称之为SVM-0
  • 训练另一个用于正面的SVM。这个SVM将分类你所有的人。但是,请注意,SVM通常是一个二元分类器,因此请确保选择正确的SVM,作为多类体系结构。致电SVM-F
  • Tran支持侧面的最终SVM。再次使用多类SVM。叫它SVM-S

存在于输入图像SVM-0,如果检测到它是一个正面面部,再次呈现输入到SVM-F;否则,请输入SVM-S

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

我建议你this website,它包含非常好的信息和初学者教程,无论是否有经验。

+0

非常感谢您的回答! :) 然后: - ** trainval.txt **是训练模型的阳性样本 - ** train.txt **是训练模型的阴性样本 - ** test.txt **是其他注释样本(正面和负面)阳性样本来训练模型以检查训练是如何的......对吗?这部分(test.txt)会影响最终模型(影响训练?)? 我在检测面孔(和他们的姿势),但我不需要识别它们。我的目标是告诉人脸是否可见(或不是)和姿势(正面/侧面)。 **我对吗?** – Ricardo

+0

不完全。看,'火车。txt','trainval.txt'和'test.txt'都应该包含正和负样本。我建议你[https://youtu.be/4wGquWG-vGw](看这个视频)解释培训,验证和测试集的概念。如果你的目的是1)检测一张脸,2)检测是否是正面/侧面,那么问题比我想象的要简单。首先,训练一个支持向量机检测一个“face”(+ class)或'not a face'( - class)。其次,训练另一个SVM,它将检测脸部是“正面”(+类)还是“横向”( - 类)。您需要样本来训练两个SVM。 –

相关问题