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

# RF-DETR

## RF-DETR ऑब्जेक्ट डिटेक्शन

RF-DETR Roboflow का ट्रांसफॉर्मर-आधारित रियल-टाइम डिटेक्शन मॉडल है। COCO-पूर्व-प्रशिक्षित ऑब्जेक्ट डिटेक्शन चेकपॉइंट्स पर इंफरेंस चलाएँ, इसके माध्यम से [सर्वरलेस क्लाउड API](https://docs.roboflow.com/deployment/roboflow-cloud/serverless-api)या स्वयं होस्ट करें, उपयोग करके [Roboflow Inference](https://docs.roboflow.com/deployment/self-hosted/self-hosted).

### RF-DETR ऑब्जेक्ट डिटेक्शन API

नीचे दिए गए चरण RF-DETR को [सर्वरलेस क्लाउड API](https://docs.roboflow.com/deployment/roboflow-cloud/serverless-api) के माध्यम से चलाते हैं और परिणामों को [supervision](https://supervision.roboflow.com/).

{% 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 inference-sdk supervision
```

{% endstep %}

{% step %}
**मॉडल चलाएँ**

चलाएँ `rfdetr-small` को एक नमूना छवि पर चलाएँ और बाउंडिंग बॉक्स तथा लेबल एनोटेट करें:

```python
import os
import cv2
import supervision as sv
from inference_sdk import InferenceHTTPClient, InferenceConfiguration

image_url = "https://media.roboflow.com/quickstart/traffic.jpg"
image = sv.load_image_from_url(image_url)

client = InferenceHTTPClient(
    api_url="https://serverless.roboflow.com",
    api_key=os.environ["ROBOFLOW_API_KEY"],
).configure(InferenceConfiguration(api_key_transport="header"))
result = client.infer(image, model_id="rfdetr-small")

detections = sv.Detections.from_inference(result)

annotated = sv.BoxAnnotator().annotate(image.copy(), detections)
annotated = sv.LabelAnnotator().annotate(annotated, detections)

cv2.imwrite("traffic-annotated.png", annotated)
```

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

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

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

### RF-DETR ऑब्जेक्ट डिटेक्शन मॉडल और बेंचमार्क

इनमें से किसी भी एलियास को `model_id` इन्फरेंस चलाते समय पास करें। SDK प्रत्येक एलियास को अंतर्निहित Roboflow प्रोजेक्ट संस्करण में हल करता है।

<table data-search="false"><thead><tr><th>उपनाम</th><th>इनपुट आकार</th><th>mAP50-95</th><th>ONNX विलंबता (ms)*</th><th>TensorRT FP16 (ms)*</th></tr></thead><tbody><tr><td><code>rfdetr-nano</code></td><td>384x384</td><td>48.4</td><td>9.7</td><td>6.2</td></tr><tr><td><code>rfdetr-small</code></td><td>512x512</td><td>53.0</td><td>12.9</td><td>8.3</td></tr><tr><td><code>rfdetr-medium</code></td><td>576x576</td><td>54.7</td><td>16.3</td><td>9.5</td></tr><tr><td><code>rfdetr-large</code></td><td>704x704</td><td>56.5</td><td>25.6</td><td>11.6</td></tr><tr><td><code>rfdetr-xlarge</code></td><td>700x700</td><td>58.6</td><td>41.6</td><td>14.9</td></tr><tr><td><code>rfdetr-2xlarge</code></td><td>880x880</td><td>60.1</td><td>53.4</td><td>21.7</td></tr></tbody></table>

## RF-DETR इंस्टेंस सेगमेंटेशन

RF-DETR इंस्टेंस सेगमेंटेशन चेकपॉइंट्स भी प्रदान करता है जो बाउंडिंग बॉक्स के साथ-साथ मास्क भी प्रेडिक्ट करते हैं। उन्हें इसके माध्यम से चलाएँ [सर्वरलेस क्लाउड API](https://docs.roboflow.com/deployment/roboflow-cloud/serverless-api)या स्वयं होस्ट करें, उपयोग करके [Roboflow Inference](https://docs.roboflow.com/deployment/self-hosted/self-hosted).

### RF-DETR इंस्टेंस सेगमेंटेशन API

ऊपर दिखाए अनुसार अपनी API कुंजी सेट करें और डिपेंडेंसीज़ इंस्टॉल करें, फिर एक सेगमेंटेशन चेकपॉइंट चलाएँ और उसके मास्क्स को ड्रॉ करें:

```python
import os
import cv2
import supervision as sv
from inference_sdk import InferenceHTTPClient

image_url = "https://media.roboflow.com/quickstart/traffic.jpg"
image = sv.load_image_from_url(image_url)

client = InferenceHTTPClient(
    api_url="https://serverless.roboflow.com",
    api_key=os.environ["ROBOFLOW_API_KEY"],
)
result = client.infer(image, model_id="rfdetr-seg-preview")

detections = sv.Detections.from_inference(result)

annotated = sv.MaskAnnotator().annotate(image.copy(), detections)
annotated = sv.LabelAnnotator().annotate(annotated, detections)

cv2.imwrite("traffic-annotated.png", annotated)
```

<figure><img src="/files/8f4526527fda5de5b790fbd1fad612b9662fa00a" alt=""><figcaption></figcaption></figure>

### RF-DETR इंस्टेंस सेगमेंटेशन मॉडल और बेंचमार्क

इनमें से किसी भी एलियास को `model_id` इन्फरेंस चलाते समय पास करें। SDK प्रत्येक एलियास को अंतर्निहित Roboflow प्रोजेक्ट संस्करण में हल करता है। दिए गए आँकड़े COCO पर मास्क mAP हैं `val`.

<table data-search="false"><thead><tr><th>उपनाम</th><th>इनपुट आकार</th><th>मास्क mAP50-95</th><th>ONNX विलंबता (ms)*</th><th>TensorRT FP16 (ms)*</th></tr></thead><tbody><tr><td><code>rfdetr-seg-nano</code></td><td>312x312</td><td>40.3</td><td>15.8</td><td>10.5</td></tr><tr><td><code>rfdetr-seg-small</code></td><td>384x384</td><td>43.1</td><td>19.3</td><td>11.9</td></tr><tr><td><code>rfdetr-seg-medium</code></td><td>432x432</td><td>45.3</td><td>23.9</td><td>14.1</td></tr><tr><td><code>rfdetr-seg-large</code></td><td>504x504</td><td>47.1</td><td>30.1</td><td>15.4</td></tr><tr><td><code>rfdetr-seg-xlarge</code></td><td>624x624</td><td>48.8</td><td>51.2</td><td>19.1</td></tr><tr><td><code>rfdetr-seg-2xlarge</code></td><td>768x768</td><td>49.9</td><td>89.6</td><td>25.6</td></tr></tbody></table>

## RF-DETR कीपॉइंट डिटेक्शन

RF-DETR कीपॉइंट डिटेक्शन एक प्रीव्यू चेकपॉइंट है, जो COCO व्यक्ति कीपॉइंट्स पर पूर्व-प्रशिक्षित है। इसे इसके माध्यम से चलाएँ [सर्वरलेस क्लाउड API](https://docs.roboflow.com/deployment/roboflow-cloud/serverless-api)या स्वयं होस्ट करें, उपयोग करके [Roboflow Inference](https://docs.roboflow.com/deployment/self-hosted/self-hosted).

{% hint style="info" %}
यह चेकपॉइंट एक प्रीव्यू है। बाद के रिलीज़ में इसकी सटीकता और आउटपुट फ़ॉर्मेट बदल सकते हैं।
{% endhint %}

### RF-DETR कीपॉइंट डिटेक्शन API

ऊपर दिखाए अनुसार अपनी API कुंजी सेट करें और डिपेंडेंसीज़ इंस्टॉल करें, फिर चलाएँ `rfdetr-keypoint-preview` और कीपॉइंट्स को एनोटेट करें:

```python
import os
import cv2
import numpy as np
import supervision as sv
from inference_sdk import InferenceHTTPClient

COCO_KEYPOINTS = [
    "nose", "left_eye", "right_eye", "left_ear", "right_ear",
    "left_shoulder", "right_shoulder", "left_elbow", "right_elbow",
    "left_wrist", "right_wrist", "left_hip", "right_hip",
    "left_knee", "right_knee", "left_ankle", "right_ankle",
]

image_url = "https://media.roboflow.com/notebooks/examples/person-walking.png"
image = sv.load_image_from_url(image_url)

client = InferenceHTTPClient(
    api_url="https://serverless.roboflow.com",
    api_key=os.environ["ROBOFLOW_API_KEY"],
)
result = client.infer(image, model_id="rfdetr-keypoint-preview")

# प्रत्येक प्रेडिक्शन में केवल वे कीपॉइंट्स सूचीबद्ध हैं जिन्हें मॉडल देख सकता है, इसलिए उन्हें इसमें रखें
# स्केलेटन द्वारा अपेक्षित 17 COCO स्लॉट्स में रखें और जो गायब हैं उन्हें अदृश्य के रूप में चिह्नित करें।
xy, visible = [], []
for prediction in result["predictions"]:
    found = {point["class"]: (point["x"], point["y"]) for point in prediction["keypoints"]}
    xy.append([found.get(name, (0, 0)) for name in COCO_KEYPOINTS])
    visible.append([name in found for name in COCO_KEYPOINTS])

key_points = sv.KeyPoints(xy=np.array(xy, dtype=np.float32), visible=np.array(visible))

annotated = sv.EdgeAnnotator(color=sv.Color.GREEN, thickness=3).annotate(image.copy(), key_points)
annotated = sv.VertexAnnotator(color=sv.Color.RED, radius=5).annotate(annotated, key_points)
cv2.imwrite("person-walking-annotated.png", annotated)
```

<figure><img src="/files/6c5b8e381e282f0312c606b37d39badf2d7cfb33" alt=""><figcaption></figcaption></figure>

### RF-DETR कीपॉइंट डिटेक्शन मॉडल और बेंचमार्क

एलियास को `model_id` इन्फरेंस चलाते समय पास करें। सटीकता COCO `val` AP50-95 को ऑब्जेक्ट कीपॉइंट समानता (OKS) के साथ स्कोर किया गया है, जो मानक COCO कीपॉइंट मीट्रिक है, इसलिए यह ऊपर दिए गए बॉक्स और मास्क mAP से तुलना योग्य नहीं है।

<table data-search="false"><thead><tr><th>उपनाम</th><th>इनपुट आकार</th><th>कीपॉइंट AP50-95</th><th>पैरामीटर (M)</th><th>विलंबता (ms)†</th></tr></thead><tbody><tr><td><code>rfdetr-keypoint-preview</code></td><td>576x576</td><td>71.8</td><td>126.4</td><td>9.7</td></tr></tbody></table>

Roboflow अभी तक इस चेकपॉइंट के लिए एक प्रीबिल्ट TensorRT इंजन प्रकाशित नहीं करता, इसलिए Inference इसे ONNX Runtime पर चलाता है, भले ही आप `inference-models[trt10]` एक्स्ट्रा इंस्टॉल करें। तालिका में दी गई विलंबता तक पहुँचने के लिए आपको इंजन स्वयं के साथ बनाना होगा [rfdetr](https://github.com/roboflow/rf-detr) पैकेज।

***

† कीपॉइंट सटीकता और विलंबता वे आँकड़े हैं जो [RF-DETR बेंचमार्क](https://rfdetr.roboflow.com/latest/#keypoints): विलंबता 1x NVIDIA T4 पर batch size 1 के साथ TensorRT FP16 है, केवल मॉडल का समय मापा गया है। यह ऊपर दी गई तालिकाओं से अलग GPU और अलग पाइपलाइन है, इसलिए विलंबता के ये दो सेट सीधे तुलना योग्य नहीं हैं।

\* विलंबता मापी गई है [Roboflow Inference](https://docs.roboflow.com/deployment/self-hosted/self-hosted) 1x NVIDIA L4 पर, batch size 1 के साथ, 1,000 इन्फरेंस (100 warmup) के औसत के रूप में। डिफ़ॉल्ट `inference-gpu` इंस्टॉल CUDA execution provider पर ONNX चलाता है; जोड़ने पर `inference-models[trt10]` एक्स्ट्रा स्वचालित रूप से एक प्रीबिल्ट TensorRT FP16 इंजन चुनता है। FP16, COCO पर FP32 सटीकता के 0.2 mAP के भीतर मेल खाता है `val2017`. सटीकता प्रकाशित COCO `val` विशिष्टता है (देखें [RF-DETR घोषणा](https://blog.roboflow.com/rf-detr/)).
