> 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/ko/self-hosted/sdks/web-browser/inferencejs-reference.md).

# \`inferencejs\` 참조

{% hint style="info" %}
에 대해 자세히 알아보기 `inferencejs` 인, 우리의 웹 SDK, [여기](/deployment/ko/self-hosted/sdks/web-browser.md)
{% endhint %}

### 설치

이 라이브러리는 vite, webpack, parcel 등과 같은 번들러를 사용하여 브라우저 내에서 사용하도록 설계되었습니다. 번들러가 설정되어 있다고 가정하면 다음을 실행하여 설치할 수 있습니다:

`npm install inferencejs`

### 시작하기

다음으로 초기화하여 시작하세요. `InferenceEngine`. 그러면 사용자 인터페이스를 차단하지 않고 모델을 다운로드하고 실행할 수 있는 백그라운드 워커가 시작됩니다.

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

const PUBLISHABLE_KEY = "rf_a6cd..."; // Roboflow에서 받은 자신의 publishable key로 교체하세요

const inferEngine = new InferenceEngine();

// Roboflow의 모델 페이지에서 복사한 모델 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는 해당 버전에 별칭이 있으면 그 별칭을 통해 해석되며, 별칭이 없으면 버전에 단일 모델이 있을 때만 작동합니다. 그렇지 않으면 id가 모호하므로 자체 모델 id로 모델을 불러와야 합니다. 다음을 참조하세요 [레거시 ID가 해석되는 방식](https://docs.roboflow.com/models/model-ids).

## API

### InferenceEngine

**`new InferenceEngine()`**

새로운 InferenceEngine 인스턴스를 생성합니다.

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

주어진 모델 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` 를 사용하여 이미지 n에 대해 추론을 수행합니다 `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)` 클래스 생성자는 클래스의 새 인스턴스를 초기화합니다. 다음 유형 중 하나의 이미지를 받습니다:

* `ImageBitmap`: 선택적 `ImageBitmap` 이미지 표현.
* `HTMLImageElement`: 선택적 `HTMLImageElement` 이미지 표현.
* `tf.Tensor`: 선택적 `tf.Tensor` 이미지 표현.
* `tf.Tensor4D`: 선택적 4D `tf.Tensor` 이미지 표현.

#### **메서드**

**`bitmap()`**

다음으로 확인되는 promise를 반환합니다 `ImageBitmap` 이미지 표현. 이미지가 이미 비트맵이면 캐시된 비트맵을 반환합니다.

**`tensor()`**

다음을 반환합니다 `tf.Tensor` 이미지 표현. 이미지가 이미 텐서이면 캐시된 텐서를 반환합니다.

**`tensor4D()`**

다음으로 확인되는 promise를 반환합니다 `tf.Tensor` 이미지의 4D 표현. 이미지가 이미 4D 텐서이면 캐시된 4D 텐서를 반환합니다.

**`array()`**

다음으로 확인되는 promise를 반환합니다. 이미지의 JavaScript 배열 표현을 반환합니다. 이미지가 이미 텐서이면 텐서를 배열로 변환합니다.

**`dims()`**

이미지의 차원을 포함하는 배열을 반환합니다. 이미지가 비트맵이면 `[width, height]`를 반환합니다. 이미지가 텐서이면 텐서의 shape를 반환합니다. 이미지가 HTML 이미지 요소이면 `[width, height]`.

**`dispose()`**

메모리를 확보하기 위해 이미지의 텐서 표현을 해제합니다.

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

주어진 `CVImage` tensor-like 배열로부터 새 인스턴스를 생성합니다.
