> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/deployment/ja/serufuhosuto/sdks/web-browser/inferencejs-reference.md).

# inferencejs リファレンス

{% hint style="info" %}
詳しく見る `inferencejs` 、当社のWeb SDK、 [こちら](/deployment/ja/serufuhosuto/sdks/web-browser.md)
{% endhint %}

### インストール

このライブラリは、vite、webpack、parcel などのバンドラーを使って、ブラウザ内で使用するように設計されています。バンドラーが設定済みであると仮定すると、次のコマンドを実行してインストールできます:

`npm install inferencejs`

### はじめに

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

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

const PUBLISHABLE_KEY = "rf_a6cd..."; // Roboflow から取得した自分の公開可能キーに置き換えてください

const inferEngine = new InferenceEngine();

// モデルのページからコピーした model id を使ってモデルを読み込みます。
const workerId = await inferEngine.startWorkerByModelId("[MODEL ID]", PUBLISHABLE_KEY);

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

モデル id はモデルのページに表示され、次の形式になっています `workspace/model-slug` (例: `my-workspace/hard-hat-abc-1-yolov8n-t1`). レガシーなプロジェクト版モデルは `startWorker` を使って、プロジェクトの slug とバージョン番号を指定して読み込めます。複数の学習済みモデルを持つバージョンでは、レガシーな `{project}/{version}` id は、存在する場合はそのバージョンのエイリアスを通じて解決されます。エイリアスがない場合は、バージョンにモデルが 1 つだけあるときのみ機能し、それ以外では id が曖昧になり、モデル自体の model id で読み込む必要があります。参照: [レガシー ID の解決方法](https://docs.roboflow.com/models/model-ids).

## API

### InferenceEngine

**`new InferenceEngine()`**

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

**`startWorkerByModelId(modelId: string, publishableKey: string): Promise<number>`**

指定された model id の新しいワーカーを起動し、 `workerId`を返します。これはモデルを読み込む推奨方法です。 `modelId` は完全な `workspace/model-slug` id で、モデルのページに表示されます。バージョンなしのモデルや複数モデルのバージョンで機能します。 `publishableKey` は必須で、Roboflow のプロジェクト設定フォルダから取得できます。

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

プロジェクトの URL slug と整数のバージョンで指定されたレガシーなモデルを読み込み、 `workerId`を返します。 `startWorkerByModelId` を新しい統合では使用してください。 `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`.

### `YOLO Lite` `YOLOv8` `YOLOv5`

を使用して推論を行った結果は、 `InferenceEngine` YOLO Lite、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`**

左目の x 位置。入力画像の幅に対する割合として 0 から 1 の間の浮動小数で表されます。

**`leftEye.y`**

左目の y 位置。入力画像の高さに対する割合として 0 から 1 の間の浮動小数で表されます。

**`rightEye.x`**

右目の x 位置。入力画像の幅に対する割合として 0 から 1 の間の浮動小数で表されます。

**`rightEye.y`**

右目の y 位置。入力画像の高さに対する割合として 0 から 1 の間の浮動小数で表されます。

**`yaw`**

視線の yaw。ラジアンで測定されます。

**`pitch`**

視線の pitch。ラジアンで測定されます。

### `CVImage`

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

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

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

* `ImageBitmap`：任意の `ImageBitmap` 画像表現。
* `HTMLImageElement`：任意の `HTMLImageElement` 画像表現。
* `tf.Tensor`：任意の `tf.Tensor` 画像表現。
* `tf.Tensor4D`：任意の 4D `tf.Tensor` 画像表現。

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

**`bitmap()`**

解決される Promise を返します。 `ImageBitmap` 画像表現。画像がすでに bitmap の場合は、キャッシュされた bitmap を返します。

**`tensor()`**

画像の `tf.Tensor` 表現を返します。画像がすでに tensor の場合は、キャッシュされた tensor を返します。

**`tensor4D()`**

解決される Promise を返します。4D `tf.Tensor` 画像表現。画像がすでに 4D tensor の場合は、キャッシュされた 4D tensor を返します。

**`array()`**

解決される Promise を返します。画像がすでに tensor の場合は、tensor を JavaScript 配列に変換します。

**`dims()`**

画像の次元を含む配列を返します。画像が bitmap の場合は、 `[width, height]`を返します。画像が tensor の場合は、その形状を返します。画像が HTML 画像要素の場合は、 `[width, height]`.

**`dispose()`**

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

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

新しい `CVImage` インスタンスを、与えられた tensor-like 配列から作成します。
