2020 年 3 月 9 日 — 发布者:Ann Yuan 和 Andrey Vakunov,Google 软件工程师
今天,我们很高兴发布两个新包:facemesh 和 handpose,用于分别跟踪面部和手部的关键地标。这个版本是 Google Research 的 MediaPipe 和 TensorFlow.js 团队之间的合作成果。
在浏览器中尝试实时演示 facemesh 包找到图像中的面部边界和地标,而 handpose 则对…
facemesh 包 |
handpose 包 |
import * as facemesh from '@tensorflow-models/facemesh;
<script src="https://cdn.jsdelivr.net.cn/npm/@tensorflow/tfjs-core"></script>
<script src="https://cdn.jsdelivr.net.cn/npm/@tensorflow/tfjs-converter"></script>
<script src="https://cdn.jsdelivr.net.cn/npm/@tensorflow-models/facemesh"></script>
// Load the MediaPipe facemesh model assets.
const model = await facemesh.load();
// Pass in a video stream to the model to obtain
// an array of detected faces from the MediaPipe graph.
const video = document.querySelector("video");
const faces = await model.estimateFaces(video);
// Each face object contains a `scaledMesh` property,
// which is an array of 468 landmarks.
faces.forEach(face => console.log(face.scaledMesh));
estimateFaces
的输入可以是视频、静态图像,甚至可以是 ImageData 接口,以便在 node.js 管道中使用。Facemesh 然后返回一个包含输入中面部预测对象的数组,其中包括有关每个面部的信息(例如,置信度得分和面部内 468 个地标的位置)。这是一个示例预测对象{
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],
...
],
scaledMesh: [
[322.32, 297.58, -17.54],
[322.18, 263.95, -30.54]
],
annotations: {
silhouette: [
[326.19, 124.72, -3.82],
[351.06, 126.30, -3.00],
...
],
...
}
}
有关 API 的更多详细信息,请参阅我们的 README。import * as handtrack from '@tensorflow-models/handpose;
<script src="https://cdn.jsdelivr.net.cn/npm/@tensorflow/tfjs-core"></script>
<script src="https://cdn.jsdelivr.net.cn/npm/@tensorflow/tfjs-converter"></script>
<script src="https://cdn.jsdelivr.net.cn/npm/@tensorflow-models/handpose"></script>
// Load the MediaPipe handpose model assets.
const model = await handpose.load();
// Pass in a video stream to the model to obtain
// a prediction from the MediaPipe graph.
const video = document.querySelector("video");
const hands = await model.estimateHands(video);
// Each hand object contains a `landmarks` property,
// which is an array of 21 3-D landmarks.
hands.forEach(hand => console.log(hand.landmarks));
与 facemesh
一样,estimateHands
的输入可以是视频、静态图像,或者是一个 ImageData 接口。该包随后返回一个描述输入中手的对象数组。这是一个示例预测对象{
handInViewConfidence: 1,
boundingBox: {
topLeft: [162.91, -17.42], // [x, y]
bottomRight: [548.56, 368.23],
},
landmarks: [
[472.52, 298.59, 0.00], // [x, y, z]
[412.80, 315.64, -6.18],
...
],
annotations: {
indexFinger: [
[412.80, 315.64, -6.18],
[350.02, 298.38, -7.14],
...
],
...
}
}
有关 API 的更多详细信息,请参阅我们的 README。
2020 年 3 月 9 日 — 发布者:Ann Yuan 和 Andrey Vakunov,Google 软件工程师
今天,我们很高兴发布两个新包:facemesh 和 handpose,用于分别跟踪面部和手部的关键地标。这个版本是 Google Research 的 MediaPipe 和 TensorFlow.js 团队之间的合作成果。
在浏览器中尝试实时演示 facemesh 包找到图像中的面部边界和地标,而 handpose 则对…