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

# वेब inference.js

`inferencejs` यह एक JavaScript पैकेज है जो Roboflow पर प्रशिक्षित मॉडलों का उपयोग करके ब्राउज़र के माध्यम से रियल-टाइम inference सक्षम करता है।

{% hint style="info" %}
देखें `inferencejs` संदर्भ [यहाँ](/deployment/hi/self-hosted/sdks/web-browser/inferencejs-reference.md)
{% endhint %}

अधिकांश व्यावसायिक अनुप्रयोगों के लिए, [Hosted API](/deployment/hi/legacy/legacy-serverless.md) उपयुक्त है। लेकिन कई उपभोक्ता अनुप्रयोगों और कुछ एंटरप्राइज़ उपयोग मामलों के लिए, सर्वर-होस्टेड मॉडल होना व्यावहारिक नहीं है (उदाहरण के लिए, यदि आपके उपयोगकर्ताओं की बैंडविड्थ सीमित है या उन्हें उस से कम विलंबता चाहिए जो आप किसी रिमोट API का उपयोग करके प्राप्त कर सकते हैं)।

### सीखने के संसाधन

* **अपने मॉडल को वेबकैम के साथ आज़माएँ**: आप एक [हैंड-डिटेक्टर मॉडल का वेबकैम डेमो यहाँ आज़मा सकते हैं](https://demo.roboflow.com/egohands-public/9?publishable_key=rf_5w20VzQObTXjJhTjq6kad9ubrm33) (यह सार्वजनिक [EgoHands डेटासेट](https://universe.roboflow.com/brad-dwyer/egohands-public/)).
* **इंटरैक्टिव Replit वातावरण**: हमने एक "[शुरू करना](https://replit.com/@roboflow/Roboflow-Web-Quickstart)" प्रोजेक्ट Repl.it पर प्रकाशित किया है, साथ में एक ट्यूटोरियल भी है जो दिखाता है [हमारे Repl.it टेम्पलेट का उपयोग करके YOLOv8 मॉडलों को कैसे डिप्लॉय करें](https://blog.roboflow.com/deploy-yolov8-models-to-replit/).
* **GitHub टेम्पलेट**: [Roboflow का होमपेज](https://github.com/roboflow/homepage-demo) उपयोग करता है `inferencejs` COCO inference widget को संचालित करने के लिए। README में GitHub Pages का उपयोग करके वेब पर मॉडल डिप्लॉय करने के लिए repository template का उपयोग कैसे करें, इसके निर्देश हैं।
* **दस्तावेज़ीकरण**: यदि आप `inferencejs`में विशिष्ट फ़ंक्शनों के बारे में अधिक विवरण चाहते हैं, तो हमारी [दस्तावेज़ीकरण पेज](/deployment/hi/self-hosted/sdks/web-browser/inferencejs-reference.md) या किसी भी उल्लेख पर क्लिक करें `inferencejs` हमारी नीचे दी गई गाइड में method के, ताकि आपको संबंधित दस्तावेज़ीकरण पर ले जाया जा सके।

### समर्थित मॉडल

`inferencejs` वर्तमान में इन मॉडल आर्किटेक्चर का समर्थन करता है:

* [RF-DETR](https://roboflow.com/model/rf-detr)
* Roboflow 3.0 (YOLOv8-संगत)
* YOLOv5
* YOLOLite
* [दृष्टि पहचान](/deployment/hi/self-hosted/sdks/web-browser/inferencejs-reference.md#gazedetections)

### इंस्टॉलेशन

जोड़ने के लिए `इनफेरेंस` अपने प्रोजेक्ट में, बस npm का उपयोग करके इंस्टॉल करें या अपने पेज के `<head>` टैग में script tag reference जोड़ें।

```bash
npm install inferencejs
```

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

## आरंभ किया जा रहा है `inferencejs`

### प्रमाणीकरण किया जा रहा है

आप अपना `publishable_key` Roboflow workspace settings से प्राप्त कर सकते हैं।

<figure><img src="/files/06dc853018bafc84ac399bb294a028b8eb581985" alt="" width="563"><figcaption></figcaption></figure>

{% hint style="warning" %}
**नोट:** आपका `publishable_key` का उपयोग `inferencejs`, **नहीं** आपका **निजी** API key (जो गोपनीय रहनी चाहिए) के साथ किया जाता है।
{% endhint %}

सबसे पहले आयात करें `InferenceEngine` और एक नया inference engine ऑब्जेक्ट बनाएं

{% hint style="info" %}
`inferencejs` webworkers का उपयोग करता है ताकि मुख्य UI thread को अवरुद्ध किए बिना कई मॉडल इस्तेमाल किए जा सकें। प्रत्येक मॉडल को `InferenceEngine` हमारे webworker manager के माध्यम से लोड किया जाता है, जो आपके लिए आवश्यक thread management को abstract करता है।
{% endhint %}

```typescript
import { InferenceEngine } from "inferencejs";
const inferEngine = new InferenceEngine();
```

अब हम आपके `publishable_key` और model id का उपयोग करके Roboflow से मॉडल लोड कर सकते हैं, साथ ही confidence threshold और overlap threshold जैसे configuration parameters भी।

```typescript
const workerId = await inferEngine.startWorkerByModelId("[model id]", "[publishable key]");
```

मॉडल आईडी मॉडल के पेज पर दिखाई जाती है और इसका रूप है `workspace/model-slug` (उदाहरण: `my-workspace/hard-hat-abc-1-yolov8n-t1`). एक legacy project-versioned model लोड करने के लिए, उपयोग करें `startWorker` इसके बजाय project slug और version number के साथ। कई प्रशिक्षित मॉडलों वाले version के लिए, legacy `{project}/{version}` id, यदि कोई alias मौजूद हो, तो version के alias के माध्यम से resolve होता है; alias न होने पर यह केवल तभी काम करता है जब version में एक ही model हो, अन्यथा id ambiguous होती है और आपको model को उसके अपने model id से लोड करना चाहिए. देखें [लेगेसी IDs कैसे resolve होते हैं](https://docs.roboflow.com/models/model-ids).

`inferencejs` अब एक worker शुरू करेगा जो चुने गए मॉडल को चलाता है। लौटाया गया worker id `InferenceEngine` में worker id से मेल खाता है जिसका उपयोग हम inference के लिए करेंगे। मॉडल पर infer करने के लिए हम `infer` method को `InferenceEngine`.

आइए एक image लोड करें और अपने worker पर infer करें।

```typescript
const image = document.getElementById("image"); // id `image` वाला image element प्राप्त करें
const predictions = await inferEngine.infer(workerId, image); // image पर infer करें
```

{% hint style="info" %}
यह विभिन्न image formats ले सकता है (`HTMLImageElement`, `HTMLVideoElement`, `ImageBitmap`या `TFJS Tensor`).
{% endhint %}

यह predictions की एक array लौटाता है (एक class के रूप में, इस मामले में `RFObjectDetectionPrediction` )

### कॉन्फ़िगरेशन

यदि आप जिस तरीके से `inferencejs` अपनी predictions को फ़िल्टर करता है, उसे अनुकूलित और कॉन्फ़िगर करना चाहते हैं, तो आप निर्माण के समय worker को parameters पास कर सकते हैं।

```typescript
const configuration = [{ scoreThreshold: 0.5, iouThreshold: 0.5, maxNumBoxes: 20 }];
const workerId = await inferEngine.startWorkerByModelId("[model id]", "[publishable key]", configuration);
```

या आप inference के समय configuration options पास कर सकते हैं

```javascript
const configuration = [{
    scoreThreshold: 0.5,
    iouThreshold: 0.5,
    maxNumBoxes: 20
}];
const predictions = await inferEngine.infer(workerId, image, configuration);
```
