2009-10-20 171 views
14

任何人都可以建议我在Java中使用开源人脸识别框架吗?Java中的人脸识别

+1

看看这个问题:http:// stackoverflow。com/questions/953714/face-recognition-library – Janusz 2010-03-05 08:28:48

回答

6

结账OpenCV。由Viola & Jones提供的文档丰富且备受赞誉的人脸检测技术已实施,称为Haar级联。

完整的教程 - 从培训到实验 - is available here。请注意,您实际上并不需要进行培训; OpenCV捆绑了几个功能级联,其中包括一些面部检测。

+1

在Google学术搜索中可以找到Viola&Jones的论文,使用简单功能的增强级联进行快速对象检测:http://scholar.google.com/scholar?cluster= 6119571473300502765 – 2009-10-20 15:30:04

+1

感谢您的回复,我可以用它来制作一个纪念的考勤系统。我的想法是制定一个考勤系统,通过这个系统,人们在通过含有照相机的通道时自动标记为现在。 – user189352 2009-10-20 15:37:04

+1

嗯,从技术上讲,您可以在照片上运行算法,计算检测到的脸部数量并将其作为答案。但实际上,这是非常不可预测的,并且容易出错。首先,它不检测特定的脸部。也就是说,它并不区分你的脸或我的脸。因此,确定某个人是否在场会需要更多的区分。 – 2009-10-20 15:40:35

17

您可以尝试一些开源的Face Recognition Java系统,但不要期望太高,因为我正在寻找相同的东西,但我仍然在寻找更好的选择!

请注意,在图像内找到任何人脸称为“人脸检测”,任何人脸称为“人脸跟踪”,并且确定检测到的人脸的身份称为“人脸识别”。我告诉你这一点,因为你可能必须使用不同的软件和算法来完成每一个! Paul提供的答案告诉你,OpenCV可以很容易地进行人脸检测(哈尔级联检测器),但不容易(但实际上它有办法进行特征脸识别),这听起来像需要人脸识别,所以OpenCV isn自从您使用Java以来​​,不一定是您的最佳选择。

您可以尝试使用Java进行人脸检测和人脸识别的FAINT,但它几乎没有文档。也有“http://darnok.org/programming/face-recognition/”,但我似乎无法取得好成绩。还有用于人脸识别的“http://uni.johnsto.co.uk/faces/”,用于人脸识别/检测的“Neuroph”。

如果你找到一个好的解决方案,请告诉我在“[email protected]” 祝你好运! Shervin EMAMI

+1

更新:OpenCV v2.4.1现在带有一个新的FaceRecognizer类,很容易使用几种可能的算法进行人脸识别(特征脸, Fisherfaces和LBP-直方图)。所以你应该寻找一种从Java使用它的方式,比如Android上的OpenCV(支持Java)或者JavaCV(可能还没有FaceRecognizer)。 – 2012-09-12 00:17:59

+0

请勿使用特征脸来获得准确性。它是基于平均值的直接像素比较。缩放,旋转和裁剪找到的面后比较面部描述符更好。需要深入的学习来训练一个模型来找到这些描述符。 – 2017-07-27 23:30:25

1

精确的面部识别是一个任务可分为以下几个步骤:

  1. 人脸检测
  2. 面部里程碑意义的点发现
  3. 旋转,裁剪,调整和缩放使用您的地标
  4. 面部描述符点发现(这些不是人类可读的)
  5. 比较已知的面找到最接近的匹配

这可以用几个库来完成,但需要OpenGL和Caffe的包装器,以及像ND4j这样的库来进行矩阵比较。

OpenCV具有用于人脸检测的HAAR级联,并且可以使用flandmark进行面部点识别。这将允许您执行步骤1-3。

面部描述符发现可以使用bytedeco包装为Caffe和VGG脸部描述符库(http://www.robots.ox.ac.uk/~vgg/software/vgg_face/

最后,Nd4j可用于比较图像来完成。如果您有足够的图片按照个人分类,也许您可​​以使用库中的神经网络进行分类。