Opencv 少量样本的人脸识别

Opencv 少量样本的人脸识别,opencv,machine-learning,computer-vision,face-recognition,Opencv,Machine Learning,Computer Vision,Face Recognition,有谁能给我建议一种建立有效的人脸分类器的方法,这种分类器可以对许多不同的人脸进行分类(~1000张) 我每个人脸只有1-5个例子 我知道opencv人脸分类器,但它对我的任务不好(很多类,一些示例)。 它适用于少量样本的单一人脸分类。但我认为1k独立分类器不是个好主意 我读了几篇关于人脸识别的文章,但是这些文章中的方法需要每个类的大量样本 对不起,我的写作错误。英语不是我的母语。事实上,为了给你一个正确的答案,我很高兴知道你的任务和数据的一些细节。人脸识别是一个非常重要的问题,对于各种图像采集都

有谁能给我建议一种建立有效的人脸分类器的方法,这种分类器可以对许多不同的人脸进行分类(~1000张)

我每个人脸只有1-5个例子

我知道opencv人脸分类器,但它对我的任务不好(很多类,一些示例)。 它适用于少量样本的单一人脸分类。但我认为1k独立分类器不是个好主意

我读了几篇关于人脸识别的文章,但是这些文章中的方法需要每个类的大量样本


对不起,我的写作错误。英语不是我的母语。

事实上,为了给你一个正确的答案,我很高兴知道你的任务和数据的一些细节。人脸识别是一个非常重要的问题,对于各种图像采集都没有通用的解决方案

首先,你应该定义你的样本和测试集中有多少变化源(姿势、情绪、照明、遮挡或延时)。然后,您应该选择一个合适的算法,非常重要的是,根据类型选择预处理步骤

如果你没有任何明显的变化,那么考虑一个小的训练集作为一个特征提取方法是一个好主意。他们有很强的能力来提取特征而不需要冗余。其中一些(Hahn,Racah矩)也可以在两种模式下工作-局部和全局特征提取。这个话题相对较新,关于它的文章还很少。尽管如此,它们被认为是图像识别中非常强大的工具。通过使用递归关系,可以近实时地计算它们。有关更多信息,请查看和

如果个体的姿势有显著差异,您可以尝试通过以下方式进行第一次姿势校正

如果有很多遮挡(眼镜、帽子),那么使用其中一种可能会有所帮助

如果训练图像和探测图像之间存在明显的时间间隔,人脸的局部特征可能会随着年龄的增长而变化,那么尝试使用其中一种算法以保持人脸拓扑结构是一个不错的选择

我相信以上这些都不是在OpenCV中实现的,但是对于其中的一些,您可以找到


我也不是以英语为母语的人,所以对于你的语法问题感到抱歉,它的方式非常独特。正如你所说的,每个类只有很少的图像,我们训练的模型应该有一个很棒的架构,可以在图像本身中创建更好的功能,或者应该有一个不同的方法来实现这个任务。 到目前为止,我有四件事可以分享:

  • 进行数据预处理,然后创建更大的数据集,并在理想情况下使用神经网络进行训练。在这里,我们可以进行如下预处理: -图像旋转 -图像剪切 -图像缩放 -图像模糊 -图像拉伸 -图像翻译 并为每个类创建至少200个图像。请查看opencv文档,它提供了更多关于如何增加数据集大小的方法。一旦你这样做了,我们就可以应用迁移学习,这是一种比从头开始训练神经网络更好的方法
转移学习是一种我们在自己的定制课程上训练网络的方法,这种网络已经在1000个课程上预先训练过。由于我们这里的数据非常少,我更喜欢只进行迁移学习。我写了一篇博客,介绍在获得所需数据量后,如何使用Transfer learning实现这一点。它是链接的。人脸识别本身也是一项分类任务,每个人都是一个独立的类别。因此,请按照博客中的说明进行操作,也许这会帮助您创建自己强大的Classifier

  • 另一个建议是,在创建数据集之后,对它们进行适当的编码。这种编码将帮助您保留图像中的特征,并帮助您训练更好的网络,很少有编码技术。您可以在线搜索几个已经在ORL数据库上实现了这些功能的存储库。一旦你编码,训练网络的编码,你会明显看到更好的性能
  • 我觉得,即使是去看看,暹罗网络也是如此。在这里,他们在不同的网络上比较两幅具有相似特征的图像,从而获得更好的分类精度。Git存储库是
  • 另一种标准方法是使用SVM,即随机森林,因为数据较少。如果你仍然喜欢神经网络,上述方法将为你服务。如果您打算使用编码,那么我建议使用随机森林,因为它在学习方面非常受欢迎,而且非常灵活

希望这个答案能帮助你朝着正确的方向前进。

你可能想看看OpenFace,一个Python和Torch实现的深度神经网络人脸识别:

这是一个非常大的问题。谢谢你的回答。我的数据没有明显的变化。我的大多数样本都是没有情绪(或微笑)的满脸,并且有很小的时间间隔(1-1.5年)。但照明可能不同。(我在帖子中添加了一些)我建议你尝试切比雪夫(作为全局描述符)或克拉夫丘克(作为局部描述符)时刻作为特征提取器。因此,您可以通过使用两种类型的描述符来补偿少量的训练图像。此外,还应执行直方图均衡化以避免照明变化。事实上,我并不认为你可以将人脸数据库中的图像上传到网上。通常它违反了其中一条隐私规定。什么