Tensorflow-node not recognized with cocoSsd on node.js

﹥>﹥吖頭↗ 提交于 2021-01-05 13:16:07

问题


I'm using @tensorflow-models/coco-ssd and @tensorflow/tfjs-node to do some object detection. It's working, but apparently could be faster. It's honestly not even that slow, it bangs through an image in about a second or two, but it just bugs me when something isn't working as well as it could.

You can find a live version of this at https://01014.org/wall-of-cats Most current code at https://github.com/qozle/wall-of-cats

I get this on the first call to the model.detect():

============================
Hi there 👋. Looks like you are running TensorFlow.js in Node.js. To speed things up 
dramatically, install our node backend, which binds to TensorFlow C++, by running 
npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. 
Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of 
your program. Visit https://github.com/tensorflow/tfjs-node for more details.
============================

I'm on a linux ubuntu 20 LTS server. I tried downgrading tfjs-node, I saw some folks had a problem with the versions not matching for the faceAPI example, so I tried that.

"@tensorflow-models/coco-ssd": "^2.1.0",
"@tensorflow/tfjs-node": "^2.1.0",

I tried deleting node_modules and doing

npm install

so that it would rebuild the bindings. No beans. Tried making sure I have python installed- I'm running python3. EDIT tried making sure that I have 2.7 installed instead and that I'm using it as default. No beans.

EDIT I've also tried adding @tensorflow/tfjs-backend-cpu to the mix, and rebuilding bindings again by deleting node_modules and doing npm install. No beans.

Here's some of the code:

const tf = require("@tensorflow/tfjs-node");
const cocoSsd = require("@tensorflow-models/coco-ssd");
tf.enableProdMode();

preloading the model:

catModel = await cocoSsd.load();

Then later on, when I get some data:

const image = await tf.node.decodeImage(resp.body, 3);
const predictions = await nsfwModel.classify(image);
const catObjects = await catModel.detect(image);
image.dispose();

This is for a project that interfaces with the twitter API, pulls filtered data of all posts with images that have #cat or cat or kitten in the post, checks it against a NSFW model, and then does object detection to make sure there are cats in the pictures (I got a lot of random images and couldn't really refine the twitter API filter rules).

I'm out of beans and out of ideas.

来源:https://stackoverflow.com/questions/64832338/tensorflow-node-not-recognized-with-cocossd-on-node-js

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!