> 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/owlv2.md).

# OwlV2

OwlV2 Google का open-vocabulary object detector है। आप एक संदर्भ छवि पर एक या अधिक उदाहरण bounding boxes देते हैं, और OwlV2 बिना किसी प्रशिक्षण के target images में समान objects का पता लगाता है।

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

## कोड नमूना

{% 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 supervision opencv-python
```

{% endstep %}

{% step %}

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

नीचे दिया गया नमूना इनपुट image पर एक single example box को prompt के रूप में उपयोग करता है और उसी image में matching objects का पता लगाता है। व्यवहार में, आप आमतौर पर एक अलग reference image पास करते हैं। सेट करें `URL` अपने Dedicated Deployment URL या किसी स्थानीय Inference सर्वर पर।

```python
import base64
import os
import cv2
import numpy as np
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}/owlv2/infer",
    json={
        "api_key": os.environ["ROBOFLOW_API_KEY"],
        "image": {"type": "base64", "value": image_base64},
        "training_data": [{
            "image": {"type": "base64", "value": image_base64},
            "boxes": [{"x": 360, "y": 800, "w": 500, "h": 500, "cls": "dog"}],
        }],
        "confidence": 0.99,
    },
)
preds = response.json()["predictions"]

xyxys = [
    [p["x"] - p["width"] / 2, p["y"] - p["height"] / 2,
     p["x"] + p["width"] / 2, p["y"] + p["height"] / 2]
    for p in preds
]
detections = sv.Detections(
    xyxy=np.array(xyxys, dtype=float),
    class_id=np.array([p.get("class_id", 0) for p in preds]),
    confidence=np.array([p["confidence"] for p in preds], dtype=float),
    data={"class_name": np.array([p["class"] for p in preds])},
)
labels = [f"{p['class']} {p['confidence']:.2f}" for p in preds]
annotated = sv.BoxAnnotator().annotate(image.copy(), detections)
annotated = sv.LabelAnnotator().annotate(annotated, detections, labels=labels)
cv2.imwrite("dog_annotated.png", annotated)
```

<figure><img src="/files/cd4004ff68336ac2382a6920bf7a4de99b933eb8" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

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

विलंबता मापी गई [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>owlv2</code></td><td>541.2</td></tr></tbody></table>

पर मापा गया `owlv2-large-patch14-ensemble` दो text prompts वाला checkpoint।

{% 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 %}

OwlV2 confidences आम तौर पर बहुत उच्च होती हैं (0.99 से ऊपर)। `confidence` parameter को उसी अनुसार समायोजित करें।

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

OwlV2 को सीधे [`इनफ़रेंस`](https://docs.roboflow.com/deployment/self-hosted/self-hosted) package के साथ लोड किया जा सकता है। Inference में implementation *visual* examples: आप एक या अधिक example objects को box करते हैं, और model समान objects ढूँढता है।

{% stepper %}
{% step %}

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

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

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

{% step %}

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

```python
import base64
import io

from PIL import Image

from inference.core.entities.requests.owlv2 import OwlV2InferenceRequest
from inference.models.owlv2.owlv2 import OwlV2

image = {"type": "url", "value": "https://media.roboflow.com/inference/seawithdock.jpeg"}

request = OwlV2InferenceRequest(
    image=image,
    training_data=[
        {
            "image": image,
            "boxes": [{"x": 223, "y": 306, "w": 40, "h": 226, "cls": "post"}],
        }
    ],
    visualize_predictions=True,
    confidence=0.9999,
)

response = OwlV2().infer_from_request(request)

visualization = Image.open(io.BytesIO(response.visualization))
visualization.save("owlv2_visualization.jpg")
```

बदलें `training_data` जिन example objects से आप मिलान करना चाहते हैं, उनके साथ image URL को अपनी input image से बदलें। annotated result को लिखा जाता है `owlv2_visualization.jpg`.
{% endstep %}
{% endstepper %}
