首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用iPhone TrueDepth传感器来检测真实的人脸和照片?

使用iPhone TrueDepth传感器来检测真实的人脸和照片?
EN

Stack Overflow用户
提问于 2019-04-25 17:54:51
回答 2查看 847关注 0票数 12

我如何使用iPhone true-depth相机捕获的深度数据来区分真实的人类3D人脸和同一人脸的照片?要求是使用它进行身份验证。

我做了什么:创建了一个示例应用程序,以获得相机前面的连续AVDepthData流。

EN

回答 2

Stack Overflow用户

发布于 2020-06-09 15:39:10

理论

TrueDepth传感器让iPhone X/ 11 / 12 / 13除了通过常规自拍相机捕捉的ZDepth通道外,还可以生成高质量的RGB通道。ZDepth频道允许我们在视觉上做出改变,无论是真实的人脸还是仅仅是一张照片。在ZDepth通道中,人脸被表示为渐变,但照片几乎是纯色的,因为照片平面上的所有像素与相机的距离相等。

AVFoundation

目前AVFoundation没有Bool类型的实例属性,可以让你判断它是一张真实的脸还是一张照片,但是AVFoundation的捕获子系统为你提供了AVDepthData类--一个由相机设备捕获的每像素距离数据(深度图)的容器。深度图在每个像素上以米为单位描述到对象的距离。

代码语言:javascript
复制
@available(iOS 11.0, *)
open class AVDepthData: NSObject {

    open var depthDataType: OSType { get }
    open var depthDataMap: CVPixelBuffer { get }
    open var isDepthDataFiltered: Bool { get }
    open var depthDataAccuracy: AVDepthDataAccuracy { get }
}

像素缓冲区能够包含深度数据的每像素深度或disparity map

代码语言:javascript
复制
var depthDataMap: CVPixelBuffer { get }

ARKit

多亏了AVFoundation和CoreMotion会话,ARKit的心脏开始跳动(在某种程度上,它也使用了视觉)。当然,您可以将此框架用于人脸检测,但请记住,由于其“重金属”跟踪子系统,ARKit是一个计算密集型模块。对于成功的真人脸(而不是照片)检测,可以使用ARFaceAnchorfacial blendshapes,前者允许你以60fps的速度记录头部的运动和方向,后者允许你实时记录用户的面部表情。

愿景

实现CVPixelBuffer.中包含的人脸识别和分类的Apple VisionCoreML技术但请记住,你需要ZDepth到RGB的转换才能使用Apple Vision - AI / ML移动框架目前还不能直接使用深度图数据。当您想要使用RGBD数据进行身份验证,并且只有一个或两个用户的面孔需要识别时,它极大地简化了模型学习过程的任务。您所要做的就是为视觉创建一个包含许多ZDepth面部图像变体的mlmodel

您可以使用苹果创建ML应用程序生成一个轻量级和有效的mlmodel文件。

有用的链接

使用视觉检测和分类图像的示例代码您可以找到herehere。你也可以阅读RGB来了解如何将AVDepthData转换成常规的this模式。

票数 9
EN

Stack Overflow用户

发布于 2019-04-25 18:59:48

您可以使用AVCaptureMetadataOutput和AVCaptureDepthdataOutput来检测人脸,然后采取所需的操作

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55846523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档