为了账号安全,请及时绑定邮箱和手机立即绑定

Augmented Faces API – 面部地标是如何生成的?

Augmented Faces API – 面部地标是如何生成的?

慕码人8056858 2022-07-06 18:56:49
我是一名 IT 学生,想了解(了解)更多关于ARCore 中的增强面孔 API的信息。我刚刚看到了ARCore V1.7 版本和新的Augmented Faces API。我得到了这个 API 的巨大潜力。但我没有看到任何关于这个主题的问题或文章。所以我在质疑自己,这里有一些关于这个版本的假设/问题。假设ARCore 团队正在使用(如 Instagram 和 Snapchat)机器学习,在整个面部生成地标。可能是HOG人脸检测..问题ARCore 如何在智能手机上的用户脸上生成 468 个点?即使在源代码中也无法找到任何回应。他们如何能够从一个简单的智能手机相机中获得深度?如何拒绝人脸检测/跟踪,对自定义对象或身体的其他部位(如手)?因此,如果您对此主题有任何建议或意见,让我们分享!
查看完整描述

1 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

  1. ARCore 新的Augmented Faces API用于不带深度传感器的前置摄像头,提供高质量的468-point 3D 标准网格,允许用户将动画蒙版、眼镜、皮肤修饰等效果附加到他们的脸上。网格提供坐标和区域特定的锚点,可以添加这些效果。

我坚信在 ARCore 1.7 的引擎盖下借助计算机视觉算法生成面部标志检测。同样重要的是,您可以通过创建启用“前置摄像头”和增强面“网格”模式的 ARCore 会话来开始使用 Unity 或 Sceneform。请注意,使用前置摄像头时,平面检测等其他 AR 功能目前不可用。AugmentedFaceextends Trackable,因此可以像平面、增强图像和其他 Trackable 一样检测和更新人脸

//img1.sycdn.imooc.com//62c56a8d0001e4df06630193.jpg

如您所知,2 多年前,Google 发布Face API了执行面部检测的功能,该功能可在图片中定位人脸,以及他们的位置(他们在图片中的位置)和方向(他们面对的方向,相对于相机)。人脸 API 允许您检测地标(脸上的兴趣点)并执行分类以确定眼睛是睁着还是闭着,以及脸部是否在微笑。人脸 API 还检测和跟踪运动图像中的人脸,这称为人脸跟踪。

因此,ARCore 1.7 只是从 Face API 中借用了一些架构元素,现在它不仅可以检测面部地标并为其生成 468 个点,还可以以 60 fps 的速度实时跟踪它们并将 3D 面部几何图形粘贴到它们上。

请参阅 Google 的人脸检测概念概述

//img1.sycdn.imooc.com//62c56a980001d76d06600185.jpg

计算由移动 RGB 相机拍摄的视频中的深度通道并不是一门火箭科学。您只需将视差公式应用于跟踪的特征。因此,如果静态对象上特征的平移幅度非常高——被跟踪对象更靠近相机,而如果静态对象上特征的幅度非常低——被跟踪对象离相机更远。十多年来,这些计算深度通道的方法对于The Foundry NUKE和Blackmagic Fusion等合成应用程序来说非常常见。现在,在 ARCore 中可以使用相同的原理。


您不能拒绝对自定义对象或身体的其他部位(如手)进行人脸检测/跟踪算法。仅针对面孔开发的增强面孔 API 。


下面是激活增强面孔功能的 Java 代码的样子:


// Create ARCore session that supports Augmented Faces

public Session createAugmentedFacesSession(Activity activity) throws 

                                                      UnavailableException {


    // Use selfie camera

    Session session = new Session(activity, 

                                  EnumSet.of(Session.Feature.FRONT_CAMERA));


    // Enabling Augmented Faces

    Config config = session.getConfig();

    config.setAugmentedFaceMode(Config.AugmentedFaceMode.MESH3D);

    session.configure(config);

    return session;

}

然后获取检测到的人脸列表:


Collection<AugmentedFace> faceList = session.getAllTrackables(AugmentedFace.class);

最后渲染效果:


for (AugmentedFace face : faceList) {


    // Create a face node and add it to the scene.

    AugmentedFaceNode faceNode = new AugmentedFaceNode(face);

    faceNode.setParent(scene);


    // Overlay the 3D assets on the face

    faceNode.setFaceRegionsRenderable(faceRegionsRenderable);


    // Overlay a texture on the face

    faceNode.setFaceMeshTexture(faceMeshTexture);

    

    // .......

}


查看完整回答
反对 回复 2022-07-06
  • 1 回答
  • 0 关注
  • 145 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信