# inferencejs Reference

{% hint style="info" %}
Learn more about `inferencejs` , our web SDK, [here](/deploy/sdks/web-browser.md)
{% endhint %}

### Installation

This library is designed to be used within the browser, using a bundler such as vite, webpack, parcel, etc. Assuming your bundler is set up, you can install by executing:

`npm install inferencejs`

### Getting Started

Begin by initializing the `InferenceEngine`. This will start a background worker which is able to download and\
execute models without blocking the user interface.

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

const PUBLISHABLE_KEY = "rf_a6cd..."; // replace with your own publishable key from Roboflow

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

//make inferences against the model
const result = await inferEngine.infer(workerId, img);
```

## API

### InferenceEngine

**`new InferenceEngine()`**

Creates a new InferenceEngine instance.

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

Starts a new worker for the given model and returns the `workerId`. **Important**- `publishableKey` is required and can be obtained from Roboflow in your project settings folder.

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

Infer on n image using the worker with the given `workerId`. `img` can be created using `new CVImage(HTMLImageElement | HTMLVideoElement | ImageBitmap | TFJS.Tensor)` or [`createImageBitmap`](https://developer.mozilla.org/en-US/docs/Web/API/createImageBitmap)

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

Stops the worker with the given `workerId`.

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

The result of making an inference using the `InferenceEngine` on a YOLO Lite, YOLOv8, or YOLOv5 object detection model is an array of the following type:

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

### `GazeDetections`

The result of making an inference using the `InferenceEngine` on a Gaze model. An array with the following type:

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

**`leftEye.x`**

The x position of the left eye as a floating point number between 0 and 1, measured in percentage of the input image width.

**`leftEye.y`**

The y position of the left eye as a floating point number between 0 and 1, measured in percentage of the input image height.

**`rightEye.x`**

The x position of the right eye as a floating point number between 0 and 1, measured in percentage of the input image width.

**`rightEye.y`**

The y position of the right eye as a floating point number between 0 and 1, measured in percentage of the input image height.

**`yaw`**

The yaw of the visual gaze, measured in radians.

**`pitch`**

The pitch of the visual gaze, measured in radians.

### `CVImage`

A class representing an image that can be used for computer vision tasks. It provides various methods to manipulate and convert the image.

#### **Constructor**

The `CVImage(image)` class constructor initializes a new instance of the class. It accepts one image of one of the following types:

* `ImageBitmap`: An optional `ImageBitmap` representation of the image.
* `HTMLImageElement`: An optional `HTMLImageElement` representation of the image.
* `tf.Tensor`: An optional `tf.Tensor` representation of the image.
* `tf.Tensor4D`: An optional 4D `tf.Tensor` representation of the image.

#### **Methods**

**`bitmap()`**

Returns a promise that resolves to an `ImageBitmap` representation of the image. If the image is already a bitmap, it returns the cached bitmap.

**`tensor()`**

Returns a `tf.Tensor` representation of the image. If the image is already a tensor, it returns the cached tensor.

**`tensor4D()`**

Returns a promise that resolves to a 4D `tf.Tensor` representation of the image. If the image is already a 4D tensor, it returns the cached 4D tensor.

**`array()`**

Returns a promise that resolves to a JavaScript array representation of the image. If the image is already a tensor, it converts the tensor to an array.

**`dims()`**

Returns an array containing the dimensions of the image. If the image is a bitmap, it returns `[width, height]`. If the image is a tensor, it returns the shape of the tensor. If the image is an HTML image element, it returns `[width, height]`.

**`dispose()`**

Disposes of the tensor representations of the image to free up memory.

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

Creates a new `CVImage` instance from a given tensor-like array.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.roboflow.com/deploy/sdks/web-browser/web-inference.js/inferencejs-reference.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
