Java中的人脸识别

15

有没有人能够推荐一个Java开源的人脸识别框架?


1
看一下这个问题:https://dev59.com/PHNA5IYBdhLWcg3wdtld - Janusz
3个回答

17

有一些开源的人脸识别Java系统您可以尝试,但不要期望太高,因为我正在寻找同样的东西,但仍在寻找更好的选择!

请注意,在图像中找到任何人脸都称为“人脸检测”,跟随任何人脸都称为“人脸跟踪”,确定检测到的人脸的身份称为“人脸识别”。我告诉你这个是因为你可能需要使用不同的软件和算法来完成每个任务! Paul的答案告诉您OpenCV可以轻松进行人脸检测(Haar级联检测器),但不可以轻松进行人脸识别(实际上它确实有一种方法可以进行特征脸识别),听起来您需要的是人脸识别,因此OpenCV并非您的最佳选择,因为您使用的是Java。

您可以尝试FAINT,它可以在Java中同时进行人脸检测和人脸识别,但该软件文档相当匮乏。还有 "http://darnok.org/programming/face-recognition/",但我无法从中获得良好的结果。还有 "http://uni.johnsto.co.uk/faces/" 用于人脸识别,以及"Neuroph" 用于人脸识别/检测。

如果您找到了一个好的解决方案,请发邮件至"draw3d@shervinemami.co.cc"告诉我,祝你好运! Shervin Emami


1
更新:OpenCV v2.4.1现在带有一个新的FaceRecognizer类,使用几种可能的算法(Eigenfaces、Fisherfaces和LBP-Histograms)进行人脸识别非常容易。因此,您应该寻找一种从Java中使用它的方法,例如在Android上支持Java的OpenCV,或者可能是JavaCV(可能还没有FaceRecognizer)。 - Shervin Emami
不要使用特征脸来提高准确性。它是基于平均值的直接像素比较。在缩放、旋转和裁剪找到的面部描述符之后进行比较更好。需要深度学习来训练模型以找到这些描述符。 - Andrew Scott Evans

6

请查看OpenCV。该软件实现了Viola和Jones的著名面部检测技术,称为Haar级联。

这里提供了一个完整的教程——从训练到实验可在此处获取。请注意,您实际上不需要进行训练;OpenCV已经预装了几个特征级联,包括一些用于面部检测的级联。


1
Viola & Jones 的论文《使用简单特征的增强级联快速目标检测》可以在 Google 学术上找到:http://scholar.google.com/scholar?cluster=6119571473300502765 - Paul Lammertsma
1
谢谢回复。我可以用它来制作商业考勤系统吗?我的想法是通过一个包含摄像头的通道,当人们经过时自动标记为出席的考勤系统。 - user189352
1
从技术上讲,您可以在照片上运行算法,计算检测到的面部数量并将其作为答案。但实际上,这将非常不可预测且容易出错。首先,它无法检测特定的面孔。也就是说,它不能区分您的脸和我的脸。因此,要确定某个特定人是否存在,需要更具有辨别力的方法。 - Paul Lammertsma
如果您只想统计进出通道的人数,您可以跟踪一个特定的人脸,从它进入画面到离开为止,并假设这是一个人。但请注意,这种方法可能存在误差。 - Paul Lammertsma
我们可以在Skype或MSN上聊天吗? 我的Skype ID是akshayshetye,雅虎是chetankamat123。 - user189352
我已经给你所有我能提供的信息了。也许你想在其他地方寻找解决方案。请参考这个相关问题:https://dev59.com/PHNA5IYBdhLWcg3wdtld - Paul Lammertsma

3
准确的人脸识别可以分为以下几个步骤:
  1. 人脸检测
  2. 面部标志点发现
  3. 使用您的标志点进行旋转、裁剪、对齐和缩放
  4. 发现面部描述符点(这些不是人类可读的)
  5. 与已知的面部进行比较,找到最接近的匹配
这可以使用多个库完成,但需要bytedeco包装器用于OpenCV和Caffe,以及像ND4j这样的矩阵比较库。 OpenCV有用于人脸检测的HAAR级联和可以使用flandmark进行面部点识别。这将允许您执行步骤1-3。
通过使用Caffe和VGG Face Descriptor库(http://www.robots.ox.ac.uk/~vgg/software/vgg_face/),可以进行面部描述符发现。

最后,Nd4j 可以用于比较图像。如果您有足够的按个人分类的图像,则可以使用库中的神经网络进行分类。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接