为了从社区获得帮助,我们鼓励使用 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)
请帮忙 :-)