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

# Grounding DINO

Grounding DINO एक ओपन-शब्दावली ऑब्जेक्ट डिटेक्टर है। आप एक छवि और टेक्स्ट क्लासों की एक सूची देते हैं, और मॉडल बिना किसी प्रशिक्षण के मिलते-जुलते क्षेत्रों के लिए बाउंडिंग बॉक्स लौटाता है।

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

## Grounding DINO एपीआई

{% stepper %}
{% step %}

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

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

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

{% endstep %}

{% step %}

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

ये पैकेज एपीआई को कॉल करते हैं और उसके परिणामों को ड्रॉ करते हैं:

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

{% endstep %}

{% step %}

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

सेट करें `URL` अपने समर्पित डिप्लॉयमेंट URL या एक स्थानीय इन्फ़रेंस सर्वर पर।

```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}/grounding_dino/infer",
    headers={"Authorization": f"Bearer {os.environ['ROBOFLOW_API_KEY']}"},
    json={
        "image": {"type": "base64", "value": image_base64},
        "text": ["कुत्ता", "व्यक्ति", "बैकपैक"],
    },
)
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/eed2a28fdbd6905cf2092184052d68b057736d9b" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

## Grounding DINO अनुमान गति

लेटेंसी मापी गई [Roboflow Inference](https://docs.roboflow.com/deployment/self-hosted/self-hosted) 1x NVIDIA L4 पर, बैच आकार 1 के साथ, वार्मअप के बाद औसत।

<table data-search="false"><thead><tr><th>मॉडल</th><th>लेटेंसी (ms)</th></tr></thead><tbody><tr><td><code>grounding-dino</code></td><td>165.4</td></tr></tbody></table>

दो टेक्स्ट प्रॉम्प्ट्स के साथ मापा गया।

{% hint style="info" %}
सेट करें `URL` को अपने परिनियोजन लक्ष्य से मिलाएँ:

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

## स्वयं-होस्टेड Inference के साथ Grounding DINO चलाएँ

आप Grounding DINO को सीधे अपने Python प्रोसेस में भी लोड कर सकते हैं [`inference`](https://docs.roboflow.com/deployment/self-hosted/self-hosted) पैकेज का उपयोग करके, HTTP hop को पूरी तरह छोड़े हुए।

{% stepper %}
{% step %}

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

```bash
pip install "inference[grounding-dino]"
```

{% endstep %}

{% step %}

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

```python
from inference.models.grounding_dino import GroundingDINO

model = GroundingDINO(api_key="YOUR_API_KEY")

results = model.infer(
    {
        "image": {
            "type": "url",
            "value": "https://media.roboflow.com/fruit.png",
        },
        "text": ["सेब"],
        # वैकल्पिक थ्रेशहोल्ड, दोनों का डिफ़ॉल्ट 0.5 है
        "box_threshold": 0.5,
        "text_threshold": 0.5,
    }
)

print(results)
```

बदलें `सेब` जिन वस्तुओं का आप पता लगाना चाहते हैं, उनसे बदलें, और समायोजित करें `box_threshold` और `text_threshold` अपने उपयोग-केस के लिए। देखें [Grounding DINO README](https://github.com/IDEA-Research/GroundingDINO?tab=readme-ov-file#star-explanationstips-for-grounding-dino-inputs-and-outputs) थ्रेशहोल्ड्स की व्याख्या के लिए।
{% endstep %}
{% endstepper %}

{% hint style="info" %}
Grounding DINO सामान्य वस्तुओं (कारें, लोग, कुत्ते) पर सबसे प्रभावी है। यह संकीर्ण, सूक्ष्म-स्तरीय श्रेणियों पर कमजोर है, इसलिए प्रॉम्प्ट की शब्दावली के साथ प्रयोग करें। एक सामान्य तरीका यह है कि Grounding DINO का उपयोग डेटा को स्वतः-लेबल करने के लिए किया जाए, फिर परिणाम पर एक छोटा, तेज़ डिटेक्टर प्रशिक्षित किया जाए।
{% endhint %}
