TENSORFLOW.JS 3D 姿势估计不起作用

Posted

技术标签:

【中文标题】TENSORFLOW.JS 3D 姿势估计不起作用【英文标题】:TENSORFLOW.JS 3D Pose Estimation is not working 【发布时间】:2021-11-18 14:05:02 【问题描述】:

一年前,我使用 OpenCV 和 Mediapipe 在 Python 中完成了很多姿势估计。我最近阅读了一篇关于 3d Pose 估计可能性的 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)

我不知道我能做些什么。

【问题讨论】:

我也遇到了同样的问题,你发现问题了吗? 【参考方案1】:

我会推荐 console.log 用于测试目的。这将打印您输入到 Inspector 的内容 (Crtl+Shift+I)。 或者你可以document.innerText '''打印'''东西出来。

对编辑的回应

首先,您的异步函数 estimatePosesOfVideo 与所有异步函数一样返回一个 Promise。将结果打印到控制台时,您将打印 Promise 对象。我建议改用 promise 对象的.then

关于其他问题,很难给出任何有意义的答复,因为我缺乏关于您的错误发生在哪一行的信息。请将该信息作为注释添加到代码围栏中或通过其他方式。

【讨论】:

以上是关于TENSORFLOW.JS 3D 姿势估计不起作用的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV中的姿势估计及3D效果(3D坐标轴,3D立方体)绘制

如何在 Dlib C++ 中获取头部姿势估计的 3D 坐标轴

有了 TensorFlow.js,浏览器中就能进行实时人体姿势判断

如何从 3d 对象文件中获取 3d 坐标。

使用DLT进行姿态估计需要多少个点?

如何使用 OpenCV 绘制 3D 坐标轴以进行人脸姿态估计?