Tensorflow Js 在注册的 blazeface 中找不到后端

Tensorflow Js No backend found in registery blazeface

我想知道图像上是否有人脸,所以我将 tensorflow JS 与 blazeface 模型一起使用。但是获取代码后出现错误:

Error: No backend found in registry.
    at Engine.getSortedBackends (/home/saren/project/spark/node_modules/@tensorflow/tfjs-core/dist/tf-core.node.js:2928:19)
    at Engine.initializeBackendsAndReturnBest (/home/saren/project/spark/node_modules/@tensorflow/tfjs-core/dist/tf-core.node.js:2937:35)
    at Engine.get [as backend] (/home/saren/project/spark/node_modules/@tensorflow/tfjs-core/dist/tf-core.node.js:2743:31)
    at Engine.makeTensor (/home/saren/project/spark/node_modules/@tensorflow/tfjs-core/dist/tf-core.node.js:3268:35)
    at makeTensor (/home/saren/project/spark/node_modules/@tensorflow/tfjs-core/dist/tf-core.node.js:4087:19)
    at tensor (/home/saren/project/spark/node_modules/@tensorflow/tfjs-core/dist/tf-core.node.js:4136:12)
    at Object.decodeWeights (/home/saren/project/spark/node_modules/@tensorflow/tfjs-core/dist/tf-core.node.js:4400:27)
    at GraphModel.loadSync (/home/saren/project/spark/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:7410:34)
    at GraphModel.<anonymous> (/home/saren/project/spark/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:7385:52)
    at step (/home/saren/project/spark/node_modules/@tensorflow/tfjs-converter/dist/tf-converter.node.js:77:23)

这是我的代码(我从文档中复制过去):

module.exports = {
    blazeface: require('@tensorflow-models/blazeface'),

    async detectFace(imageLink) {
        const model = await this.blazeface.load();
        const returnTensors = false;
        const predictions = await model.estimateFaces(imageLink, returnTensors);
        if (predictions.length > 0) {
            for (let i = 0; i < predictions.length; i++) {
            const start = predictions[i].topLeft;
            const end = predictions[i].bottomRight;
            const size = [end[0] - start[0], end[1] - start[1]];
        
            // Render a rectangle over each detected face.
            ctx.fillRect(start[0], start[1], size[0], size[1]);
            }
        }
    }
}

请记住错误来自以下行 const model = await this.blazeface.load();

所以很多人都在谈论版本所以这是我的一个例子 package.json

"dependencies": {
    "@tensorflow-models/blazeface": "0.0.6",
    "@tensorflow/tfjs": "^3.0.0",
    "@tensorflow/tfjs-backend-cpu": "^3.0.0",
    "@tensorflow/tfjs-backend-webgl": "^3.0.0",
    "@tensorflow/tfjs-converter": "^3.0.0",
    "@tensorflow/tfjs-core": "^3.0.0"
  }

我使用的是 Node 版本 14.8.0 和 npm 版本 6.14.7。 此代码应在服务器上运行,因此我不希望它在前端运行。

看来你可以做两件事。

安装@tensorflow/tfjs-node并使用tf: require("@tensorflow/tfjs-node"), 或者您可以使用 this.tf.getBackend();(即使使用 tf: require("@tensorflow/tfjs")