要获得社区的帮助,我们鼓励使用Stack Overflow和tensorflow.js
标签。
不在浏览器中,使用Node命令
描述问题或功能要求我正在将 coco-SSD的tensorflow.js用于mobilenet v2 当我使用预先训练的模型[coco-ssd]时,它工作得很好,请参见下面的代码
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 在Array.forEach() 在Object.assertNonNegativeIntegerDimensions(C:\ Users \ xx \ tfJs \ node_modules @ tensorflow \ tfjs-core \ dist \ util.js:645:11) 在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:\ Users \ xx \ tfJs \ node_modules @ tensorflow \ tfjs-core \ dist \ engine.js:387:21)
请帮助:-)