> 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).

# Web inference.js

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

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

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

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

* **वेबकैम के साथ अपना मॉडल आज़माएँ**: आप एक [हैंड-डिटेक्टर मॉडल का वेबकैम डेमो यहाँ आज़मा सकते हैं](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 इन्फरेंस विजेट को संचालित करने के लिए। README में GitHub Pages का उपयोग करके वेब पर मॉडल तैनात करने के लिए रिपॉज़िटरी टेम्पलेट का उपयोग करने के निर्देश हैं।
* **दस्तावेज़ीकरण**: यदि आप `inferencejs`में विशिष्ट फ़ंक्शनों के बारे में अधिक विवरण चाहते हैं, तो हमारी [दस्तावेज़ीकरण पृष्ठ](/deployment/hi/self-hosted/sdks/web-browser/inferencejs-reference.md) देखें या `inferencejs` नीचे दिए गए हमारे गाइड में किसी भी विधि के उल्लेख पर क्लिक करें ताकि आपको संबंधित दस्तावेज़ीकरण पर ले जाया जा सके।

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

`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)

### स्थापना

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

```bash
npm install inferencejs
```

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

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

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

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

<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 थ्रेड को ब्लॉक किए बिना कई मॉडल उपयोग किए जा सकें। प्रत्येक मॉडल इसके माध्यम से लोड होता है `InferenceEngine` हमारा webworker manager, जो आपके लिए आवश्यक थ्रेड प्रबंधन को abstract करता है।
{% endhint %}

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

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

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

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

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

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

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

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

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

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

यदि आप तरीका customize और configure करना चाहते हैं `inferencejs` अपने predictions फ़िल्टर करता है, तो आप creation के समय 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);
```
