This action will force synchronization from Bd999/Recognize.js, which will overwrite any changes that you have made since you forked the repository, and can not be recovered!!!
Synchronous operation will process in the background and will refresh the page when finishing processing. Please be patient.
First download and install GraphicsMagick. In Mac OS X, you can simply use Homebrew and do:
brew install graphicsmagick
Then download the Recognizejs
using npm:
npm i recognizejs
Import Recognizejs
into your project:
const Recognizejs = require('recognizejs');
Recognizejs
and initialize it: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.
const fs = require('fs');
const myImgBuffer = fs.readFileSync(myImagePath);
recognize
function and pass the image buffer as a parameter:// 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.
new Recognizejs(config?);
Args: config is an optional parameter and has the following attributes:
{
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.
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:
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.
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:
[
{
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:
const myImgBuf = require('fs').readFileSync(myImgPath);
model.recognize(myImgBuf);
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:
[
{
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:
const myImgBuf = require('fs').readFileSync(myImgPath);
model.detect(myImgBuf);
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:
[
recognizeObject,
recognizeObject,
recognizeObject
]
Example:
const myImgBuf = require('fs').readFileSync(myImgPath);
model.detectAndRecognize(myImgBuf);
Copyright ©️ 2020, Yingxuan (Bill) Dong
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。