> 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/evaluate/evaluate-trained-models.md).

# प्रशिक्षित मॉडल का मूल्यांकन करें

## के बारे में

मॉडल मूल्यांकन दिखाते हैं:

1. एक प्रोडक्शन मेट्रिक्स एक्सप्लोरर, जो आपको वह इष्टतम confidence threshold खोजने में मदद करता है जिस पर आपका मॉडल चलाना है;
2. मॉडल सुधार अनुशंसाएँ, जो यह सुझाव देती हैं कि आप अपने मॉडल की सटीकता कैसे बढ़ा सकते हैं;
3. क्लास के अनुसार प्रदर्शन, जो दिखाता है कि आपका मॉडल विभिन्न क्लासों की कितनी अच्छी पहचान करता है;
4. एक कन्फ्यूज़न मैट्रिक्स, जिसका उपयोग आप उन विशिष्ट क्लासों को खोजने के लिए कर सकते हैं जिनमें आपका मॉडल अच्छा प्रदर्शन करता है और जिनमें संघर्ष करता है, और;
5. एक इंटरैक्टिव वेक्टर एक्सप्लोरर, जो आपको उन छवियों के क्लस्टर पहचानने देता है जहाँ आपका मॉडल अच्छा या खराब प्रदर्शन करता है;

आप अपने मॉडल के सुधार के क्षेत्रों की पहचान करने के लिए मॉडल मूल्यांकन का उपयोग कर सकते हैं.

भुगतान करने वाले उपयोगकर्ताओं द्वारा Roboflow पर प्रशिक्षित या अपलोड किए गए सभी versioned models के लिए model evaluations स्वतः चलाए जाते हैं। कुछ सौ छवियों वाले डेटासेट के लिए evaluation चलने में कई मिनट लग सकते हैं, और हजारों या उससे अधिक छवियों वाले बड़े डेटासेट के लिए कई घंटे लग सकते हैं.

### समर्थित प्रोजेक्ट प्रकार

मॉडल मूल्यांकन Object Detection, Instance Segmentation, Classification, और Semantic Segmentation प्रोजेक्ट्स का समर्थन करता है.

Semantic Segmentation के लिए, मुख्य मेट्रिक है **mIoU** (mean Intersection-over-Union) mAP के बजाय। सभी मेट्रिक्स (precision, recall, F1) प्रति-इंस्टेंस के बजाय पिक्सेल स्तर पर गणना किए जाते हैं। प्रति-क्लास ब्रेकडाउन प्रत्येक क्लास के लिए IoU, precision, recall, F1, और एक इष्टतम confidence threshold दिखाता है। कन्फ्यूज़न मैट्रिक्स के मान object counts के बजाय pixel counts को दर्शाते हैं.

## वेब ऐप

### मॉडल मूल्यांकन खोलें

अपने मॉडल के लिए कन्फ्यूज़न मैट्रिक्स और वेक्टर एक्सप्लोरर खोजने के लिए, अपने प्रोजेक्ट में कोई भी प्रशिक्षित मॉडल खोलें। फिर, "मूल्यांकन देखें" बटन पर क्लिक करें:

<figure><img src="/files/ca5ae5bb2637bf92972500bb7bf042f906fd8bbd" alt=""><figcaption></figcaption></figure>

एक विंडो खुलेगी जहाँ आप अपना कन्फ्यूज़न मैट्रिक्स और वेक्टर विश्लेषण देख सकते हैं.

### प्रोडक्शन मेट्रिक्स एक्सप्लोरर

प्रोडक्शन मेट्रिक्स एक्सप्लोरर आपके मॉडल के लिए सभी संभावित confidence thresholds पर Precision, Recall, और F1 स्कोर दिखाता है। यह जानकारी एक ग्राफ़ पर प्रस्तुत की जाती है.

इन आँकड़ों का उपयोग करके, प्रोडक्शन मेट्रिक्स एक्सप्लोरर एक "इष्टतम confidence" सुझाएगा। यही वह threshold है जो आपको Precision/Recall/F1 Score का सर्वोत्तम संतुलन देगा.

मॉडल मूल्यांकन पूरा होने के बाद, इष्टतम confidence threshold स्वचालित रूप से आपके मॉडल के inference requests के डिफ़ॉल्ट के रूप में लागू हो जाता है। यदि प्रति-क्लास thresholds उपलब्ध हैं, तो वे भी लागू किए जाते हैं, और किसी भी ऐसी क्लास के लिए जिसके पास अपना मान नहीं है, वैश्विक threshold fallback के रूप में उपयोग किया जाता है.

आप फिर भी किसी भी व्यक्तिगत inference request पर confidence threshold को बदल सकते हैं, इसके लिए `confidence` पैरामीटर को स्पष्ट रूप से पास करें.

<figure><img src="/files/1d20554289fb67f93e3b15891515d33afed6cf5b" alt=""><figcaption></figcaption></figure>

आप स्लाइडर को खींचकर विभिन्न confidence thresholds पर F1/Precision/Recall मान देख सकते हैं:

<figure><img src="/files/98fe85599b0ab9fe259e4f830b7657d604a02db6" alt=""><figcaption></figcaption></figure>

### मॉडल सुधार अनुशंसाएँ

आपके मॉडल मूल्यांकन का मॉडल सुधार अनुशंसाएँ अनुभाग सुझावों की सूची देता है कि आप अपने मॉडल की सटीकता कैसे बढ़ा सकते हैं। ये सुधार आपके मॉडल के साथ गणना किए गए कन्फ्यूज़न मैट्रिक्स के परिणामों पर आधारित हैं। (इस पृष्ठ पर आगे अपने कन्फ्यूज़न मैट्रिक्स के बारे में अधिक जानकारी देखें).

मॉडल सुधार अनुशंसाएँ सुविधा निम्न से संबंधित सुझाव दे सकती है:

* ऐसे मॉडल को कैसे सुधारें जो बहुत अधिक false negatives भविष्यवाणी करता है.
* ऐसे मॉडल को कैसे सुधारें जो बहुत अधिक false positives भविष्यवाणी करता है.
* कौन-सी क्लासें अक्सर भ्रमित (गलत- पहचानी) जाती हैं.
* कौन-सी क्लासों को सटीकता बढ़ाने के लिए अधिक डेटा की आवश्यकता है.
* जब test या validation set बहुत छोटा हो सकता है.
* और भी बहुत कुछ.

<figure><img src="/files/e4560424a6a1da5eb364e1d8981164aec81051a0" alt=""><figcaption></figcaption></figure>

### क्लास के अनुसार प्रदर्शन

क्लास के अनुसार प्रदर्शन चार्ट दिखाता है कि आपके डेटासेट की सभी क्लासों में कितनी सही भविष्यवाणियाँ, गलत वर्गीकरण, false negatives, और false positives हैं.

आप इस जानकारी का उपयोग एक नज़र में यह देखने के लिए कर सकते हैं कि आपका मॉडल किन क्लासों की अच्छी पहचान कर सकता है और किन क्लासों की पहचान करने में आपका मॉडल संघर्ष करता है.

<figure><img src="/files/7bd7b015d014cb9503d32bc254f3d387e226cd9a" alt=""><figcaption></figcaption></figure>

यदि आपके डेटासेट में क्लासों की संख्या बहुत अधिक है, तो आप "All Classes" ड्रॉपडाउन खोलकर और जिन क्लासों को हाइलाइट करना चाहते हैं उन्हें चुनकर चार्ट को विशिष्ट क्लासों पर केंद्रित कर सकते हैं:

<figure><img src="/files/918f085c6a9f396493fd0e8c3344a95b2a21aca3" alt=""><figcaption></figcaption></figure>

आप Confidence Threshold स्लाइडर को हिलाकर भी देख सकते हैं कि यह चार्ट विभिन्न confidence thresholds पर कैसे बदलता है:

<figure><img src="/files/03a79ca88db52513ba411173e61e40d7b7be4e50" alt=""><figcaption></figcaption></figure>

डिफ़ॉल्ट रूप से, यह चार्ट उस इष्टतम confidence threshold का उपयोग करेगा जिसकी हम अनुशंसा करते हैं.

### कन्फ्यूज़न मैट्रिक्स

आपका कन्फ्यूज़न मैट्रिक्स दिखाता है कि आपका मॉडल विभिन्न क्लासों पर कितना अच्छा प्रदर्शन करता है.

आपका कन्फ्यूज़न मैट्रिक्स आपके प्रशिक्षित मॉडल के साथ आपके test और validation sets की छवियाँ चलाकर गणना किया जाता है। फिर आपके मॉडल के परिणामों की तुलना आपके डेटासेट एनोटेशनों के "ग्राउंड ट्रुथ" से की जाती है.

कन्फ्यूज़न मैट्रिक्स टूल के साथ, आप पहचान सकते हैं:

* वे क्लासें जहाँ आपका मॉडल अच्छा प्रदर्शन करता है.
* वे क्लासें जहाँ आपका मॉडल किसी object के लिए गलत क्लास की पहचान करता है (false positives).
* वे उदाहरण जहाँ आपका मॉडल किसी object की पहचान करता है जबकि वास्तव में वहाँ कोई object मौजूद नहीं है (false negatives).

यहाँ एक उदाहरण कन्फ्यूज़न मैट्रिक्स है:

<figure><img src="/files/32b3f5a30013b9f6dab312f2d00273f0ae484921" alt=""><figcaption></figcaption></figure>

यदि आपका मॉडल बहुत सारी क्लासों का पता लगाता है, तो स्क्रॉल बार दिखाई देंगे जो आपको अपने कन्फ्यूज़न मैट्रिक्स में नेविगेट करने देंगे.

डिफ़ॉल्ट रूप से, कन्फ्यूज़न मैट्रिक्स दिखाता है कि आपका मॉडल उस इष्टतम threshold पर चलने पर कैसा प्रदर्शन करता है जिसकी गणना आपके मॉडल के लिए की गई है.

आप Confidence Threshold स्लाइडर का उपयोग करके confidence threshold समायोजित कर सकते हैं। जैसे-जैसे आप स्लाइडर समायोजित करते हैं, आपका कन्फ्यूज़न मैट्रिक्स, precision, और recall अपडेट होंगे:

<figure><img src="/files/922df10b2303ed8d0018a6c7501e509095e5abc0" alt=""><figcaption></figcaption></figure>

आप कन्फ्यूज़न मैट्रिक्स में प्रत्येक बॉक्स पर क्लिक करके देख सकते हैं कि संबंधित श्रेणी में कौन-सी छवियाँ दिखाई देती हैं.

उदाहरण के लिए, आप "False Positive" कॉलम में किसी भी बॉक्स पर क्लिक करके उन छवियों की पहचान कर सकते हैं जहाँ ground truth डेटा में कोई object मौजूद न होने पर भी एक object की पहचान की गई थी.

<figure><img src="/files/c7b176613d3c6042aab33686e38d92157f5bb5ca" alt=""><figcaption></figcaption></figure>

आप किसी व्यक्तिगत छवि पर क्लिक करके एक इंटरैक्टिव दृश्य में प्रवेश कर सकते हैं जहाँ आप ग्राउंड ट्रुथ (आपके एनोटेशन) और मॉडल predictions के बीच टॉगल कर सकते हैं:

<figure><img src="/files/c7bcd2bbe4b5872bb81afff0750d6015b2b41f10" alt=""><figcaption></figcaption></figure>

अपने एनोटेशन देखने के लिए "Ground Truth" पर क्लिक करें और यह देखने के लिए "Model Predictions" पर क्लिक करें कि आपका मॉडल क्या लौटाता है.

## HTTP API

मॉडल मूल्यांकन यह कैप्चर करता है कि कोई मॉडल Version के test split पर कैसा प्रदर्शन करता है - प्रति-क्लास मेट्रिक्स, confidence-threshold curves, image-embedding clustering, प्रति-छवि predictions, और सुधार अनुशंसाएँ। Object detection और instance segmentation के लिए मुख्य मेट्रिक mAP है; semantic segmentation के लिए यह mIoU है। प्रशिक्षण पूरा होने पर evaluations स्वतः उत्पन्न होते हैं और ऐप से मैन्युअल रूप से पुनः-ट्रिगर किए जा सकते हैं.

Model Evaluations API आपको ऐप के evaluation पृष्ठ पर दिखाई देने वाली हर चीज़ पढ़ने देती है। UI का प्रत्येक पैनल एक समर्पित endpoint से मैप होता है:

* [एक वर्कस्पेस में मॉडल मूल्यांकनों की सूची देखें](#list-model-evaluations)
* [किसी एक मूल्यांकन का मेटाडेटा और मुख्य मेट्रिक्स प्राप्त करें](#get-a-model-evaluation)
* [पूर्ण प्रति-स्प्लिट मेट्रिक विवरण (mAP या mIoU) प्राप्त करें](#map-results)
* [confidence-threshold sweep और F1-इष्टतम thresholds प्राप्त करें](#confidence-sweep)
* [एक स्प्लिट के लिए प्रति-क्लास प्रदर्शन प्राप्त करें](#performance-by-class-1)
* [कन्फ्यूज़न मैट्रिक्स प्राप्त करें](#confusion-matrix-1)
* [image-embedding clustering (वेक्टर विश्लेषण) प्राप्त करें](#vector-analysis)
* [प्रति-छवि predictions प्राप्त करें](#per-image-predictions)
* [मॉडल सुधार अनुशंसाएँ प्राप्त करें](#recommendations)

### प्रमाणीकरण

सभी endpoints को `model-eval:read` स्कोप वाले API key की आवश्यकता होती है। इसे क्वेरी पैरामीटर के रूप में या `Bearer` टोकन के रूप में `Authorization` हेडर में पास करें.

### सामान्य त्रुटियाँ

| स्थिति | त्रुटि कोड             | जब                                                                       |
| ------ | ---------------------- | ------------------------------------------------------------------------ |
| `401`  | अप्रमाणित              | API key अनुपलब्ध या अमान्य                                               |
| `404`  | `model_eval_not_found` | मूल्यांकन मौजूद नहीं है या किसी अन्य वर्कस्पेस से संबंधित है             |
| `409`  | `model_eval_not_done`  | मूल्यांकन पूरा नहीं हुआ है; पैनल डेटा अभी उपलब्ध नहीं है                 |
| `400`  | `invalid_confidence`   | `confidence` क्वेरी पैरामीटर में पूर्णांक नहीं है `[0, 100]`             |
| `400`  | `invalid_split`        | `स्प्लिट` क्वेरी पैरामीटर endpoint के लिए अनुमत मानों में से कोई नहीं है |

### मॉडल मूल्यांकन सूचीबद्ध करें

वर्कस्पेस में मॉडल मूल्यांकनों की सूची दिखाएँ। एक संक्षिप्त प्रतिनिधित्व लौटाता है - किसी विशिष्ट मूल्यांकन के मुख्य मेट्रिक्स के लिए, आगे यह उपयोग करें [मॉडल मूल्यांकन प्राप्त करें](#get-a-model-evaluation).

```url
https://api.roboflow.com/:workspace/model-evals
```

```bash
curl "https://api.roboflow.com/my-workspace/model-evals?api_key=$ROBOFLOW_API_KEY&status=done&limit=10"
```

#### क्वेरी पैरामीटर

| पैरामीटर                      | प्रकार   | विवरण                                                                               |
| ----------------------------- | -------- | ----------------------------------------------------------------------------------- |
| `project`                     | स्ट्रिंग | इसके URL slug के आधार पर किसी प्रोजेक्ट को फ़िल्टर करें (जैसे `chess-pieces-fmhpz`) |
| `version` (उपनाम `versionId`) | स्ट्रिंग | किसी विशिष्ट version के लिए फ़िल्टर करें (जैसे `"4"`)                               |
| `model` (उपनाम `modelId`)     | स्ट्रिंग | किसी विशिष्ट model ID के मूल्यांकनों के लिए फ़िल्टर करें                            |
| `status`                      | एनम      | इनमें से एक `running`, `done`, `failed`. अज्ञात मान लौटाते हैं `400`.               |
| `limit`                       | पूर्णांक | पेज आकार; डिफ़ॉल्ट `50`, अधिकतम `200`                                               |

अधिकतम इनमें से एक `project` / `version` / `model` प्रति कॉल सेट किया जा सकता है (सबसे विशिष्ट मान जीतता है: `model` > `version` > `project`). संयोजनों को `400 invalid_filter_combination` के साथ अस्वीकार किया जाता है ताकि स्टोरेज इंडेक्स सीमित रहें.

#### प्रतिक्रिया

```json
{
    "evals": [
        {
            "evalId": "huUF720inUcymARwqAGK",
            "status": "done",
            "project": "chess-pieces-fmhpz",
            "versionId": "4",
            "modelId": null,
            "createdAt": "2026-04-27T20:04:10.904Z"
        }
    ]
}
```

`project` प्रोजेक्ट का URL slug है - वही पहचानकर्ता जिसे REST API URL पथों में उपयोग करती है (`/:workspace/:project/...`). मूल्यांकन UI के लिए डीप-लिंक बनाने हेतु: `https://app.roboflow.com/{workspace}/{project}/evaluation/{versionId}`.

### मॉडल मूल्यांकन प्राप्त करें

उसकी ID से एकल मॉडल मूल्यांकन प्राप्त करें। पूर्ण मूल्यांकनों के लिए प्रतिक्रिया में एक `सारांश` object with main metrics; चल रहे या विफल मूल्यांकन केवल संक्षिप्त संरचना लौटाते हैं। कौन-सा मुख्य मेट्रिक भरा जाएगा यह कार्य प्रकार पर निर्भर करता है - `mAP` डिटेक्शन-प्रकार के कार्यों के लिए, `mIoU` Semantic Segmentation के लिए।

```url
https://api.roboflow.com/:workspace/model-evals/:evalId
```

```bash
curl "https://api.roboflow.com/my-workspace/model-evals/huUF720inUcymARwqAGK?api_key=$ROBOFLOW_API_KEY"
```

#### प्रतिक्रिया (पूर्ण मूल्यांकन)

```json
{
    "evalId": "huUF720inUcymARwqAGK",
    "status": "done",
    "project": "chess-pieces-fmhpz",
    "versionId": "4",
    "modelId": null,
    "createdAt": "2026-04-27T20:04:10.904Z",
    "summary": {
        "mAP": 0.9239650566041828,
        "mIoU": null,
        "precision": 0.85,
        "recall": 0.85
    }
}
```

#### प्रतिक्रिया (चल रहा या विफल)

वही फ़ील्ड्स बिना `सारांश` ब्लॉक के.

```json
{
    "evalId": "fNyWx6PC74rCc18IuZ3M",
    "status": "running",
    "project": "hard-hat-detection",
    "versionId": "1",
    "modelId": null,
    "createdAt": "2026-03-19T21:02:07.918Z"
}
```

#### नोट्स

* `mAP` IoU 0.5 पर mean Average Precision है (`map50`). यह `null` गैर-detection मूल्यांकन कार्यों (जैसे classification, semantic segmentation) के लिए.
* `mIoU` foreground macro mean Intersection-over-Union है। यह केवल semantic segmentation evaluations के लिए भरा जाता है और `null` अन्यथा नहीं.
* `precision` और `recall` टेस्ट स्प्लिट के लिए F1-इष्टतम confidence threshold पर रिपोर्ट किए जाते हैं.
* `evalId` वही पहचानकर्ता है जो हर पैनल प्रतिक्रिया में एम्बेड किया गया है - `modelEvals.get` पेलोड संरचनात्मक रूप से किसी भी पैनल पेलोड का सुपरसेट है, इसलिए एक `सारांश`-विस्तारित `modelEvals.get` और एक `getMapResults` प्रतिक्रिया को उसी क्लाइंट कोड पथ के माध्यम से रेंडर किया जा सकता है.
* `project` प्रोजेक्ट का URL slug है - वही पहचानकर्ता जिसे REST API URL पथों में उपयोग करती है। मूल्यांकन UI के लिए डीप-लिंक बनाने हेतु: `https://app.roboflow.com/{workspace}/{project}/evaluation/{versionId}`. `project` है `null` यदि प्रोजेक्ट हटा दिया गया है.

### मैप परिणाम

मूल्यांकन के लिए प्राथमिक मेट्रिक विवरण लौटाता है। प्रतिक्रिया की संरचना कार्य प्रकार पर निर्भर करती है:

* **Object detection / instance segmentation** - split के अनुसार IoU 0.5 / 0.5-0.95 / 0.75 पर mAP, object size और प्रति क्लास के अनुसार विभाजित.
* **Semantic segmentation** - प्रति split mIoU, precision, recall, F1 (pixel-level), प्रति-क्लास IoU और इष्टतम confidence thresholds के साथ.

The `taskType` फ़ील्ड प्रतिक्रिया में यह संकेत देता है कि किस संरचना की अपेक्षा करनी है: `"object-detection-like"` या `"semantic-segmentation"`.

यह वही डेटा है जिसे ऐप में **metrics per split** पैनल पढ़ता है.

```url
https://api.roboflow.com/:workspace/model-evals/:evalId/map-results
```

```bash
curl "https://api.roboflow.com/my-workspace/model-evals/$EVAL_ID/map-results?api_key=$ROBOFLOW_API_KEY"
```

#### प्रतिक्रिया (object detection / instance segmentation)

```json
{
    "taskType": "object-detection-like",
    "splits": {
        "test": {
            "map50": 0.9239650566041828,
            "map50_95": 0.7555258345429926,
            "map75": 0.9239650566041828,
            "byObjectSize": {
                "small": {
                    "map50": 0.9038189533239035,
                    "map50_95": 0.6478143732740621,
                    "map75": 0.9038189533239035
                },
                "medium": {
                    "map50": 0.9913366336633663,
                    "map50_95": 0.8572608399609195,
                    "map75": 0.9913366336633663
                },
                "large": null
            },
            "perClass": {
                "Car-rims": {
                    "map50": 0.9239650566041828,
                    "map50_95": 0.7555258345429926,
                    "map75": 0.9239650566041828,
                    "byObjectSize": {
                        "small": { "map50": 0.9, "map50_95": 0.65, "map75": 0.85 },
                        "medium": { "map50": 0.99, "map50_95": 0.85, "map75": 0.99 },
                        "large": null
                    }
                }
            }
        },
        "valid": { "...": "वही संरचना" },
        "train": { "...": "वही संरचना" }
    }
}
```

#### प्रतिक्रिया (semantic segmentation)

```json
{
    "taskType": "semantic-segmentation",
    "splits": {
        "test": {
            "miou": 0.816,
            "precision": 0.938,
            "recall": 0.862,
            "f1": 0.898,
            "perClass": [
                {
                    "classID": 3,
                    "className": "multi",
                    "iou": 0.816,
                    "precision": 0.938,
                    "recall": 0.862,
                    "f1": 0.898,
                    "optimalThreshold": 0.0
                }
            ]
        },
        "valid": { "...": "वही संरचना" },
        "train": { "...": "वही संरचना" }
    }
}
```

#### नोट्स

* The `taskType` फ़ील्ड प्रतिक्रिया की संरचना को अलग पहचानता है। split contents को पार्स करने से पहले हमेशा इसे जाँचें.
* **डिटेक्शन:** `map50_95` 0.5 से 0.95 तक 0.05 के चरणों में IoU thresholds पर औसत किया गया mAP है (COCO standard)। Object-size buckets हैं `null` जब split में उस आकार का कोई instance नहीं होता। प्रति-क्लास प्रविष्टियाँ नीचे दिखाई देती हैं `perClass`में, class name के अनुसार कुंजीबद्ध.
* **Semantic segmentation:** सभी मेट्रिक्स foreground classes (background को छोड़कर) पर pixel-level macro means हैं. `miou` mean Intersection-over-Union है. `optimalThreshold` प्रति-क्लास F1-इष्टतम confidence threshold है। का मान `0.0` मान्य है और इसका अर्थ है कि मॉडल argmax पर चरम पर है.

### कॉन्फ़िडेंस स्वीप

प्रति confidence threshold metric curves और प्रति split (और प्रति class) F1-इष्टतम threshold लौटाता है। precision/recall trade-offs को प्लॉट करने और deployment-time threshold चुनने के लिए उपयोगी.

यह वही डेटा है जिसे ऐप में **प्रोडक्शन मेट्रिक्स एक्सप्लोरर** पैनल पढ़ता है.

```url
https://api.roboflow.com/:workspace/model-evals/:evalId/confidence-sweep
```

```bash
curl "https://api.roboflow.com/my-workspace/model-evals/$EVAL_ID/confidence-sweep?api_key=$ROBOFLOW_API_KEY"
```

#### प्रतिक्रिया

```json
{
    "splits": {
        "test": {
            "perThreshold": {
                "0.00": { "precision": 0.02, "recall": 1.0,  "f1": 0.039 },
                "0.20": { "precision": 0.45, "recall": 0.92, "f1": 0.605 },
                "0.37": { "precision": 0.85, "recall": 0.85, "f1": 0.85 },
                "0.50": { "precision": 0.91, "recall": 0.78, "f1": 0.84 }
            },
            "optimalThreshold": 0.37,
            "optimalMetrics": {
                "precision": 0.85,
                "recall": 0.85,
                "f1": 0.85
            },
            "perClass": {
                "Car-rims": {
                    "perThreshold": { "0.37": { "precision": 0.85, "recall": 0.85, "f1": 0.85 } },
                    "optimalThreshold": 0.37,
                    "optimalMetrics": { "precision": 0.85, "recall": 0.85, "f1": 0.85 }
                }
            }
        },
        "valid": { "...": "वही संरचना" },
        "train": { "...": "वही संरचना" }
    }
}
```

#### नोट्स

* `perThreshold` कुंजियाँ confidence thresholds हैं दशमलव स्ट्रिंग्स के रूप में, आमतौर पर हर `0.01` से `0.00` तक `0.99`.
* `optimalThreshold` वह threshold है जो उस split के लिए F1 को अधिकतम करता है.
* किसी split के `perClass` के भीतर प्रति-क्लास प्रविष्टियाँ, नेस्टेड `perClass`.

### क्लास के अनुसार प्रदर्शन

एक split के लिए प्रति-क्लास मुख्य मेट्रिक्स लौटाता है। प्रतिक्रिया की संरचना मूल्यांकन के task type पर निर्भर करती है:

* **Object detection / instance segmentation** - प्रति-क्लास `map50`, `map50_95`, `map75`के साथ-साथ precision, recall, F1, और इष्टतम threshold.
* **Semantic segmentation** - प्रति-क्लास `iou`के साथ-साथ precision, recall, F1, और इष्टतम threshold (pixel-level).

The `taskType` फ़ील्ड प्रतिक्रिया में यह संकेत देता है कि किस संरचना की अपेक्षा करनी है.

यह वही डेटा है जिसे ऐप में **क्लास के अनुसार प्रदर्शन** पैनल पढ़ता है.

```url
https://api.roboflow.com/:workspace/model-evals/:evalId/performance-by-class
```

```bash
curl "https://api.roboflow.com/my-workspace/model-evals/$EVAL_ID/performance-by-class?api_key=$ROBOFLOW_API_KEY&split=test"
```

#### क्वेरी पैरामीटर

| पैरामीटर  | प्रकार | विवरण                                                                                                                                                        |
| --------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `स्प्लिट` | एनम    | इनमें से एक `train`, `valid`, `test`. डिफ़ॉल्ट `test`. `सभी` है **नहीं** valid यहाँ नहीं - प्रति-क्लास मेट्रिक्स को splits के बीच एकत्रित नहीं किया जा सकता. |

#### प्रतिक्रिया (object detection / instance segmentation)

```json
{
    "taskType": "object-detection-like",
    "split": "test",
    "classes": [
        {
            "className": "Car-rims",
            "map50": 0.9239650566041828,
            "map50_95": 0.7555258345429926,
            "map75": 0.9239650566041828,
            "precision": 0.85,
            "recall": 0.85,
            "f1": 0.85,
            "optimalThreshold": 0.37
        },
        {
            "className": "music-note",
            "map50": null,
            "map50_95": null,
            "map75": null,
            "precision": 0,
            "रिकॉल": 0,
            "f1": 0,
            "optimalThreshold": 0.5
        }
    ]
}
```

#### प्रतिक्रिया (semantic segmentation)

```json
{
    "taskType": "semantic-segmentation",
    "split": "test",
    "classes": [
        {
            "classID": 3,
            "className": "multi",
            "iou": 0.816,
            "precision": 0.938,
            "recall": 0.862,
            "f1": 0.898,
            "optimalThreshold": 0.0
        }
    ]
}
```

#### नोट्स

* `taskType` प्रति-श्रेणी फ़ील्ड सेट को अलग करता है। डिटेक्शन श्रेणियों में शामिल हैं `map50`/`map50_95`/`map75`; सेमांटिक सेगमेंटेशन श्रेणियों में शामिल हैं `iou` और `classID` इसके बजाय।
* `optimalThreshold` confidence sweep से प्राप्त प्रति-श्रेणी F1-इष्टतम confidence threshold है।
* `precision`, `recall`, और `f1` उस प्रति-श्रेणी इष्टतम threshold पर रिपोर्ट किए जाते हैं।
* डिटेक्शन के लिए, mAP फ़ील्ड हैं `null` जब split में उस श्रेणी के कोई instances नहीं होते।
* सेमांटिक सेगमेंटेशन के लिए, सभी मेट्रिक्स पिक्सेल-स्तर के होते हैं। एक `optimalThreshold` का `0.0` मान्य है।

### कन्फ्यूज़न मैट्रिक्स

प्रति-छवि भविष्यवाणियों से व्युत्पन्न समेकित confusion matrix लौटाता है। प्रत्येक cell `matrix[actual][predicted]` उन instances की संख्या है जहाँ ground-truth श्रेणी `actual` और मॉडल ने भविष्यवाणी की `predicted`. सेमांटिक सेगमेंटेशन मूल्यांकन के लिए, मान instance counts के बजाय pixel counts को दर्शाते हैं।

यह वही डेटा है जिसे ऐप में **कन्फ्यूजन मैट्रिक्स** पैनल पढ़ता है.

```url
https://api.roboflow.com/:workspace/model-evals/:evalId/confusion-matrix
```

```bash
curl "https://api.roboflow.com/my-workspace/model-evals/$EVAL_ID/confusion-matrix?api_key=$ROBOFLOW_API_KEY&split=test"
```

#### क्वेरी पैरामीटर

| पैरामीटर     | प्रकार   | विवरण                                                                                                |
| ------------ | -------- | ---------------------------------------------------------------------------------------------------- |
| `स्प्लिट`    | एनम      | इनमें से एक `train`, `valid`, `test`, या `सभी`. डिफ़ॉल्ट `test`.                                     |
| `confidence` | पूर्णांक | में Confidence-threshold प्रतिशत `[0, 100]`. डिफ़ॉल्ट रूप से canonical file पर सेट। (आमतौर पर `20`). |

#### प्रतिक्रिया

```json
{
    "split": "test",
    "confidenceThreshold": 0.2,
    "classes": ["Car-rims", "music-note", "background"],
    "matrix": [
        [20,  0, 0],
        [ 0,  0, 0],
        [80,  0, 0]
    ]
}
```

ऊपर दिए गए उदाहरण में, confidence threshold 0.2 पर:

* के सभी 20 instances `Car-rims` सही रूप से वर्गीकृत किए गए (`matrix[0][0] = 20`)
* मॉडल ने 80 false positives उत्पन्न किए - भविष्यवाणी करते हुए `Car-rims` जब वास्तविक श्रेणी थी `background` (`matrix[2][0] = 80`)
* test split में कोई नहीं है `music-note` instances

#### नोट्स

* `confidence` रिपोर्ट के किस अंतर्निहित per-confidence variant को समेकित करना है, यह चुनता है। अलग-अलग thresholds अलग-अलग matrices उत्पन्न करते हैं।
* `split=all` train, valid, और test में raw counts को समेकित करता है।

### वेक्टर विश्लेषण

मूल्यांकन के लिए image-embedding clustering output लौटाता है - UMAP-projected embeddings को HDBSCAN द्वारा clustered किया गया है, प्रति-cluster aggregate metrics के साथ। उन images के समूहों को पहचानने में उपयोगी है जहाँ मॉडल व्यवस्थित रूप से बेहतर या खराब प्रदर्शन करता है।

यह वही डेटा है जिसे ऐप में **vector analysis** पैनल पढ़ता है.

```url
https://api.roboflow.com/:workspace/model-evals/:evalId/vector-analysis
```

```bash
curl "https://api.roboflow.com/my-workspace/model-evals/$EVAL_ID/vector-analysis?api_key=$ROBOFLOW_API_KEY"
```

#### क्वेरी पैरामीटर

| पैरामीटर     | प्रकार   | विवरण                                                                              |
| ------------ | -------- | ---------------------------------------------------------------------------------- |
| `confidence` | पूर्णांक | में Confidence-threshold प्रतिशत `[0, 100]` (डिफ़ॉल्ट रूप से canonical report पर.) |

#### प्रतिक्रिया

```json
{
    "clustering": {
        "method": "hdbscan",
        "nClusters": 54,
        "metrics": {
            "noiseRatio": 0.078125,
            "silhouetteScore": 0.48925095796585083
        },
        "parameters": {
            "min_cluster_size": 2,
            "min_samples": 1,
            "cluster_selection_method": "eom",
            "metric": "euclidean"
        },
        "processingTimeSeconds": 8.36
    },
    "preprocessing": {
        "method": "umap",
        "originalDimensions": 768,
        "targetDimensions": 10,
        "nNeighbors": 30,
        "minDistance": 0.05
    },
    "clusters": [
        {
            "id": -1,
            "numImages": 15,
            "splitDistribution": { "train": 12, "valid": 2, "test": 1 },
            "metrics": {
                "f1Mean": 0.462,
                "f1Std": 0.219,
                "f1Min": 0.129,
                "f1Max": 0.8,
                "precisionMean": 0.330,
                "recallMean": 0.952
            },
            "sampleImages": ["img1.jpg", "img2.jpg"]
        },
        {
            "id": 0,
            "numImages": 3,
            "splitDistribution": { "train": 2, "valid": 1 },
            "metrics": {
                "f1Mean": 0.889,
                "f1Std": 0.157,
                "f1Min": 0.667,
                "f1Max": 1.0,
                "precisionMean": 1.0,
                "recallMean": 0.833
            },
            "sampleImages": ["img3.jpg", "img4.jpg", "img5.jpg"]
        }
    ]
}
```

#### नोट्स

* क्लस्टर आईडी `-1` शोर/अक्लस्टरित bucket (HDBSCAN convention) है - ऐसी images जो किसी भी dense region में फिट नहीं होतीं।
* `precisionMean` और `recallMean` क्लस्टर की सभी images पर औसत किए जाते हैं।
* प्रति-छवि embeddings और cluster assignments इनके माध्यम से उपलब्ध कराए जाते हैं [प्रति-छवि भविष्यवाणियाँ](#per-image-predictions).

### प्रति-छवि भविष्यवाणियाँ

प्रति-छवि भविष्यवाणी रिकॉर्ड लौटाता है - TP/FP/FN counts, प्रति-छवि precision/recall/F1, image की cluster id और 2D embedding, तथा raw confusion entries। पृष्ठांकित।

यह वही डेटा है जिसे ऐप में **प्रति-छवि भविष्यवाणियाँ** पैनल पढ़ता है.

```url
https://api.roboflow.com/:workspace/model-evals/:evalId/image-predictions
```

```bash
curl "https://api.roboflow.com/my-workspace/model-evals/$EVAL_ID/image-predictions?api_key=$ROBOFLOW_API_KEY&split=test&limit=50"
```

#### क्वेरी पैरामीटर

| पैरामीटर     | प्रकार   | विवरण                                                                                                       |
| ------------ | -------- | ----------------------------------------------------------------------------------------------------------- |
| `स्प्लिट`    | एनम      | इनमें से एक `train`, `valid`, `test`, या `सभी`. डिफ़ॉल्ट `सभी`.                                             |
| `confidence` | पूर्णांक | में Confidence-threshold प्रतिशत `[0, 100]` (यह चुनता है कि कौन-सा per-confidence report variant पढ़ना है). |
| `limit`      | पूर्णांक | पेज आकार; डिफ़ॉल्ट `200`, अधिकतम `1000`.                                                                    |
| `offset`     | पूर्णांक | लौटाने से पहले इतने records छोड़ें। डिफ़ॉल्ट `0`.                                                           |

#### प्रतिक्रिया

```json
{
    "split": "test",
    "confidenceThreshold": 0.2,
    "totalImages": 192,
    "offset": 0,
    "limit": 50,
    "images": [
        {
            "imageId": "1QKLCUsfAzFiCIb6YCJj",
            "imageName": "abc.jpg",
            "split": "test",
            "augmentations": 2,
            "cluster": {
                "id": 4,
                "embedding2D": [7.494518280029297, -5.143994331359863]
            },
            "stats": {
                "truePositives": 2,
                "falsePositives": 7,
                "falseNegatives": 0,
                "precision": 0.222,
                "recall": 1.0,
                "f1": 0.364
            },
            "confusion": [
                [0, 0, 2],
                [2, 0, 7]
            ]
        }
    ]
}
```

#### नोट्स

* `imageId` Roboflow का source image id है - अन्य Roboflow APIs के साथ cross-referencing के लिए उपयोगी।
* `confusion` entries हैं `[actualClassIdx, predictedClassIdx, count]` triples; class indices उसी array को संदर्भित करते हैं जैसा [कन्फ्यूज़न मैट्रिक्स](#confusion-matrix-1)'s `classes`.
* `embedding2D` UMAP-projected 2D coordinate है जिसका उपयोग [वेक्टर विश्लेषण](#vector-analysis) plot में किया जाता है।
* अलग-अलग `confidence` values अलग-अलग stats लौटाते हैं - threshold के साथ predictions बदलती हैं। ध्यान दें कि मनमाने `confidence` values केवल उन्हीं thresholds पर सफल होंगे जिन्हें eval pipeline ने materialized किया है; unmaterialized variants लौटाते हैं `404 report_not_found`.
* **पृष्ठांकन लागत**: प्रत्येक पृष्ठ पूरे `model_eval_results.json` file को storage से फिर से पढ़ता है और इसे server-side पर काटता है। बहुत बड़े `image_results` arrays वाले evals के लिए, बड़े `limit` values (तक) `1000`) को कई छोटे पृष्ठों पर प्राथमिकता दें ताकि per-page स्थिर लागत कम हो।

### सिफारिशें

पूर्ण किए गए मूल्यांकन से उत्पन्न model improvement recommendations लौटाता है - class-imbalance warnings, missed-detection patterns, और आपके dataset में क्या जोड़ना है या कैसे retrain करना है, इस बारे में अन्य actionable suggestions।

यह वही डेटा है जिसे ऐप में **मॉडल सुधार सिफारिशें** पैनल पढ़ता है.

यह endpoint **केवल-पढ़ने योग्य**. सिफारिशें training completion के side effect के रूप में (या legacy in-app "Refresh Recommendations" action के माध्यम से) उत्पन्न की जाती हैं। यदि वे अभी तक उत्पन्न नहीं हुई हैं, तो प्रतिक्रिया है `200 {"generated": false}` - ध्यान दें कि यह **नहीं** एक `409 EVAL_NOT_DONE`. मूल्यांकन *है* पूरा हो चुका है; बस इसमें वैकल्पिक recommendations side-output नहीं है। अन्य panel endpoints (`map-results`, `confidence-sweep`, आदि) लौटाते हैं `409 EVAL_NOT_DONE` जब उनका backing data अनुपस्थित हो, क्योंकि वह data मूल्यांकन का अभिन्न हिस्सा है; recommendations नहीं हैं।

```url
https://api.roboflow.com/:workspace/model-evals/:evalId/recommendations
```

```bash
curl "https://api.roboflow.com/my-workspace/model-evals/$EVAL_ID/recommendations?api_key=$ROBOFLOW_API_KEY"
```

#### प्रतिक्रिया (सिफारिशें उपलब्ध हैं)

```json
{
    "generated": true,
    "generatedAt": "2026-04-27T20:05:37.512Z",
    "recommendations": {
        "summary": {
            "confidenceThreshold": 37,
            "split": "test",
            "generatedAt": "2026-04-27T20:05:37.512Z",
            "count": 3,
            "f1": 0.85,
            "precision": 0.85,
            "recall": 0.85
        },
        "items": [
            {
                "id": "56bcd423-38ff-45f9-b3e0-662a71ce44e6",
                "type": "missed_detection",
                "analysis": {
                    "affected_class": "Car-rims",
                    "count": 3
                }
            },
            {
                "id": "150e49a8-3a61-479a-9e18-3eb751494a70",
                "type": "class_imbalance",
                "analysis": {
                    "affected_class": "Car-rims",
                    "current_count": 20,
                    "total_gt_instances": 20,
                    "median_count": 10
                }
            }
        ]
    }
}
```

#### प्रतिक्रिया (अभी तक उत्पन्न नहीं)

```json
{
    "generated": false
}
```

## MCP सर्वर

अपने AI एजेंट को इससे जोड़ें [MCP सर्वर](https://docs.roboflow.com/agents/mcp-server) और यह इन टूल्स से मॉडल के प्रदर्शन की समीक्षा कर सकता है:

<table data-search="false"><thead><tr><th width="290">टूल</th><th>विवरण</th></tr></thead><tbody><tr><td><code>model_evals_list</code></td><td>workspace में model evaluations की सूची बनाएं।</td></tr><tr><td><code>model_evals_get</code></td><td>किसी एक मूल्यांकन का शीर्ष-स्तरीय सारांश प्राप्त करें।</td></tr><tr><td><code>model_evals_get_map_results</code></td><td>प्रति-split mAP परिणाम प्राप्त करें।</td></tr><tr><td><code>model_evals_get_confusion_matrix</code></td><td>कन्फ्यूजन मैट्रिक्स प्राप्त करें।</td></tr><tr><td><code>model_evals_get_performance_by_class</code></td><td>किसी एक split के लिए प्रति-श्रेणी प्रदर्शन मेट्रिक्स प्राप्त करें।</td></tr><tr><td><code>model_evals_get_recommendations</code></td><td>यदि उपलब्ध हों, तो मूल्यांकन के लिए उत्पन्न सिफारिशें प्राप्त करें।</td></tr></tbody></table>
