> 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. एक प्रोडक्शन मेट्रिक्स एक्सप्लोरर, जो आपको अपने मॉडल को चलाने के लिए उपयुक्ततम कॉन्फ़िडेंस थ्रेशहोल्ड खोजने में मदद करता है;
2. मॉडल सुधार सुझाव, जो यह बताते हैं कि आप अपने मॉडल की सटीकता कैसे बढ़ा सकते हैं;
3. क्लास के अनुसार प्रदर्शन, जो दिखाता है कि आपका मॉडल विभिन्न क्लासों की पहचान कितनी अच्छी तरह करता है;
4. एक confusion matrix, जिसका उपयोग आप उन विशिष्ट क्लासों को खोजने के लिए कर सकते हैं जिनमें आपका मॉडल अच्छा करता है और जहाँ उसे कठिनाई होती है, और;
5. एक इंटरैक्टिव वेक्टर एक्सप्लोरर, जो आपको उन इमेज क्लस्टर्स की पहचान करने देता है जहाँ आपका मॉडल अच्छा या खराब प्रदर्शन करता है;

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

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

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

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

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

## वेब ऐप

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

अपने मॉडल के लिए confusion matrix और vector explorer खोजने के लिए, अपने प्रोजेक्ट में किसी भी प्रशिक्षित मॉडल को खोलें। फिर, “मूल्यांकन देखें” बटन पर क्लिक करें:

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

एक विंडो खुलेगी जहाँ आप अपनी confusion matrix और vector analysis देख सकते हैं।

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

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

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

मॉडल मूल्यांकन पूरा होने के बाद, उपयुक्ततम confidence threshold आपके मॉडल के inference requests के लिए स्वचालित रूप से default के रूप में लागू हो जाता है। यदि per-class thresholds उपलब्ध हैं, तो वे भी लागू किए जाते हैं, और किसी भी ऐसी class के लिए जिसका अपना मान नहीं है, global threshold को fallback के रूप में उपयोग किया जाता है।

आप अब भी किसी भी individual inference request पर `confidence` parameter को स्पष्ट रूप से पास करके confidence threshold को override कर सकते हैं।

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

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

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

### मॉडल सुधार सुझाव

आपके मॉडल मूल्यांकन का model improvement recommendations अनुभाग यह सुझाव सूचीबद्ध करता है कि आप अपने मॉडल की सटीकता कैसे बढ़ा सकते हैं। ये सुधार आपके मॉडल के साथ गणना की गई confusion matrix के परिणामों पर आधारित हैं। (इस पेज पर आगे आपकी confusion matrix के बारे में अधिक जानकारी देखें).

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

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

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

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

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

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

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

यदि आपके dataset में classes की संख्या अधिक है, तो आप “सभी क्लास” dropdown खोलकर और जिन classes को आप highlight करना चाहते हैं उन्हें चुनकर चार्ट को विशिष्ट classes पर केंद्रित कर सकते हैं:

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

आप Confidence Threshold slider को हिलाकर यह भी देख सकते हैं कि अलग-अलग confidence thresholds पर यह चार्ट कैसे बदलता है:

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

डिफ़ॉल्ट रूप से, यह चार्ट हमारे द्वारा सुझाए गए उपयुक्ततम confidence threshold का उपयोग करेगा।

### Confusion Matrix

आपकी confusion matrix दिखाती है कि आपका मॉडल विभिन्न classes पर कितना अच्छा प्रदर्शन करता है।

आपकी confusion matrix आपके प्रशिक्षित मॉडल के साथ आपकी test और validation sets की इमेज चलाकर गणना की जाती है। फिर आपके मॉडल के परिणामों की तुलना आपके dataset annotations से प्राप्त “ground truth” से की जाती है।

Confusion matrix टूल के साथ, आप पहचान सकते हैं:

* वे classes जहाँ आपका model अच्छा प्रदर्शन करता है।
* वे classes जहाँ आपका model किसी object के लिए गलत class पहचानता है (false positives)।
* वे instances जहाँ आपका model किसी ऐसे object की पहचान करता है जो मौजूद नहीं है (false negatives)।

यहाँ एक उदाहरण confusion matrix है:

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

यदि आपका model कई classes का पता लगाता है, तो scroll bars दिखाई देंगे जो आपको अपनी confusion matrix में नेविगेट करने देते हैं।

डिफ़ॉल्ट रूप से, confusion matrix यह दिखाती है कि आपका model उस उपयुक्ततम threshold पर चलाने पर कैसा प्रदर्शन करता है, जो आपके model के लिए गणना की गई है।

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

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

आप confusion matrix में प्रत्येक box पर क्लिक करके देख सकते हैं कि संबंधित श्रेणी में कौन-सी इमेज दिखाई देती हैं।

उदाहरण के लिए, आप “False Positive” कॉलम में किसी भी box पर क्लिक करके उन इमेज की पहचान कर सकते हैं जहाँ आपके ground truth data में object मौजूद नहीं था, फिर भी उसकी पहचान हो गई।

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

आप किसी individual image पर क्लिक करके एक interactive view में जा सकते हैं जहाँ आप ground truth (आपके annotations) और model predictions के बीच टॉगल कर सकते हैं:

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

अपने annotations देखने के लिए “Ground Truth” पर क्लिक करें और आपके model ने क्या लौटाया यह देखने के लिए “Model Predictions” पर क्लिक करें।

## HTTP API

एक मॉडल मूल्यांकन यह कैप्चर करता है कि एक Version के test split पर model कैसा प्रदर्शन करता है - per-class metrics, confidence-threshold curves, image-embedding clustering, per-image predictions, और improvement recommendations। Object detection और instance segmentation के लिए मुख्य मीट्रिक mAP है; semantic segmentation के लिए यह mIoU है। Training पूरी होने पर evaluations स्वचालित रूप से उत्पन्न होते हैं और ऐप से मैन्युअल रूप से फिर से ट्रिगर किए जा सकते हैं।

Model Evaluations API आपको वह सब कुछ पढ़ने देती है जो ऐप का evaluation पेज दिखाता है। UI का प्रत्येक panel एक समर्पित endpoint से मैप होता है:

* [वर्कस्पेस में model evaluations की सूची देखें](#list-model-evaluations)
* [एक evaluation के metadata और मुख्य मीट्रिक्स प्राप्त करें](#get-a-model-evaluation)
* [पूर्ण per-split metric विवरण प्राप्त करें (mAP या mIoU)](#map-results)
* [confidence-threshold sweep और F1-optimal thresholds प्राप्त करें](#confidence-sweep)
* [एक split के लिए per-class performance प्राप्त करें](#performance-by-class-1)
* [confusion matrix प्राप्त करें](#confusion-matrix-1)
* [image-embedding clustering (vector analysis) प्राप्त करें](#vector-analysis)
* [per-image predictions प्राप्त करें](#per-image-predictions)
* [मॉडल सुधार सुझाव प्राप्त करें](#recommendations)

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

सभी endpoints के लिए API key के साथ `model-eval:read` scope आवश्यक है। इसे query parameter के रूप में या `Bearer` token के रूप में `Authorization` header में पास करें।

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

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

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

वर्कस्पेस में model evaluations की सूची बनाता है। एक हल्का प्रोजेक्शन लौटाता है - किसी विशिष्ट evaluation के मुख्य मीट्रिक्स के लिए, आगे देखें [एक मॉडल मूल्यांकन प्राप्त करें](#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`                     | string  | किसी project को उसके URL slug द्वारा फ़िल्टर करें (जैसे `chess-pieces-fmhpz`) |
| `version` (alias `versionId`) | string  | किसी विशिष्ट version द्वारा फ़िल्टर करें (जैसे `"4"`)                         |
| `model` (alias `modelId`)     | string  | किसी विशिष्ट model ID के evaluations को फ़िल्टर करें                          |
| `status`                      | enum    | इनमें से एक `running`, `done`, `failed`. अज्ञात मान लौटाते हैं `400`.         |
| `limit`                       | integer | पृष्ठ आकार; डिफ़ॉल्ट `50`, अधिकतम `200`                                       |

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

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

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

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

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

इसके ID द्वारा एक single model evaluation प्राप्त करें। पूर्ण evaluations के लिए response में एक `summary` object शामिल होता है जिसमें मुख्य मीट्रिक्स होते हैं; running या failed evaluations केवल हल्का shape लौटाते हैं। कौन-सा मुख्य मीट्रिक भरा जाएगा यह task type पर निर्भर करता है - `mAP` डिटेक्शन-आकार के tasks के लिए, `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"
```

#### प्रतिक्रिया (पूर्ण evaluation)

```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
    }
}
```

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

वही फ़ील्ड्स बिना `summary` block के।

```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` गैर-डिटेक्शन मूल्यांकन कार्यों के लिए होता है (जैसे वर्गीकरण, semantic segmentation)।
* `mIoU` foreground macro mean Intersection-over-Union है। यह केवल semantic segmentation evaluations के लिए भरा जाता है और `null` अन्यथा null होता है।
* `precision` और `recall` test split के लिए F1-optimal confidence threshold पर रिपोर्ट किए जाते हैं।
* `evalId` वही पहचानकर्ता है जो हर panel response में अंतर्निहित होता है - `modelEvals.get` payload संरचनात्मक रूप से किसी भी panel payload का superset है, इसलिए एक `summary`-augmented `modelEvals.get` और एक `getMapResults` response को उसी client code path के माध्यम से render किया जा सकता है।
* `project` project का URL slug है - वही पहचानकर्ता जिसे REST API URL paths में उपयोग करता है। evaluation UI के लिए deep-link बनाने के लिए: `https://app.roboflow.com/{workspace}/{project}/evaluation/{versionId}`. `project` है `null` यदि project को delete कर दिया गया है।

### Map Results

evaluation के लिए प्राथमिक मीट्रिक विवरण लौटाता है। response का आकार task type पर निर्भर करता है:

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

response का `taskType` फ़ील्ड यह दर्शाता है कि किस प्रकार का shape अपेक्षित है: `"object-detection-like"` या `"semantic-segmentation"`.

यह वह डेटा है जिसे ऐप का **metrics per split** panel पढ़ता है।

```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": { "...": "same shape" },
        "train": { "...": "same shape" }
    }
}
```

#### प्रतिक्रिया (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": { "...": "same shape" },
        "train": { "...": "same shape" }
    }
}
```

#### नोट्स

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

### Confidence Sweep

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

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

```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": { "...": "same shape" },
        "train": { "...": "same shape" }
    }
}
```

#### नोट्स

* `perThreshold` कुंजियाँ confidence thresholds हैं, decimal strings के रूप में, आमतौर पर हर `0.01` से `0.00` तक `0.99`.
* `optimalThreshold` वह threshold है जो उस split के लिए F1 को अधिकतम करता है।
* split के भीतर per-class entries `perClass` का आकार समान होता है, केवल nested `perClass`.

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

एक split के लिए per-class मुख्य मीट्रिक्स लौटाता है। response का आकार evaluation के task type पर निर्भर करता है:

* **Object detection / instance segmentation** - प्रति-class `map50`, `map50_95`, `map75`, precision, recall, F1, और उपयुक्ततम threshold।
* **Semantic segmentation** - प्रति-class `iou`, precision, recall, F1, और उपयुक्ततम threshold (pixel-level)।

response का `taskType` response का फ़ील्ड यह दर्शाता है कि किस प्रकार का shape अपेक्षित है।

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

```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"
```

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

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

#### प्रतिक्रिया (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,
            "एफ1": 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 में उस वर्ग का कोई instance नहीं होता।
* सेमांटिक सेगमेंटेशन के लिए, सभी मेट्रिक्स पिक्सेल-स्तर के होते हैं। एक `optimalThreshold` का `0.0` मान्य है।

### Confusion Matrix

प्रति-छवि predictions से प्राप्त समेकित confusion matrix लौटाता है। प्रत्येक cell `matrix[वास्तविक][अनुमानित]` उन instances की संख्या है जहाँ ground-truth class `वास्तविक` और मॉडल ने `अनुमानित`. सेमांटिक segmentation evaluations के लिए, values instance counts के बजाय pixel counts को दर्शाती हैं।

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

```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"
```

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

| पैरामीटर     | प्रकार  | विवरण                                                                                            |
| ------------ | ------- | ------------------------------------------------------------------------------------------------ |
| `split`      | enum    | इनमें से एक `train`, `valid`, `test`, या `all`. डिफ़ॉल्ट `test`.                                 |
| `confidence` | integer | में 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 उत्पन्न किए - predicting `Car-rims` जब actual class `background` (`matrix[2][0] = 80`)
* test split में कोई `music-note` instances

#### नोट्स

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

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

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

यह वह डेटा है जिसे ऐप का **वेक्टर विश्लेषण** panel पढ़ता है।

```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` | integer | में 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` यह noise/unclustered bucket (HDBSCAN convention) है - ऐसी छवियाँ जो किसी dense region में फिट नहीं होतीं।
* `precisionMean` और `recallMean` क्लस्टर की सभी छवियों पर औसत लिए जाते हैं।
* प्रति-छवि embeddings और cluster assignments के माध्यम से उपलब्ध कराए जाते हैं [प्रति-छवि पूर्वानुमान](#per-image-predictions).

### प्रति-छवि पूर्वानुमान

प्रति-छवि prediction records लौटाता है - TP/FP/FN counts, प्रति-छवि precision/recall/F1, छवि का cluster id और 2D embedding, तथा raw confusion entries। Paginated.

यह वह डेटा है जिसे ऐप का **प्रति-छवि पूर्वानुमान** panel पढ़ता है।

```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"
```

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

| पैरामीटर     | प्रकार  | विवरण                                                                                                          |
| ------------ | ------- | -------------------------------------------------------------------------------------------------------------- |
| `split`      | enum    | इनमें से एक `train`, `valid`, `test`, या `all`. डिफ़ॉल्ट `all`.                                                |
| `confidence` | integer | में Confidence-threshold प्रतिशत `[0, 100]` (यह चुनता है कि per-confidence report का कौन-सा variant पढ़ना है)। |
| `limit`      | integer | पृष्ठ आकार; डिफ़ॉल्ट `200`, अधिकतम `1000`.                                                                     |
| `offset`     | integer | लौटाने से पहले इतने 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` प्रविष्टियाँ होती हैं `[actualClassIdx, predictedClassIdx, count]` त्रिक; class indices उसी array को संदर्भित करते हैं जैसा [Confusion Matrix](#confusion-matrix-1)का `classes`.
* `embedding2D` वह UMAP-projected 2D coordinate है जिसका उपयोग [वेक्टर विश्लेषण](#vector-analysis) plot में किया जाता है।
* विभिन्न `confidence` मान अलग-अलग stats लौटाते हैं - predictions threshold के साथ बदलते हैं। ध्यान दें कि मनमाने `confidence` मान केवल उन thresholds के लिए सफल होंगे जिन्हें eval pipeline ने materialized किया है; unmaterialized variants लौटाते हैं `404 report_not_found`.
* **पृष्ठांकन लागत**: प्रत्येक पृष्ठ पूरी `model_eval_results.json` फ़ाइल को storage से फिर पढ़ता है और server-side पर slice करता है। बहुत बड़े `image_results` arrays के लिए, बड़े `limit` मानों (तक `1000`) को कई छोटे पृष्ठों के बजाय प्राथमिकता दें ताकि प्रति-पृष्ठ fixed cost कम हो सके।

### अनुशंसाएँ

पूर्ण मूल्यांकन से उत्पन्न मॉडल सुधार अनुशंसाएँ लौटाता है - class-imbalance चेतावनियाँ, missed-detection पैटर्न, और आपके dataset में क्या जोड़ना है या कैसे retrain करना है, इस बारे में अन्य actionable सुझाव।

यह वह डेटा है जिसे ऐप का **मॉडल सुधार अनुशंसाएँ** panel पढ़ता है।

यह endpoint **केवल-पठन**. अनुशंसाएँ training completion के साइड इफ़ेक्ट के रूप में (या legacy in-app "Refresh Recommendations" action के माध्यम से) उत्पन्न होती हैं। यदि वे अभी तक उत्पन्न नहीं हुई हैं, तो प्रतिक्रिया है `200 {"generated": false}` - ध्यान दें कि यह है **यहाँ मान्य नहीं है - per-class metrics splits के बीच aggregate नहीं किए जा सकते।** एक `409 EVAL_NOT_DONE`. मूल्यांकन *है* पूर्ण हो चुका है; इसमें बस वैकल्पिक recommendations side-output नहीं है। अन्य panel endpoints (`map-results`, `confidence-sweep`, आदि) लौटाते हैं `409 EVAL_NOT_DONE` जब उनका backing data अनुपलब्ध हो, क्योंकि वह data evaluation का अभिन्न हिस्सा है; 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
}
```
