【问题标题】:Time to train classifier训练分类器的时间
【发布时间】:2015-03-25 21:10:02
【问题描述】:

我想训练自己的 haar 级联并生成自己的 xml 文件。但我担心这会占用我全部的时间。我需要为 5 个个人资料图像训练分类器,以便在个人资料图像中检测他们的鼻子和嘴巴。我想知道这样做需要多少时间,因为我只有几天的时间来提交我的项目。另外,opencv中还有其他替代方法可以检测轮廓图像中鼻尖和嘴角的坐标吗?我已经发布了几次关于此的信息,但人们用研究论文来回答。

【问题讨论】:

  • 先尝试训练一个lbp级联。对于几百张图片,它会在几分钟内训练(而不是几天,就像 haar 版本)
  • lbp 级联?我不需要检测人脸,只需要检测人脸图像中的鼻子和嘴巴。我应该如何开始?是否有假人指南? :p

标签: c++ opencv image-processing haar-classifier


【解决方案1】:

如果您没有足够的时间,我建议您使用this library(flandmark)的替代方法(由opencv 完成)。它非常容易集成(不超过 3 分钟)。

Download 文件(cpp,h),把它们放在你的项目目录中。 不要忘记在你的代码中调用这一行:

FLANDMARK_Model * model = flandmark_init("flandmark_model.dat");

检查同一页面中的示例。

实际上flandmark_model.dat 是一个检测模型,已经训练用于面部标志检测。 这个开源库使用 Opencv。

如果您遇到集成问题,请告诉我

编辑:

如果您只需要眼睛、鼻子和嘴巴点,您只需从包含面部标志(浮点*标志)的数组中选择您的选项,例如:

extern_Right eye.x = landmarks[12];
extern_Right eye.y = landmarks[13];
nose.x = landmarks[14]
nose.y = landmarks[15]
leftmouth.x = landmarks[6]
leftmouth.x = landmarks[7]
rightmouth.x = landmarks[8]
rightmouth.x = landmarks[9] 

【讨论】:

  • 我知道flandmark,我试过了。有一个静态图像的例子。我试图理解代码,所以我可以改变它来只检测一些面部特征,但我不能跨度>
  • 您不需要更改原始代码,如果您只需要其中一些,您可以从 landmarks 数组中获取您想要的内容:就像您一样:float * landmarks = (float*)malloc( 2*model->data.options.M*sizeof(float));
  • 默认的 flandmark 模型可以很好地处理正面,但上面的问题在于配置文件。您必须训练另一个标志性模型才能使其正常工作
  • 我上次是这样做的,即删除不相关的部分,但仍然显示脸上的所有点。这是我拥有的代码pastebin.com/wFfACrzR。 Flandmark 检测器会正确检测个人资料图片吗?
  • 正如我告诉你的那样,你的代码显示所有点,因为你绘制了所有点,检查循环(第 99 到 103 行),你不需要显示所有点,只需执行我在编辑的答案中放入的索引。对于配置文件,我没有通过 flandmark 对其进行测试,但它适用于面部的多种姿势
猜你喜欢
  • 2015-06-17
  • 2013-08-12
  • 2013-04-11
  • 2019-05-25
  • 2015-09-21
  • 2020-10-16
  • 2020-05-12
  • 2016-12-20
  • 2017-11-21
相关资源
最近更新 更多