abh*_*ran 10 avfoundation swift arkit coreml truedepth-camera
如何使用使用 iPhonetrue-depth相机捕获的深度数据来区分真实的人类 3D 面部和相同的照片?要求是将其用于身份验证。
我做了什么:创建了一个示例应用程序来获取AVDepthData相机前面的连续流。
TrueDepth 摄像头让 iPhone X、11 和 12 可以看到 ZDepth 通道以及通过常规前置自拍摄像头看到的 RGB 通道。ZDepth 通道可让您在视觉上产生差异,无论是真实的人脸还是照片。在 ZDepth 通道中,人脸被表示为渐变,但照片几乎具有纯浅灰色,因为它是一个等距平面。
目前 AVFoundation API 没有 Bool 实例属性允许您确定它是真人脸还是照片,但是 AVFoundation 的捕获子系统为您提供了AVDepthData——一个由相机设备捕获的每像素距离信息的容器。
ARKit 基于 AVFoundation 和CoreMotion模块的运行会话。您可以将此框架用于人脸检测,但请记住,由于其“重金属”跟踪子系统,ARKit 带来了大量的 CPU/GPU 计算。为了成功检测真实人脸(不是照片),请使用ARFaceAnchor允许您以 60 fps 的速度注册一些头部运动,而面部混合形状则允许您实时注册用户的面部表情。
实施Apple Vision(或CoreML)框架技术来识别和分类包含在 CVPixelBuffer 中的人脸或矩形照片。但请记住,您需要将 ZDepth 转换为 RGB 才能使用 Apple Vision(计算机视觉不适用于深度数据)。
如果您想使用 RGBD 数据进行身份验证,并且只有一两个用户的面部需要识别,这大大简化了 Apple Vision 的任务。您所要做的就是创建一个mlmodelfor Vision,其中包含 ZDepth 面部图像的许多变体以及矩形平面。
您可以使用 Apple Create ML 应用程序来生成轻量级且有效的mlmodel文件。
有用的链接
您可以在此处和此处找到使用 Vision 检测和分类图像的示例代码。您也可以阅读这篇文章以了解如何将 AVDepthData 转换为常规 RGB 模式。
| 归档时间: |
|
| 查看次数: |
698 次 |
| 最近记录: |