For the complete documentation index, see llms.txt. This page is also available as Markdown.

Grounding DINO

Dedicated Deployment या self-hosted Inference पर टेक्स्ट-प्रॉम्प्टेड ऑब्जेक्ट डिटेक्शन के लिए Grounding DINO का उपयोग करें

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

Grounding DINO Serverless Cloud API पर उपलब्ध नहीं है। इसे एक समर्पित डिप्लॉयमेंट या स्व-होस्टेड Inference.

कोड नमूना

1

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

एक Roboflow खाता बनाएँ, अपनी कुंजी यहाँ ढूँढें Roboflow API सेटिंग्स पेज और इसे अपने शेल में उपलब्ध कराएँ:

export ROBOFLOW_API_KEY="आपकी-कुंजी-यहाँ"
2

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

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

pip install -U requests supervision opencv-python
3

मॉडल चलाएँ

सेट करें URL को अपने Dedicated Deployment URL या किसी स्थानीय Inference सर्वर पर।

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",
    json={
        "api_key": os.environ["ROBOFLOW_API_KEY"],
        "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)

इन्फरेंस गति

विलंबता मापी गई Roboflow Inference पर 1x NVIDIA L4, बैच आकार 1, वार्मअप के बाद के औसत के साथ।

मॉडल
विलंबता (ms)

grounding-dino

165.4

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

सेट करें URL को अपने डिप्लॉयमेंट लक्ष्य से मिलाएँ:

Inference के साथ उपयोग करें (सेल्फ-होस्टेड)

आप Grounding DINO को सीधे अपने Python प्रोसेस में भी inference पैकेज के साथ लोड कर सकते हैं, और HTTP चरण को पूरी तरह छोड़ सकते हैं।

1

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

pip install "inference[grounding-dino]"
2

मॉडल चलाएँ

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 थ्रेशहोल्ड्स की व्याख्या के लिए।

Grounding DINO सामान्य वस्तुओं (कारें, लोग, कुत्ते) पर सबसे प्रभावी है। यह संकीर्ण, बारीकी से परिभाषित श्रेणियों पर कमजोर है, इसलिए प्रॉम्प्ट की शब्दावली के साथ प्रयोग करें। एक सामान्य तरीका है Grounding DINO का उपयोग डेटा को ऑटो-लेबल करने के लिए करना, फिर परिणाम पर एक छोटा, तेज़ डिटेक्टर प्रशिक्षित करना।

अंतिम अपडेट

क्या यह उपयोगी था?