TENSORFLOW.JS 3D 姿势估计不工作
TENSORFLOW.JS 3D Pose Estimation is not working
一年前,我使用 OpenCV 和 Mediapipe 在 Python 中做了很多姿势估计。我最近阅读了一篇关于 3d 姿态估计的可能性的 Tensorflow 博客(https://blog.tensorflow.org/2021/08/3d-pose-detection-with-mediapipe-blazepose-ghum-tfjs.html)。这让我很激动,所以我学到了一些 JavaScript 来开始我的旅程。 3 天后,我意识到我的代码确实有效,Javascript 没有给出任何错误,尽管没有任何效果。我和一个已经使用 JavaScript 一个月的伙伴密切关注这些步骤,尽管他帮不了我,因为他从未使用过 AI。我从来没有使用过它,所以我不知道 await 在 JS 中是如何工作的。可能是个问题哈哈
<body>
<div id="app"></div>
<video id="video" controls><source src="vid.mp4" type="video/mp4"/></video>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/pose-detection"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-core"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-converter"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-webgl"></script>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/pose"></script>
<script>
const model = poseDetection.SupportedModels.BlazePose;
const detectorConfig = {
runtime: 'tfjs',
modelType: 'full'
};
const detector = await poseDetection.createDetector(model, detectorConfig);
const video = document.getElementById('video');
const poses = await detector.estimatePoses(video);
document.getElementById("app").innerHTML = str(poses[0].keypoints3D);
</script>
</body>
我的目标是将检测到的姿势数组“打印”到屏幕上,这样我就可以看到它起作用了。有什么想法吗?
########################################### ############################
[编辑]
import * as poseDetection from '@tensorflow-models/pose-detection';
import '@mediapipe/pose';
async function estimatePosesOfVideo(videoelement) {
const model = poseDetection.SupportedModels.BlazePose;
const detectorConfig = {runtime:'mediapipe',modelType:'full'};
const detector = await poseDetection.createDetector(model, detectorConfig);
const poses = await detector.estimatePoses(videoelement);
return poses
}
const videoelement = document.getElementById('video');
const poses = estimatePosesOfVideo(videoelement);
console.log(poses)
我不知道我能做些什么。
出于测试目的,我建议 console.log。这将打印您在 Inspector 中输入的内容 (Crtl+Shift+I)。
或者你可以 document.innerText
到 '''print''' something out.
回复编辑
首先,您的异步函数 estimatePosesOfVideo
returns 和所有异步函数一样都是 Promise。当将结果打印到控制台时,您将改为打印 Promise 对象。我建议改用 promise 对象的 .then
。
关于其他的问题,由于我不知道你的错误发生在哪一行,所以很难给出有意义的答复。请将该信息添加为代码栏中的注释或以其他方式添加。
一年前,我使用 OpenCV 和 Mediapipe 在 Python 中做了很多姿势估计。我最近阅读了一篇关于 3d 姿态估计的可能性的 Tensorflow 博客(https://blog.tensorflow.org/2021/08/3d-pose-detection-with-mediapipe-blazepose-ghum-tfjs.html)。这让我很激动,所以我学到了一些 JavaScript 来开始我的旅程。 3 天后,我意识到我的代码确实有效,Javascript 没有给出任何错误,尽管没有任何效果。我和一个已经使用 JavaScript 一个月的伙伴密切关注这些步骤,尽管他帮不了我,因为他从未使用过 AI。我从来没有使用过它,所以我不知道 await 在 JS 中是如何工作的。可能是个问题哈哈
<body>
<div id="app"></div>
<video id="video" controls><source src="vid.mp4" type="video/mp4"/></video>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/pose-detection"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-core"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-converter"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-webgl"></script>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/pose"></script>
<script>
const model = poseDetection.SupportedModels.BlazePose;
const detectorConfig = {
runtime: 'tfjs',
modelType: 'full'
};
const detector = await poseDetection.createDetector(model, detectorConfig);
const video = document.getElementById('video');
const poses = await detector.estimatePoses(video);
document.getElementById("app").innerHTML = str(poses[0].keypoints3D);
</script>
</body>
我的目标是将检测到的姿势数组“打印”到屏幕上,这样我就可以看到它起作用了。有什么想法吗?
########################################### ############################ [编辑]
import * as poseDetection from '@tensorflow-models/pose-detection';
import '@mediapipe/pose';
async function estimatePosesOfVideo(videoelement) {
const model = poseDetection.SupportedModels.BlazePose;
const detectorConfig = {runtime:'mediapipe',modelType:'full'};
const detector = await poseDetection.createDetector(model, detectorConfig);
const poses = await detector.estimatePoses(videoelement);
return poses
}
const videoelement = document.getElementById('video');
const poses = estimatePosesOfVideo(videoelement);
console.log(poses)
我不知道我能做些什么。
出于测试目的,我建议 console.log。这将打印您在 Inspector 中输入的内容 (Crtl+Shift+I)。
或者你可以 document.innerText
到 '''print''' something out.
回复编辑
首先,您的异步函数 estimatePosesOfVideo
returns 和所有异步函数一样都是 Promise。当将结果打印到控制台时,您将改为打印 Promise 对象。我建议改用 promise 对象的 .then
。
关于其他的问题,由于我不知道你的错误发生在哪一行,所以很难给出有意义的答复。请将该信息添加为代码栏中的注释或以其他方式添加。