# Recognize.js **Repository Path**: bd999/recognizejs ## Basic Information - **Project Name**: Recognize.js - **Description**: Node.js 物体识别神经网络框架 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: https://github.com/18510047382/recognizejs - **GVP Project**: No ## Statistics - **Stars**: 83 - **Forks**: 26 - **Created**: 2020-04-01 - **Last Updated**: 2023-05-05 ## Categories & Tags **Categories**: ai **Tags**: None ## README

Recognize.js

Node.js image detection and recognition framework


## Installation First download and install [GraphicsMagick](http://www.graphicsmagick.org/). In Mac OS X, you can simply use [Homebrew](https://brew.sh/) and do: ```shell brew install graphicsmagick ``` Then download the `Recognizejs` using npm: ```shell npm i recognizejs ``` ## Getting started Import `Recognizejs` into your project: ```javascript const Recognizejs = require('recognizejs'); ``` ### Try Recognizejs 1. Create a model with `Recognizejs` and initialize it: ```javascript const myModel = new Recognizejs(); // initialize it // The init function returns a Promise object await myModel.init(); ``` PS: Model initialization may take up to 1-2 minutes (depending on the performance of your device), so please be patient. :wink: 2. Read your image file ```javascript const fs = require('fs'); const myImgBuffer = fs.readFileSync(myImagePath); ``` 3. Call the model's `recognize` function and pass the image buffer as a parameter: ```javascript // The recognize function will return a Promise object, we recommend that you use await statement to get the return value. const results = await myModel.recognize(myImgBuffer); /* [ { className: ['className1', 'className2', 'className...'], probability: 0.9 }, { className: ['className1', 'className2', 'className...'], probability: 0.599 } ] */ console.log(results); ``` The code for this example can be found in the `examples` folder. ## API ### Create a Recognizejs model object ``` new Recognizejs(config?); ``` Args: **config** is an optional parameter and has the following attributes: ```typescript { cocoSsd?: { // base: Controls the base cnn model, can be 'mobilenet_v1', 'mobilenet_v2' or 'lite_mobilenet_v2'. Defaults to 'lite_mobilenet_v2'. lite_mobilenet_v2 is smallest in size, and fastest in inference speed. mobilenet_v2 has the highest classification accuracy. base?: ObjectDetectionBaseModel, // An optional string that specifies custom url of the model. This is useful for area/countries that don't have access to the model hosted on GCP. modelUrl?: string }, mobileNet?: { // The MobileNet version number. Use 1 for MobileNetV1, and 2 for MobileNetV2. Defaults to 1. version: 1, // Controls the width of the network, trading accuracy for performance. A smaller alpha decreases accuracy and increases performance. 0.25 is only available for V1. Defaults to 1.0. alpha?: 0.25 | .50 | .75 | 1.0, // Optional param for specifying the custom model url or tf.io.IOHandler object. Returns a model object. // If you are in mainland China, please change modelUrl to the link of the model on https://hub.tensorflow.google.cn modelUrl?: string // Optional param specifying the pixel value range expected by the trained model hosted at the modelUrl. This is typically [0, 1] or [-1, 1]. inputRange?: [number, number] } } ``` `cocoSsd` and `mobileNet` are different neural networks. `cocoSsd` is used to identify and classify multiple objects in an image, while `mobileNet` is used to accurately identify an object. ### Initialize the training model ``` model.init(modelType?); ``` The `init` function returns a `Promise` object, you can use `await` statement to handle it. Args: **modelType** can be a string or an array. You can set the model to be loaded here to avoid loading the model that is not needed. **[If you don't set modelType, it will load both cocoSsd and mobileNet models]** **Example:** ```javascript model.init(); // or model.init(['cocoSsd', 'mobileNet']); // or model.init('cocoSsd'); // or model.init('mobileNet'); ``` If you don't use the `init` function to load the model, the model will load **automatically** when you need to use them, but it may take a long time to load the model, so please choose the loading method as appropriate. ### Identify objects in image ``` model.recognize(buf); ``` The `recognize` function returns a `Promise` object, you can use `await` statement to get its return value. Args: The **buf** parameter requires you to pass a buffer type of image data. You can read the image through the fs module. **Return value:** ```javascript [ { className: [ 'giant panda', 'panda', 'panda bear', 'coon bear', 'Ailuropoda melanoleuca' ], probability: 0.9819085597991943 }, { className: [ 'Chihuahua' ], probability: 0.006128392647951841 }, { className: [ 'French bulldog' ], probability: 0.0026271280366927385 } ] ``` **Example:** ```javascript const myImgBuf = require('fs').readFileSync(myImgPath); model.recognize(myImgBuf); ``` ### Detect all objects in the image ``` model.detect(buf) ``` The `detect` function returns a `Promise` object, you can use `await` statement to get its return value. Args: The **buf** parameter requires you to pass a buffer type of image data. You can read the image through the fs module. **Return value:** ```javascript [ { bbox: { x: 66.92952662706375, y: 158.30181241035461, width: 157.67111629247665, height: 165.00252485275269 }, class: 'bear', score: 0.9642460346221924 }, { bbox: { x: 180.56899309158325, y: -0.32786130905151367, width: 246.6680407524109, height: 308.3251893520355 }, class: 'bear', score: 0.9133073091506958 } ] ``` **Example:** ```javascript const myImgBuf = require('fs').readFileSync(myImgPath); model.detect(myImgBuf); ``` ### Detect all objects in the image and identify them ``` model.detectAndRecognize(buf); ``` The `detectAndRecognize` function returns a `Promise` object, you can use `await` statement to get its return value. Args: The **buf** parameter requires you to pass a buffer type of image data. You can read the image through the fs module. **Return value:** ```javascript [ recognizeObject, recognizeObject, recognizeObject ] ``` **Example:** ```javascript const myImgBuf = require('fs').readFileSync(myImgPath); model.detectAndRecognize(myImgBuf); ``` ## License [MIT](http://opensource.org/licenses/MIT) Copyright ©️ 2020, Yingxuan (Bill) Dong