【问题标题】:Face Recognition on the iPhoneiPhone 上的人脸识别
【发布时间】:2012-05-03 13:37:46
【问题描述】:

如何在 iPhone 上进行面部识别。有人可以为我提供参考/文章以指出我正确的方向吗?我进行了研究并意识到我需要先进行人脸检测以提取图像,然后通过将其与数据库中的其他图像进行比较来进行人脸识别。

我意识到我已经通过使用 OpenCV 或使用 iOS 5.0 及更高版本来检测人脸来进行人脸检测。我不确定面部识别(我计划将图像存储在远程数据库中,然后与远程数据库进行比较)。

【问题讨论】:

标签: ios opencv computer-vision


【解决方案1】:

我们有以下人脸识别api:-

1. OpenCV

2. Kairos

3. CraftarAR

4. AAFaceDetection

5. MoodMe

我认为CraftAR 很好,如果你想在离线应用程序中使用,如果你想在线使用,那么Kairos 是最好的。而OpenCV 也是一个著名且可靠的选择。

OPENCV 最大的优势在于它是开源的。

请在 google 上搜索这些以获取更多详细信息,并查看 github 示例以了解这些 api 的工作原理。

【讨论】:

    【解决方案2】:

    您可能想查看 Pedro Centieiro 的 midian 项目,该项目使用 OpenCV 在 iOS 5 上执行人脸识别。它在 github 上:

    它使用了我的libfacerec 的一部分,因此它支持特征脸、Fisherfaces 和局部二进制模式直方图进行人脸识别。

    【讨论】:

      【解决方案3】:

      人脸检测

      我会使用 Open CV 中提供的 Haarcascades 来执行快速准确的人脸检测。

      http://opencv.willowgarage.com/wiki/FaceDetection

      人脸识别

      我会使用诸如主成分分析 (PCA) 又名特征脸之类的方法。

      http://www.cognotics.com/opencv/servo_2007_series/part_5/index.html

      该链接显示了有关如何使用 OpenCV 进行操作的教程 - 我认为这是为 C 编写的,但我相信您可以获得它的基本要点。

      如果你有勇气,你也可以考虑自己实现它(还不错)......

      http://www.face-rec.org/algorithms/PCA/jcn.pdf

      http://blog.zabarauskas.com/eigenfaces-tutorial/

      数据库

      我实际上做了一些与你类似的事情,虽然是在 PC 上而不是 iPhone 上,但它仍然是相同的概念。我将所有图像作为 Blob 数据类型存储在数据库中,然后在必要时将它们加载到我的程序中。

      编辑

      数据库是系统中一个特别棘手的部分,因为这是最大的瓶颈所在。在我的应用程序中,我将执行以下步骤...

      1. 打开应用程序并从数据库中获取训练图像
      2. 根据这些图像生成训练集
      3. 完成 1 和 2 后,系统会非常快速,因为它只是针对训练集执行识别。

      对我来说幸运的是,我的数据库服务器位于 LAN 上,因此速度不是问题,但是我可以理解您为什么会遇到问题,因为在移动设备上您的数据连接有限(速度/带宽)。您可以压缩图像,但是由于图像质量降低,这可能会导致识别率降低,并且您必须在设备上进行解码。还有一个问题是如何将远程数据库暴露给应用程序,但是我相信这可以使用 PHP 和 JSON(以及其他技术,见下文)。

      Retrieving data from a remote database

      也许您可以与数据库进行初始同步,以便将图像缓存在手机上?无论如何,我认为您可能必须以某种方式将图像保存在手机上。

      找出将识别数据/图像存储在数据库中的最佳方法是我面临的最大挑战之一,因此我很想知道您是否找到了一种好的方法。

      【讨论】:

      • 非常感谢您的回复。关于数据库,程序是否连接到数据库然后下载所有图像然后对每个图像进行识别?这对我来说没有多大用处,因为它将是功能有限的移动设备。 (我可能错了,所以请纠正我,我正处于试图找出算法/伪代码以供以后处理的阶段)。
      • @RoryLester 嗨,我已经更新了答案,希望能回答您的一些问题。祝你好运!
      • @TomP89 人脸识别链接不再起作用...如果您知道一些用于人脸识别的新链接,更新答案会很棒。
      • @TomP89,在我的 iOS 应用程序中,用户将通过使用相机胶卷验证他们的脸来访问他们的数据。安装应用程序后,新用户将在应用程序中注册。如何快速使用 ARKit 和 MLKit?现在,我可以为特定的人创建带有用户照片的 .mlmodel 并将其添加到我的项目中。但是我怎样才能为以后的注册用户做呢?应该从 macOS 机器处理 .mlmodel 并使用 API 将其发送到应用程序吗?他们有什么方法可以简单地验证用户的面部以识别他们的姓名标签身份吗?提前致谢。
      【解决方案4】:

      正如您所指出的,使用 iOS 5 和 CoreImage.framework,第一步(人脸检测)很容易。快速示例:

      CIImage *image = [CIImage imageWithCGImage:image_ref];
      NSDictionary *options = [NSDictionary dictionaryWithObject:CIDetectorAccuracyHigh forKey:CIDetectorAccuracy];
      CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeFace context:nil options:options];
      NSArray *features = [detector featuresInImage:image];
      
      for (CIFaceFeature *feature in features)
      {
        CGRect face_bounds = [feature bounds];
        CGPoint mouth_position = [feature mouthPosition];
        // do something with these values
      }
      

      关于你问题的第二部分(即面部识别),我将把它留给比我更有资格的人来回答。 :)

      【讨论】:

      • 这是人脸检测,而不是识别
      • @UIAdam:很好,我已经在我的回答中进行了编辑以澄清这一点。这个问题表明 OP 理解了任务的两个部分,我已经相应地修改了答案。
      【解决方案5】:

      人脸识别可以作为机器学习算法来实现。 This book 有一章描述了这个任务以及如何实现它。值得一读!

      它使用单值分解 (SVD),更具体地说是Tensor SVD method

      【讨论】:

        猜你喜欢
        • 2011-10-12
        • 1970-01-01
        • 2012-07-01
        • 2012-07-26
        • 2011-12-14
        • 1970-01-01
        • 2022-06-24
        • 2018-06-14
        • 2018-06-28
        相关资源
        最近更新 更多