Skip to content
Advertisement

Tensorflow Js No backend found in registery blazeface

I’m trying to know if there is some face on an image and so I’m using tensorflow JS with blazeface model. But after getting the code an error appear:

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)

This is my code (I copy past it from the documentation):

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]);
            }
        }
    }
}

Remember that the error came from the following line const model = await this.blazeface.load();

So a lot of people are talking about the version so this is an exemple of my 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"
  }

I’m using Node version 14.8.0 and npm version 6.14.7. This code should work on a server and so I don’t want it to work in front.

Advertisement

Answer

Seems that you can do two things.

Install @tensorflow/tfjs-node and use tf: require("@tensorflow/tfjs-node"), Or you can use this.tf.getBackend(); (even with this tf: require("@tensorflow/tfjs"))

User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement