> 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/models/hi/supported-models/perception-encoder.md).

# Perception Encoder

Perception Encoder, Meta का विज़न-लैंग्वेज एम्बेडिंग मॉडल है। यह समानता खोज, ज़ीरो-शॉट वर्गीकरण और पुनर्प्राप्ति के लिए छवियों और पाठ को एक साझा एम्बेडिंग स्पेस में मैप करता है।

{% hint style="info" %}
Perception Encoder Serverless Hosted API पर उपलब्ध नहीं है। इसे एक पर चलाएँ [समर्पित परिनियोजन](https://docs.roboflow.com/deployment/roboflow-cloud/dedicated-deployments) या [स्व-होस्टेड इनफ़रेंस](https://docs.roboflow.com/deployment/self-hosted/self-hosted).
{% endhint %}

हम तीन Perception Encoder एंडपॉइंट्स का समर्थन करते हैं:

* `/perception_encoder/embed_image` - एक छवि एम्बेड करें
* `/perception_encoder/embed_text` - एक स्ट्रिंग एम्बेड करें
* `/perception_encoder/compare` - एक छवि और पाठ प्रॉम्प्ट्स की सूची के बीच समानता की गणना करें

## कोड नमूना

{% stepper %}
{% step %}

### अपनी API कुंजी प्राप्त करें

एक Roboflow खाता बनाएँ, अपनी कुंजी यहाँ खोजें [Roboflow API सेटिंग्स पेज](https://app.roboflow.com/settings/api) और इसे अपने shell के लिए उपलब्ध कराएँ:

```bash
export ROBOFLOW_API_KEY="your-key-here"
```

{% endstep %}

{% step %}

### निर्भरताएँ इंस्टॉल करें

ये पैकेज छवि प्राप्त करते हैं और API को कॉल करते हैं:

```bash
pip install -U requests opencv-python supervision
```

{% endstep %}

{% step %}

### मॉडल चलाएँ

नीचे दिया गया उदाहरण एक छवि भेजता है `/perception_encoder/embed_image` और एम्बेडिंग आकार प्रिंट करता है। सेट करें `URL` अपने Dedicated Deployment URL या किसी स्थानीय Inference सर्वर पर।

```python
import base64
import os
import cv2
import requests
import supervision as sv

URL = "https://your-deployment.roboflow.cloud"

image = sv.load_image_from_url("https://media.roboflow.com/notebooks/examples/dog.jpeg")

_, buffer = cv2.imencode(".jpg", image)
image_base64 = base64.b64encode(buffer).decode("utf-8")

response = requests.post(
    f"{URL}/perception_encoder/embed_image",
    json={
        "api_key": os.environ["ROBOFLOW_API_KEY"],
        "image": {"type": "base64", "value": image_base64},
    },
)
result = response.json()
embedding = result["embeddings"][0]
print(f"एम्बेडिंग लंबाई: {len(embedding)}")
print(f"पहले मान: {embedding[:5]}")
```

{% endstep %}
{% endstepper %}

ऊपर दिया गया कोड टर्मिनल में एम्बेडिंग आकार प्रिंट करता है:

```
एम्बेडिंग लंबाई: 1024
पहले मान: [0.0545, -0.0338, -0.0355, -0.0062, 0.0154]
```

## इनफ़रेंस गति

विलंबता मापी गई [Roboflow Inference](https://docs.roboflow.com/deployment/self-hosted/self-hosted) पर 1x NVIDIA L4, batch size 1, warmup के बाद औसत।

<table data-search="false"><thead><tr><th>मॉडल</th><th>Latency (ms)</th></tr></thead><tbody><tr><td><code>perception-encoder</code></td><td>25.2</td></tr></tbody></table>

से मापा गया `embed_image` पर `PE-Core-L14-336` चेकपॉइंट (केवल छवि एम्बेडिंग)।

{% hint style="info" %}
सेट करें `URL` को अपने deployment target से मिलाने के लिए:

* `http://localhost:9001` एक स्थानीय [Inference](https://docs.roboflow.com/deployment/self-hosted/self-hosted) server के लिए।
* आपका [समर्पित परिनियोजन](https://docs.roboflow.com/deployment/roboflow-cloud/dedicated-deployments) एक निजी endpoint के लिए URL।
  {% endhint %}

## Inference (self-hosted) के साथ उपयोग करें

Perception Encoder को सीधे [`इनफ़रेंस`](https://docs.roboflow.com/deployment/self-hosted/self-hosted) पैकेज के साथ लोड किया जा सकता है, जो स्थानीय रूप से कई छवियों या वीडियो फ़्रेमों को एम्बेड करने का सबसे तेज़ तरीका है।

{% stepper %}
{% step %}

### पैकेज इंस्टॉल करें

```bash
pip install "inference[transformers]"
```

उपयोग करें `inference-gpu[transformers]` एक GPU मशीन पर।
{% endstep %}

{% step %}

### स्थानीय रूप से एम्बेड और तुलना करें

```python
from inference.core.utils.postprocess import cosine_similarity
from inference.models import PerceptionEncoder

pe = PerceptionEncoder(model_id="perception_encoder/PE-Core-B16-224")

image_embedding = pe.embed_image("https://media.roboflow.com/inference/people-walking.jpg")
text_embedding = pe.embed_text("a crowd of people walking")

print(cosine_similarity(image_embedding[0], text_embedding[0]))
```

{% endstep %}
{% endstepper %}

### उपलब्ध चेकपॉइंट

`model_id` बैकबोन चुनता है:

* `perception_encoder/PE-Core-B16-224`
* `perception_encoder/PE-Core-L14-336`
* `perception_encoder/PE-Core-G14-448`

केवल CLIP-शैली का इंटरफ़ेस समर्थित है; भाषा-संरेखित और स्थानिक-संरेखित Perception Encoder वेरिएंट अभी उपलब्ध नहीं हैं।

{% hint style="info" %}
Perception Encoder उसी API संरचना का उपयोग करता है जैसे [CLIP](/models/hi/supported-models/clip.md): `embed_image`, `embed_text`, और `compare` वही तर्क लेते हैं और वही प्रतिक्रिया प्रारूप लौटाते हैं, इसलिए CLIP के लिए लिखा गया कोड मॉडल बदलकर Perception Encoder के साथ काम करता है।
{% endhint %}

### वर्कफ़्लोज़ में उपयोग करें

Perception Encoder उपलब्ध है [वर्कफ़्लोज़](https://docs.roboflow.com/workflows) के माध्यम से **Perception Encoder एम्बेडिंग मॉडल** ब्लॉक, जो बिना कोड लिखे छवि या पाठ एम्बेडिंग उत्पन्न करता है।
