【问题标题】:Training a model for Latent-SVM为 Latent-SVM 训练模型
【发布时间】:2015-09-18 18:29:31
【问题描述】:

同事们早上好!

我非常喜欢从我自己的面部数据集训练一个新模型!

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

我将尝试解释训练我自己的模型所需执行的步骤以及稍后的一些问题...

  • 我已经从http://cs.brown.edu/~pff/latent-release4/下载了Latent code
  • 我已经从http://host.robots.ox.ac.uk/pascal/VOC/voc2008/index.html 下载了 PASCAL VOC 2008 代码 (devkit)
  • 我模拟了 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. 我是否必须在函数内部选择​​我想要的模型中的零件数量?
  4. 请您想象我有两种样本(正面和侧面),我想同时检测这两种样本...我该如何解决这个问题?我以为我必须训练一个包含两个组件的模型......但是我怎样才能告诉训练代码是正面样本还是侧面样本?在带有标签姿势的注释中? (我不这么认为......)还有其他方法可以处理这个目的吗?

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

【问题讨论】:

  • 嗯....@3yanlis1bos 或 Pablo Rivas,也许你可以帮助我。我收集了这组图像来训练两个模型(正面和侧面):*(正面 300 个 + 侧面 300 个)正样本 --> trainval.txt * (1000) 负样本 --> train.txt * (100)测试样本 --> test.txt 由于我的图像非常静态(它们之间非常相似),我随机旋转了一些度数以在训练中产生一些可变性。那是对的吗?我的问题是,当我运行检测器时,正样本和负样本的分数非常相似......然后我得到了太多的 FP 和 FN......谢谢!

标签: matlab model svm


【解决方案1】:

我认为test.txt 应该包含样本(图像),这些样本(图像)将用于估计系统在学习人脸后的表现。但是,trainval.txt是在学习阶段(训练)用来微调模型的参数;它是监督学习的重要组成部分。

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

  • 训练一个 SVM 以检测输入图像是正面还是侧面。将其称为 SVM-0。
  • 为正面训练另一个 SVM。此 SVM 将对您的所有个人进行分类。但是请注意,SVM 通常是一个二元分类器,因此请确保您选择了正确的 SVM,它是一种多类架构。打电话给SVM-F。
  • 为侧面传输最终 SVM。同样,使用多类 SVM。叫它SVM-S。

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

根据我的经验,SVM-S 的性能应该会非常低。这是一个很难解决的问题。但是正面人脸并不是什么大问题,除非您正在处理姿势、光照和表情 (PIE) 不同的人脸。图像中的 PIE 变化会极大地影响人脸识别。

我推荐你this website,它为初学者提供了非常好的信息和教程,无论是否有经验。

【讨论】:

  • 非常感谢您的回答!! :) 然后: - trainval.txt 是训练模型的正样本 - train.txt 是训练模型的负样本 - test.txt 是其他带注释的样本(正样本和负样本),用于训练模型以检查训练情况的正样本......对吗?这部分(test.txt)对最终模型有影响(对训练有影响吗?)?我正在检测面部(及其姿势),但我不需要识别它们。我的目标是判断人的脸是否可见(或不可见)和姿势(正面/侧面)。 我说的对吗?
  • 不完全。请参阅,train.txt、trainval.txt 和 test.txt 都应该包含正样本和负样本。我推荐你 [youtu.be/4wGquWG-vGw](watch 这个视频),它解释了训练、验证和测试集的概念。如果您的意图是 1) 检测人脸,以及 2) 检测它是否是正面/侧面,那么问题比我想象的要简单。首先,训练一个支持向量机来检测face(+ 类)或not a face(- 类)。其次,训练另一个 SVM 来检测人脸是frontal(+ 类)还是lateral(- 类)。您需要样本来训练两个 SVM。
猜你喜欢
  • 2017-11-29
  • 2016-05-31
  • 2023-03-14
  • 2016-10-25
  • 2015-12-24
  • 2015-05-04
  • 2015-07-25
  • 2012-11-03
  • 2015-04-18
相关资源
最近更新 更多