javascript - Node.js 中的posenet TensorFlow 模型结果中没有位置详细信息 ("x","y")

标签 javascript node.js tensorflow tensorflow.js

我在 Node v8.11.0 上运行了posenet 模型。这是我运行的代码。输出结果不显示每个姿势的位置,仅显示[Object]。看起来 Canvas 有问题。

这是一个在 Ubuntu 中的命令行(而不是浏览器)中运行的简单代码。

脚本.js:

global.XMLHttpRequest = require("xhr2");
const tf = require('@tensorflow/tfjs');
require('@tensorflow/tfjs-node');
const fetch = require('node-fetch');
const {Image, createCanvas} = require('canvas');
const posenet = require('@tensorflow-models/posenet')
const assert = require('assert');
const fs = require('fs');
const path = require('path');
const png_image = `${__dirname}/image`;
async function run() {
  let img = new Image();
  img.src = fs.readFileSync(path.join(png_image, '01_standing.png'));
  const canvas = createCanvas(img.width,img.height);
  canvas.getContext('2d').drawImage(img,0,0);
  const imageScaleFactor = 0.5;
  const flipHorizontal = false;
  const outputStride = 8;
  const multiplier = 0.5;
  const net  = await posenet.load(multiplier);
  const pose = await net.estimateSinglePose(canvas, imageScaleFactor, flipHorizontal, outputStride);
  console.log(pose);
  return pose;
}
run();

package.json:

{
  "name": "tf",
  "version": "1.0.0",
  "main": "script.js",
  "license": "MIT",
  "dependencies": {
  "canvas": "*",
   "xhr2": "*",
   "@tensorflow-models/posenet": "^1.0.2",
   "@tensorflow/tfjs": "^1.1.0",
   "@tensorflow/tfjs-node": "^0.1.19",
   "node-fetch": "^2.6.0"
  },
  "devDependencies": {},
   "scripts": {
   "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "description": ""
}

命令:

 npm install
 node script.js

结果一定是这样的:

{  
   "score":0.9306272794218624,
   "keypoints":[  
   {  
      "score":0.9992092251777649,
      "part":"nose",
      "position":{  
        "x":584.1284123357551,
        "y":540.4772608240223
      }
   },
  .
  .
  .
 }

但输出如下:

{ score: 0.9306272794218624,
  keypoints: [ 
   { 
      score: 0.9992092251777649, 
      part: 'nose', 
      position: [Object] 
    },
.
.
.
}

我的代码有什么问题吗?

最佳答案

这很可能是由于字符串化了 js 不知道如何转换的对象。 如果你的 pose 仍然是一个正确的 js 对象,请尝试

console.log(JSON.stringify(pose));

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

关于javascript - Node.js 中的posenet TensorFlow 模型结果中没有位置详细信息 ("x","y"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56482333/

相关文章:

javascript - 为什么 (function() { ... }()) 创建 "singleton"状态?

javascript - Mongoose - 在保存文档之前为每个对象生成 ObjectID

node.js - 如何使用 NextJS 和 React Router 渲染服务器端 React 内容?

math - Tensorflow 中如何进行 8 位算术?

tensorflow - 使用预训练模型(Keras、Tensorflow)的 Mask R-CNN、Faster R-CNN 的最佳图像大小

javascript - 如何订阅 jQuery 中的方法?

javascript - 如何在 2 个 div 上使用 substr?

node.js - Docker 和 Docker Compose - 复制产品镜像,但为开发人员安装卷

python - Keras 中的 "Could not interpret optimizer identifier"错误

javascript - 带有按钮和输入的弹出式 HTML 内容未呈现