2

为了从社区获得帮助,我们鼓励使用 Stack Overflow 和tensorflow.js标签。

浏览器版本

不在浏览器中,使用 Node 命令

描述问题或功能请求

当我 使用预训练模型 [coco-ssd] 时,我正在使用coco-SSD 的 tensorflow.js for mobilenet v2 ,它工作得非常好,请参见下面的代码

const tfnode = require('@tensorflow/tfjs-node');
const cocoSsd = require('./coco-ssd.js'); 
const fs = require('fs');
const readImage = path => {
    const imageBuffer = fs.readFileSync(path);
    const tfimage = tfnode.node.decodeImage(imageBuffer);
    return tfimage;
  }
  const objectDetection = async path => {
    const image = readImage(path);
    const loadlModelPromise = await cocoSsd.load({base: "mobilenet_v2"})
    const result = await loadlModelPromise.detect(image);
    console.log('Classification Results:', result);
  }
  objectDetection(process.argv[2]);

在调用上面的代码node filename.js ./testImage.png时,它会给出想要的结果。

现在我有一个经过自定义训练的 coco-ssd 模型,我已使用以下命令将其转换为 tensorflow.js 格式 **tensorflowjs_converter --input_format=tf_saved_model --output_node_names='num_detections,detection_boxes,detection_scores,detection_classes' --signature_name=serving_default --saved_model_tags=serve ./saved_model ./ **一旦我获得了转换后的model.json,我编写了以下代码以推断自定义转换后的模型。

const tfnode = require('@tensorflow/tfjs-node');
const cocoSsd = require('./coco-ssd.js'); 
const fs = require('fs');
const readImage = path => {
    const imageBuffer = fs.readFileSync(path);
    const tfimage = tfnode.node.decodeImage(imageBuffer);
    return tfimage;
  }
  const objectDetection = async path => {
    const image = readImage(path);
    const modelUrl = 'file:///Users/xx/model.json'
    const loadlModelPromise = await cocoSsd.load({base: "mobilenet_v2",modelUrl: modelUrl})
    const result = await loadlModelPromise.detect(image);
    console.log('Classification Results:', result);
  }
  objectDetection(process.argv[2]);

现在当我运行上面的代码时node fileName.js ./testImage.png得到以下错误

(节点:32504)UnhandledPromiseRejectionWarning:错误:张量必须具有由正整数组成的形状,但形状为 [100,]。 在断言 (C:\Users\xx\tfJs\node_modules@tensorflow\tfjs-core\dist\util.js:105:15) 在 C:\Users\xx\tfJs\node_modules@tensorflow\tfjs-core\dist\ util.js:646:9 at Array.forEach () at Object.assertNonNegativeIntegerDimensions (C:\Users\xx\tfJs\node_modules@tensorflow\tfjs-core\dist\util.js:645:11) at makeTensor (C: \Users\xx\tfJs\node_modules@tensorflow\tfjs-core\dist\ops\tensor_ops.js:73:16) 在 Object.tensor2d (C:\Users\xx\tfJs\node_modules@tensorflow\tfjs-core\dist \ops\tensor_ops.js:189:12) 在 C:\Users\xx\tfJs\tensorflowJs Classifier\coco-ssd.js:17:7039 在 C:\Users\xx\tfJs\node_modules@tensorflow\tfjs-core \dist\engine.js:388:22 在 Engine.scopedRun (C:\Users\xx\tfJs\node_modules@tensorflow\tfjs-core\dist\engine.js:398:23) 在 Engine.tidy (C:\用户\xx\tfJs\node_modules@tensorflow\tfjs-core\dist\engine.js:387:21)

请帮忙 :-)

4

0 回答 0