infinitered / nsfwjs

NSFW detection on the client-side via TensorFlow.js

Home Page:https://nsfwjs.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Not work local model load

danekbiglike opened this issue · comments

My code:

const axios = require('axios');
const tf = require('@tensorflow/tfjs-node');
const nsfwjs = require('nsfwjs');

// Загрузка модели из папки на вашем сервере
const url = "file://" + __dirname + "/nsfwjs/model.json";

async function classifyImage(imageUrl) {
    const pic = await axios.get(imageUrl, {
        responseType: 'arraybuffer',
    });

    const model = await nsfwjs.load(url, { size: 299 });

    // Преобразование изображения в формат tf.tensor3d
    const image = await tf.node.decodeImage(new Uint8Array(pic.data), 3);

    const predictions = await model.classify(image);

    image.dispose(); // Освобождение памяти

    return predictions;
}

My logs:

...
The kernel 'UnsortedSegmentSum' for backend 'webgl' is already registered
The kernel 'ZerosLike' for backend 'webgl' is already registered
node:internal/deps/undici/undici:11600
    Error.captureStackTrace(err, this);
          ^

TypeError: fetch failed
    at Object.fetch (node:internal/deps/undici/undici:11600:11) {
  cause: Error: not implemented... yet...
      at makeNetworkError (node:internal/deps/undici/undici:6911:35)
      at schemeFetch (node:internal/deps/undici/undici:11050:18)
      at node:internal/deps/undici/undici:10930:26
      at mainFetch (node:internal/deps/undici/undici:10947:11)
      at fetching (node:internal/deps/undici/undici:10904:7)
      at fetch2 (node:internal/deps/undici/undici:10782:20)
      at Object.fetch (node:internal/deps/undici/undici:11598:18)
      at fetch (node:internal/process/pre_execution:274:25)
      at PlatformNode.fetch (C:\Users\remot\Documents\resenderbottg\node_modules\@tensorflow\tfjs-core\dist\tf-core.node.js:7425:33)
      at HTTPRequest.<anonymous> (C:\Users\remot\Documents\resenderbottg\node_modules\@tensorflow\tfjs-core\dist\tf-core.node.js:8289:55)
      at step (C:\Users\remot\Documents\resenderbottg\node_modules\@tensorflow\tfjs-core\dist\tf-core.node.js:125:27)
      at Object.next (C:\Users\remot\Documents\resenderbottg\node_modules\@tensorflow\tfjs-core\dist\tf-core.node.js:74:53)
      at C:\Users\remot\Documents\resenderbottg\node_modules\@tensorflow\tfjs-core\dist\tf-core.node.js:67:71
      at new Promise (<anonymous>)
      at __awaiter (C:\Users\remot\Documents\resenderbottg\node_modules\@tensorflow\tfjs-core\dist\tf-core.node.js:53:12)
      at HTTPRequest.load (C:\Users\remot\Documents\resenderbottg\node_modules\@tensorflow\tfjs-core\dist\tf-core.node.js:8284:16)
      at GraphModel.load (C:\Users\remot\Documents\resenderbottg\node_modules\@tensorflow\tfjs-converter\dist\tf-converter.node.js:30371:39)
      at Object.<anonymous> (C:\Users\remot\Documents\resenderbottg\node_modules\@tensorflow\tfjs-converter\dist\tf-converter.node.js:30697:48)
      at step (C:\Users\remot\Documents\resenderbottg\node_modules\@tensorflow\tfjs-converter\dist\tf-converter.node.js:176:27)
      at Object.next (C:\Users\remot\Documents\resenderbottg\node_modules\@tensorflow\tfjs-converter\dist\tf-converter.node.js:125:53)
      at C:\Users\remot\Documents\resenderbottg\node_modules\@tensorflow\tfjs-converter\dist\tf-converter.node.js:118:71
      at new Promise (<anonymous>)
}

Node.js v20.7.0

Even the example code doesn't work.

const axios = require('axios') //you can use any http client
const tf = require('@tensorflow/tfjs-node')
const nsfw = require('nsfwjs')
async function fn() {
    const pic = await axios.get('xxx.img', {
        responseType: 'arraybuffer',
    })
    const url = "file://" + __dirname + "/min_nsfwjs/model.json";
    const model = await nsfw.load(url, { size: 299 });
    // Image must be in tf.tensor3d format
    // you can convert image to tf.tensor3d with tf.node.decodeImage(Uint8Array,channels)
    const image = await tf.node.decodeImage(pic.data,3)
    const predictions = await model.classify(image)
    image.dispose() // Tensor memory must be managed explicitly (it is not sufficient to let a tf.Tensor go out of scope for its memory to be released).
    console.log(predictions)
}
fn()
The kernel 'Transpose' for backend 'webgl' is already registered
The kernel 'Unique' for backend 'webgl' is already registered
The kernel 'Unpack' for backend 'webgl' is already registered
The kernel 'UnsortedSegmentSum' for backend 'webgl' is already registered
The kernel 'ZerosLike' for backend 'webgl' is already registered
node:internal/deps/undici/undici:11600
    Error.captureStackTrace(err, this);
          ^

TypeError: fetch failed
    at Object.fetch (node:internal/deps/undici/undici:11600:11)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  cause: Error: not implemented... yet...
      at makeNetworkError (node:internal/deps/undici/undici:6911:35)
      at schemeFetch (node:internal/deps/undici/undici:11050:18)
      at node:internal/deps/undici/undici:10930:26
      at mainFetch (node:internal/deps/undici/undici:10947:11)
      at fetching (node:internal/deps/undici/undici:10904:7)
      at fetch2 (node:internal/deps/undici/undici:10782:20)
      at Object.fetch (node:internal/deps/undici/undici:11598:18)
      at fetch (node:internal/process/pre_execution:274:25)
      at PlatformNode.fetch (C:\Users\remot\Documents\resenderbottg\node_modules\@tensorflow\tfjs-core\dist\tf-core.node.js:7425:33)
      at HTTPRequest.<anonymous> (C:\Users\remot\Documents\resenderbottg\node_modules\@tensorflow\tfjs-core\dist\tf-core.node.js:8289:55)
}

Node.js v20.7.0

@danekbiglike, can you help me to install thetensorflow/tfjs-node?
npm i tensorflow/tfjs-node couldn't find.

@hubsMIT1, it's npm i @tensorflow/tfjs-node