> 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/roboflow/roboflow-ko/deploy/sdks/web-browser/web-inference.js/inferencejs-reference.md).

# inferencejs 참고 자료

{% hint style="info" %}
자세히 알아보기 `inferencejs` , 저희 web SDK, [여기](/roboflow/roboflow-ko/deploy/sdks/web-browser.md)
{% endhint %}

### 설치

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

`npm install inferencejs`

### 시작하기

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

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

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

const inferEngine = new InferenceEngine();

// Roboflow의 모델 페이지에서 복사한 model id로 모델을 불러옵니다.
const workerId = await inferEngine.startWorkerByModelId("[MODEL ID]", PUBLISHABLE_KEY);

//모델에 대해 추론을 수행합니다
const result = await inferEngine.infer(workerId, img);
```

model id는 모델 페이지에 표시되며 다음 형식을 가집니다 `workspace/model-slug` (예: `my-workspace/hard-hat-abc-1-yolov8n-t1`). 레거시 프로젝트 버전 모델은 다음을 사용해 불러올 수 있습니다 `startWorker` 프로젝트 slug와 버전 번호를 사용합니다. 여러 학습된 모델이 있는 버전의 경우, 레거시 `{project}/{version}` id는 별칭이 있는 경우 해당 버전의 alias를 통해 해석됩니다. alias가 없으면 버전에 단일 모델이 있는 경우에만 작동하며, 그렇지 않으면 id가 모호하므로 모델 자체의 model id로 불러와야 합니다. 다음을 참조하세요 [레거시 ID가 해결되는 방식](/roboflow/roboflow-ko/train/model-ids.md).

## API

### InferenceEngine

**`new InferenceEngine()`**

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

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

주어진 model id에 대해 새 worker를 시작하고 다음을 반환합니다 `workerId`. 이것이 모델을 불러오는 권장 방법입니다. `modelId` 는 전체 `workspace/model-slug` 모델 페이지에 표시되는 id이며, 버전이 없는 모델과 다중 모델 버전에서 작동합니다. `publishableKey` 가 필요하며, 프로젝트 settings 폴더에서 Roboflow로부터 얻을 수 있습니다.

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

프로젝트 URL slug와 정수 버전으로 지정된 레거시 모델을 불러오고, 다음을 반환합니다 `workerId`. 사용 `startWorkerByModelId` 새 통합을 위한 것입니다. `publishableKey` 가 필요하며, 프로젝트 settings 폴더에서 Roboflow로부터 얻을 수 있습니다.

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

주어진 worker를 사용하여 이미지에 대해 추론합니다 `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>`**

주어진 worker를 중지합니다 `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 model에서의 결과입니다. 다음 유형의 배열입니다:

```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` 이미지 표현입니다. 이미지가 이미 bitmap이면 캐시된 bitmap을 반환합니다.

**`tensor()`**

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

**`tensor4D()`**

4D 이미지 표현으로 해결되는 promise를 반환합니다 `tf.Tensor` 이미지 표현입니다. 이미지가 이미 4D tensor이면 캐시된 4D tensor를 반환합니다.

**`array()`**

이미지의 JavaScript 배열 표현으로 해결되는 promise를 반환합니다. 이미지가 이미 tensor이면 tensor를 배열로 변환합니다.

**`dims()`**

이미지의 차원을 포함하는 배열을 반환합니다. 이미지가 bitmap이면 다음을 반환합니다 `[width, height]`. 이미지가 tensor이면 tensor의 shape를 반환합니다. 이미지가 HTML image element이면 다음을 반환합니다 `[width, height]`.

**`dispose()`**

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

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

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