从 VNFaceObservation 对人脸进行分类

Posted

技术标签:

【中文标题】从 VNFaceObservation 对人脸进行分类【英文标题】:Classify faces from VNFaceObservation 【发布时间】:2018-01-10 20:33:21 【问题描述】:

我正在使用Vision 框架来检测多张图像上的人脸和物体,效果非常好。

但是我有一个在文档中找不到的问题。 ios 上的照片应用程序对人脸进行分类,您可以单击人脸并显示该人脸的所有图像。

如何对照片应用等人脸进行分类?是否有任何唯一标识符或类似的标识符来执行此操作?

谢谢!

【问题讨论】:

【参考方案1】:

你可能想看看这个 repo https://github.com/KimDarren/FaceCropper

我对此进行了测试,效果很好,您甚至可以根据需要进行自定义。

【讨论】:

但不能识别独特的面孔并像 Apple Photos 应用一样进行分类。谢谢! 这确实可以识别独特的面孔,就像照片应用一样。 我刚刚为您提供了一个带有该链接的示例,您应该会发现一些有用的东西。该演示与您想做的事情相同。 这个例子没有唯一标识人脸。它只是获取图像中的所有面孔,对其进行裁剪,然后将它们显示在 UICollectionView 中。【参考方案2】:

我不认为它们是一种唯一识别从视觉框架返回给您的面孔的方法。我检查了UUID 属性和VNFaceObservation,它每次都是不同的标识符。

您可能必须制作自己的 CoreML 模型,或者只是等待/寻找一个好的第三方模型。

我希望有人证明我错了,因为我也想知道。

【讨论】:

【参考方案3】:

为了唯一识别人脸,首先您需要检测人脸,然后通过 CoreML 模型(或其他图像分类模型类型,例如 Tensorflow 模型)运行它,以便对图像进行分类并告诉您可能性您捕获的人脸与训练到模型中的人脸之一匹配。

Apple Photos 使用机器学习(正如他们今年的 iPhone 发布主题演讲中所述)来训练设备识别照片中的面孔。培训将在设备上本地执行,但是,Apple 尚未提供任何公共 API 来允许我们执行此操作。

您可以将照片数据(使用 Paras 上述工具的面部裁剪)发送到您的服务器并让它训练模型(使用 CoreML 的训练器或 AWS 或您自己的服务器上的 Nvidia DIGITS 之类的东西),将其转换为 CoreML ,编译模型,然后将其下载到您的设备并旁加载模型。目前,这与照片使用的“神奇”人脸识别非常接近,因为设备只能读取编译模型。

【讨论】:

以上是关于从 VNFaceObservation 对人脸进行分类的主要内容,如果未能解决你的问题,请参考以下文章

python中使用Opencv进行人脸识别

eigenface 怎样进行人脸识别

怎样使用OpenCV进行人脸识别

使用 OpenCV与 HAAR 级联算法进行人脸检测和人脸识别

人脸识别SDK含义?

使用TensorRT对人脸检测网络MTCNN进行加速