# inferencejs Reference

{% hint style="info" %}
詳細はこちら `inferencejs` 、当社の web SDK、 [ここ](https://docs.roboflow.com/roboflow/roboflow-jp/deploy/sdks/web-browser)
{% endhint %}

### インストール

このライブラリはブラウザ内で、vite、webpack、parcel などのバンドラを使用して使うことを想定しています。バンドラが設定されていることを前提に、次を実行してインストールできます：

`<script src="https://cdn.jsdelivr.net/npm/inferencejs"></script>`

### Getting Started

まず初めに、 `InferenceEngine`を初期化します。これにより、ユーザーインターフェースをブロックすることなくモデルをダウンロードして実行できるバックグラウンドワーカーが起動します。

```typescript
import { InferenceEngine } from "inferencejs";

const PUBLISHABLE_KEY = "rf_a6cd..."; // Roboflow のプロジェクト設定から自分の publishable key に置き換えてください

const inferEngine = new InferenceEngine();
const workerId = await inferEngine.startWorker("[PROJECT URL SLUG]", [VERSION NUMBER], PUBLISHABLE_KEY);

//モデルに対して推論を行う
const result = await inferEngine.infer(workerId, img);
```

## API

### InferenceEngine

**`new InferenceEngine()`**

新しい InferenceEngine インスタンスを作成します。

**`startWorker(modelName: string, modelVersion: number, publishableKey: string): Promise<number>`**

指定されたモデルの新しいワーカーを起動し、 `workerId`. **重要**- `publishableKey` は必須で、Roboflow のプロジェクト設定フォルダから入手できます。

**`infer(workerId: number, img: CVImage | ImageBitmap): Promise<Inference>`**

指定された `workerId`. `img` は以下を使用して作成できます `new CVImage(HTMLImageElement | HTMLVideoElement | ImageBitmap | TFJS.Tensor)` または [`createImageBitmap`](https://developer.mozilla.org/en-US/docs/Web/API/createImageBitmap)

**`stopWorker(workerId: number): Promise<void>`**

指定された `workerId`.

### `YOLOv8` `YOLOv5`

を使用して推論を行った結果は、 `InferenceEngine` YOLOv8 または YOLOv5 の物体検出モデルに対する推論の結果は、次の型の配列です：

```typescript
type RFObjectDetectionPrediction = {
    class?: string;
    confidence?: number;
    bbox?: {
        x: number;
        y: number;
        width: number;
        height: number;
    };
    color?: string;
};
```

### `GazeDetections`

を使用して推論を行った結果は、 `InferenceEngine` Gaze モデルに対して。次の型の配列：

```typescript
type GazeDetections = {
    leftEye: { x: number; y: number };
    rightEye: { x: number; y: number };
    yaw: number;
    pitch: number;
}[];
```

**`leftEye.x`**

入力画像の幅に対する割合で表した、0 から 1 の間の浮動小数点数としての左目の x 座標。

**`leftEye.y`**

入力画像の高さに対する割合で表した、0 から 1 の間の浮動小数点数としての左目の y 座標。

**`rightEye.x`**

入力画像の幅に対する割合で表した、0 から 1 の間の浮動小数点数としての右目の x 座標。

**`rightEye.y`**

入力画像の高さに対する割合で表した、0 から 1 の間の浮動小数点数としての右目の y 座標。

**`yaw`**

視線のヨー（yaw）、ラジアン単位で測定。

**`pitch`**

視線のピッチ（pitch）、ラジアン単位で測定。

### `CVImage`

コンピュータビジョンのタスクに使用できる画像を表すクラスです。画像を操作・変換するためのさまざまなメソッドを提供します。

#### **コンストラクタ**

The `CVImage(image)` クラスコンストラクタはクラスの新しいインスタンスを初期化します。以下のいずれかの型の画像を一つ受け取ります：

* `ImageBitmap`：省略可能な `ImageBitmap` の表現。
* `HTMLImageElement`：省略可能な `HTMLImageElement` の表現。
* `tf.Tensor`：省略可能な `tf.Tensor` の表現。
* `tf.Tensor4D`：省略可能な 4D `tf.Tensor` の表現。

#### **メソッド**

**`bitmap()`**

画像の `ImageBitmap` 表現を返す Promise を返します。画像がすでにビットマップであれば、キャッシュされたビットマップを返します。

**`tensor()`**

画像の `tf.Tensor` 表現を返します。画像がすでにテンソルであれば、キャッシュされたテンソルを返します。

**`tensor4D()`**

4D の `tf.Tensor` 表現を返す Promise を返します。画像がすでに 4D テンソルであれば、キャッシュされた 4D テンソルを返します。

**`array()`**

画像の JavaScript 配列表現を解決する Promise を返します。画像がすでにテンソルであれば、そのテンソルを配列に変換します。

**`dims()`**

画像の次元を含む配列を返します。画像がビットマップであれば、 `[width, height]`を返します。画像がテンソルであればテンソルの shape を返します。画像が HTML 画像要素であれば、 `[width, height]`.

**`dispose()`**

メモリを解放するために、画像のテンソル表現を破棄します。

**`static fromArray(array: tf.TensorLike)`**

与えられたテンソルライクな配列から新しい `CVImage` インスタンスを作成します。
