如何使用通过iPhone true-depth
相机捕获的深度数据来区分真实的3D人脸和该人的照片?
要求是将其用于身份验证。
我做了什么:创建了一个示例应用程序,以获取AVDepthData
镜头前的连续流。
答案 0 :(得分:4)
TrueDepth相机使iPhone X和11可以看到ZDepth通道,以及通过常规前置自拍相机看到的RGB通道。 ZDepth通道使您无论是真实的人脸还是照片都在视觉上有所作为。人脸是渐变的,但照片是等距平面,因此几乎具有纯灰色。
目前,AVFoundation API没有Bool实例属性,可让您确定它是真实的面孔还是照片,但是您可以使用Apple Vision框架来识别和分类其中包含的人脸或矩形照片CVPixelBuffer。但是请记住,您需要ZDepth到RGB转换才能与Apple Vision一起使用(计算机视觉不适用于Depth数据)。
如果您要使用RGBD数据进行身份验证,则仅需要识别一两个用户的面部,这大大简化了Apple Vision的任务。您要做的就是为Vision创建一个mlmodel
,其中包含ZDepth面部图像的许多变体以及矩形平面。
您可以使用Apple CreateML应用程序来生成轻巧有效的mlmodel
文件。
使用Vision检测和分类图像的示例代码,您可以找到here和here。另外,您可以阅读this帖子,以了解如何将AVDepthData转换为常规RGB模式。
在这种特殊情况下,我不建议将ARKit框架用于人脸识别操作,因为由于其“硬核”跟踪系统,它带来了额外的大量CPU计算。
答案 1 :(得分:0)
您可以使用AVCaptureMetadataOutput和AVCaptureDepthdataOutput来检测面部,然后采取所需的操作