Recognize.js 1.0.0-alpha 發佈,Node.js 物體識別 AI 框架

前言

Recognize.js 是一個 Node.js 物體識別神經網絡框架。

Recognize.js 1.0.0-alpha 發佈,Node.js 物體識別 AI 框架

安裝

首先下載並安裝 GraphicsMagick。在 Mac OS X 中,你可以方便地使用 Homebrew 安裝:

<code>brew install graphicsmagick/<code>

然後使用 npm 下載 Recognizejs:

<code>npm i recognizejs/<code>

開始

導入 Recognizejs 到你的項目中:

<code>const Recognizejs = require('recognizejs');/<code>

嘗試 Recognizejs

  1. 創建一個新的 Recognizejs 對象模型,然後初始化它:
<code>const myModel = new Recognizejs();

// 初始化它
// init 函數會返回一個 Promise 對象
await myModel.init();/<code>

PS: 模型初始化可能需要 1-2分鐘時間(取決於你的設備性能),所以請耐心等待。

Recognize.js 1.0.0-alpha 發佈,Node.js 物體識別 AI 框架

  1. 讀取你的圖片文件
<code>const fs = require('fs');

const myImgBuffer = fs.readFileSync(myImagePath);/<code>
  1. 調用模型的 recognize 函數,並將你的圖片的 buffer 通過參數傳遞給它:
<code>// recognize 函數會返回一個 Promise 對象,我們推薦你使用 await 語句獲取它的返回值
const results = await myModel.recognize(myImgBuffer);

/*
[
{
className: ['className1', 'className2', 'className...'],
probability: 0.9
},
{
className: ['className1', 'className2', 'className...'],
probability: 0.599
}
]
*/
console.log(results);/<code>

上述例子中的代碼可以在 examples 文件夾中找到。

API

創建一個 Recognizejs 對象

<code>new Recognizejs(config?);/<code>

參數:config 是一個可選的參數,並有以下的屬性:

<code>{
cocoSsd?: {
// base:控制基本cnn模型,可以是“ mobilenet_v1”,“ mobilenet_v2”或“ lite_mobilenet_v2”。 默認為“ lite_mobilenet_v2”。 lite_mobilenet_v2的大小最小,推理速度最快。 mobilenet_v2具有最高的分類精度。
base?: ObjectDetectionBaseModel,

// 一個可選的字符串,用於指定模型的自定義網址。 這對於無法訪問GCP上託管的模型的區域/國家非常有用。
modelUrl?: string
},
mobileNet?: {
// MobileNet版本號。 將1用於MobileNetV1,將2用於MobileNetV2。 默認為1。
version: 1,

// 控制網絡的寬度,交易性能的準確性。 較小的alpha會降低準確性並提高性能。 0.25僅適用於V1。 默認為1.0。
alpha?: 0.25 | .50 | .75 | 1.0,

// 用於指定自定義模型url或tf.io.IOHandler對象的可選參數。 返回模型對象。
// 如果您在中國大陸,請將 modelUrl 改為 https://hub.tensorflow.google.cn 上的模型。
modelUrl?: string

// 可選參數,用於指定由modelUrl託管的訓練模型期望的像素值範圍。 通常為[0,1]或[-1,1]。
inputRange?: [number, number]
}
}/<code>

cocoSsd 和 mobileNet 是兩種不同的神經網絡。cocoSsd 用來偵測一張圖片中的多個物體,而 mobileNet 用來精確識別單個物體。

初始化訓練模型

<code>model.init(modelType?);/<code>

init 函數會返回一個 Promise 對象,你可以使用 await 語句來處理它。

參數:modelType 可以是一個字符串或數組。您可以在此處設置要加載的模型,以避免加載不需要的模型。[如果不設置 modelType,它將同時加載 cocoSsd 和 mobileNet 模型]

例子:

<code>model.init();

// 或

model.init(['cocoSsd', 'mobileNet']);

// 或

model.init('cocoSsd');

// 或

model.init('mobileNet');/<code>

如果你不使用 init 函數加載模型,當你需要使用它們的時候,他們會 自動 加載,但是加載模型可能需要很長的時間,所以請根據情況選擇加載方法。

識別圖片中的物體

<code>model.recognize(buf);/<code>

recognize 函數返回一個 Promise 對象,你可以使用 await 語句來獲取它的返回值。

參數:buf 參數需要你傳遞圖片文件的 Buffer 數據,你可以使用 fs 模塊讀取圖片文件。

返回值:

<code>[
{
className: [
'giant panda',
'panda',
'panda bear',
'coon bear',
'Ailuropoda melanoleuca'
],
probability: 0.9819085597991943
},
{
className: [ 'Chihuahua' ],
probability: 0.006128392647951841
},
{
className: [ 'French bulldog' ],
probability: 0.0026271280366927385
}
]/<code>

例子:

<code>const myImgBuf = require('fs').readFileSync(myImgPath);

model.recognize(myImgBuf);/<code>

偵測圖片中的全部物體

<code>model.detect(buf)/<code>

detect 函數返回一個 Promise 對象,你可以使用 await 語句來獲取它的返回值。

參數:buf 參數需要你傳遞圖片文件的 Buffer 數據,你可以使用 fs 模塊讀取圖片文件。

返回值:

<code>[
{
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
}
]/<code>

例子:

<code>const myImgBuf = require('fs').readFileSync(myImgPath);

model.detect(myImgBuf);/<code>

偵測圖片中的全部物體並識別它們

<code>model.detectAndRecognize(buf);/<code>

detectAndRecognize 函數返回一個 Promise 對象,你可以使用 await 語句來獲取它的返回值。

參數:buf 參數需要你傳遞圖片文件的 Buffer 數據,你可以使用 fs 模塊讀取圖片文件。

返回值:

<code>[
recognizeObject,
recognizeObject,
recognizeObject
]/<code>

例子:

<code>const myImgBuf = require('fs').readFileSync(myImgPath);

model.detectAndRecognize(myImgBuf);/<code>


分享到:


相關文章: