推出 MediaPipe Iris,升级浏览器中的虹膜追踪模型!

文 / Ann Yuan 和 Andrey Vakunov,软件工程师,Google

虹膜追踪 (Iris tracking) 可广泛应用于多个领域,如辅助技术中的免触摸界面,以及了解除点击和手势以外的用户行为。虹膜追踪同时也是一项具有挑战性的计算机视觉问题。眼睛在环境光照条件不同时会经常变化,且眼睛经常会被遮挡住,而当观察对象转动头部或做不同的表情时,其眼睛形状也可能随之变化。现有的解决方法非常依赖专用硬件,通常需要使用昂贵的头戴式设备或远程的眼动追踪器系统。这些方法并不适合计算资源有限的移动设备。

实现眼球重新着色的示例

实现眼球重新着色的示例

今年 3 月,我们 宣布推出 了一个可在浏览器中检测面部特征点的新软件包。今天,我们很高兴可以通过 TensorFlow.js 面部特征点检测模型 将虹膜追踪添加到此软件包中。而这要归功于 MediaPipe Iris 模型。我们已弃用 原来的 Facemesh 模型,因此我们之后将为面部特征点检测模型提供更新。

请注意,虹膜追踪不会推断人们正在注视的位置,也不会提供任何形式的身份识别。在我们模型的 文档 和随附的 模型卡 中,我们详述了模型的预期用途、限制和公平性属性(与 Google 的 AI 原则 保持一致)。

MediaPipe Iris 模型能够使用单个 RGB 摄像头实时追踪涉及虹膜和瞳孔的特征点,而无需借助专用硬件。模型还能返回眼睑和眉毛区域的特征点,实现对眨眼等轻微眼球运动的检测(立即在浏览器中 尝鲜)。

faceLandmarksDetection 简介

左上方为 @tensorflow-models/[email protected] 的预测,右上方为 @tensorflow-models/[email protected] 的预测;红色的部分为虹膜特征点

熟悉我们现有 Facemesh 模型的用户,只需更改少量的代码,就可以升级到新的 faceLandmarksDetection 模型,详细的操作说明将在下方列出。faceLandmarksDetection 对 Facemesh 进行了三项重大改进:

  • 虹膜关键点检测
  • 改进了对眼睑轮廓的检测
  • 改进了对转动的面部的检测

我们在上方的 GIF 中突出显示了这些改进,该 GIF 展示了对于同一个图像序列,faceLandmarksDetection 和 Facemesh 所返回的特征点有何不同。

安装

faceLandmarksDetection 软件包有两种安装方法:

  1. 通过脚本标记:
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/[email protected]/dist/tf.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/face-landmarks-detection"></script>
  1. 通过 NPM(使用 yarn 软件包管理工具):
$ yarn add @tensorflow-models/[email protected]
$ yarn add @tensorflow/[email protected]

用法

安装软件包后,您只需加载模型权重,然后输入图像即可开始检测面部特征点:

// 如果您使用 NPM,需请求加载模型。如果您使用脚本标签,您可以跳过此步骤,因为 faceLandmarksDetection 在全局范围内已经可用
const faceLandmarksDetection = require('@tensorflow-models/face-landmarks-detection');

// 加载 faceLandmarksDetection 模型
const model = await faceLandmarksDetection.load(
    faceLandmarksDetection.SupportedPackages.mediapipeFacemesh);

// 将视频流输入模型,并从 MediaPipe 计算图中获取真检测到的面部数组。
// 对于 Node 用户,estimateFaces API 还接受 tf.Tensor3D 或 ImageData 对象。
const video = document.querySelector("video");
const faces = await model.estimateFaces({ input: video });

对 estimateFaces 的输入可以是视频、静态图像、“tf.Tensor3D”函数,甚至是供 node.js 管道使用的 ImageData 对象。FaceLandmarksDetection 随后会为输入的面部返回一组预测对象,其中包括每个面部的相关信息(例如,置信度得分和面部 478 个特征点的位置)。

以下是预测对象示例:

{
    faceInViewConfidence: 1,
    boundingBox: {
        topLeft: [232.28, 145.26], // [x, y]
        bottomRight: [449.75, 308.36],
    },
    mesh: [
        [92.07, 119.49, -17.54], // [x, y, z]
        [91.97, 102.52, -30.54],
        ...
    ],
     // 每个面部特征值在输入空间中的 x,y,z 位置
    scaledMesh: [  
        [322.32, 297.58, -17.54],
        [322.18, 263.95, -30.54]
    ],
    // x,y,z 位置的语意分组
    annotations: {
        silhouette: [
            [326.19, 124.72, -3.82],
            [351.06, 126.30, -3.00],
            ...
        ],
        ...
    }
}

请参阅我们的 README,了解更多有关此 API 的详情。

性能

FaceLandmarksDetection 是轻量级软件包,其占用空间仅有 3MB 左右,因此非常适合用于在各种移动设备上执行实时推理。在测试时,请注意 TensorFlow.js 还会提供几种不同的后端供您选择,包括 WebGL 和带 XNNPACK 的 WebAssembly (WASM),可在搭载低端 GPU 的设备上使用。下表显示的是该软件包在几种不同的设备和 TensorFlow.js 后端中的表现:

桌面设备:

移动设备:

所有基准测试结果均收集自 Chrome 浏览器。如需详细了解如何为 TF.js WebAssembly 后端激活 SIMD,请参 阅这篇文章

展望

TensorFlow.js 和 MediaPipe 团队都计划利用经过改进的虹膜坐标,为我们的面部特征点检测解决方案添加 深度预测 功能。我们坚信分享代码可以实现研究重现、快速实验,并期待看到 MediaPipe Iris 模型在社区中得到更广泛的使用。

快来尝鲜!

通过 此链接 在您的网络浏览器中试用我们的新软件包。我们期待看到您在自己的应用中使用此模型。

更多信息

原文:Iris landmark tracking in the browser with MediaPipe and TensorFlow.js
中文:TensorFlow 公众号

1 Like