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

# 学習済みモデルを評価

## 概要

モデル評価では次のことがわかります:

1. 本番メトリクスエクスプローラー。モデルを実行する最適な信頼度しきい値を見つけるのに役立ちます。
2. モデル改善の推奨事項。モデルの精度を高める方法を提案します。
3. クラス別の性能。モデルがさまざまなクラスをどの程度うまく識別できるかを示します。
4. 混同行列。モデルが得意なクラスや苦手なクラスを見つけるのに使えます。
5. インタラクティブなベクトルエクスプローラー。モデルがうまくいく画像やうまくいかない画像のクラスタを特定できます。

モデル評価を使うと、モデルの改善点を特定できます。

モデル評価は、有料ユーザーによって Roboflow に学習済みとしてアップロードされた、または Roboflow で学習されたすべてのバージョン管理済みモデルに対して自動的に実行されます。数百枚の画像のデータセットでは評価の実行に数分かかる場合があり、数千枚以上の大規模データセットでは数時間かかることがあります。

### 対応プロジェクトタイプ

モデル評価は、Object Detection、Instance Segmentation、Classification、Semantic Segmentation の各プロジェクトをサポートしています。

Semantic Segmentation では、主要指標は **mIoU** （mean Intersection-over-Union）で、mAP ではありません。すべての指標（precision、recall、F1）は、インスタンスごとではなくピクセル単位で計算されます。クラス別の内訳には、各クラスの IoU、precision、recall、F1、および最適な信頼度しきい値が表示されます。混同行列の値は、オブジェクト数ではなくピクセル数を表します。

## Webアプリ

### モデル評価を開く

モデルの混同行列とベクトルエクスプローラーを見つけるには、プロジェクト内の任意の学習済みモデルを開きます。次に、"View Evaluation" ボタンをクリックします:

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

ウィンドウが開き、混同行列とベクトル分析を表示できます。

### 本番メトリクスエクスプローラー

本番メトリクスエクスプローラーでは、考えられるすべての信頼度しきい値におけるモデルの Precision、Recall、F1 スコアを表示します。この情報はグラフで示されます。

これらの統計をもとに、本番メトリクスエクスプローラーは「最適な信頼度」を推奨します。これは、Precision/Recall/F1 スコアのトレードオフが最も良くなるしきい値です。

モデル評価が完了すると、最適な信頼度しきい値がモデルの推論リクエストのデフォルトとして自動的に適用されます。クラス別しきい値が利用可能な場合は、それも適用され、グローバルしきい値は独自の値を持たないクラスのフォールバックとして使用されます。

なお、個別の推論リクエストでは、 `confidence` パラメータを明示的に渡すことで、信頼度しきい値を上書きできます。

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

スライダーをドラッグすると、異なる信頼度しきい値での F1/Precision/Recall の値を確認できます:

<figure><img src="/files/2afef2d62668af6b5cd7b496668a6ebb6137d548" alt=""><figcaption></figcaption></figure>

### モデル改善の推奨事項

モデル評価の「モデル改善の推奨事項」セクションには、モデルの精度を高める方法に関する提案が一覧表示されます。これらの改善提案は、モデルで計算された混同行列の結果に基づいています。（混同行列の詳細については、このページの後半を参照してください）。

モデル改善の推奨事項機能では、次のような提案が可能です:

* 多くの偽陰性を予測するモデルを改善する方法。
* 多くの偽陽性を予測するモデルを改善する方法。
* どのクラスがよく混同されるか（誤識別されるか）。
* どのクラスに精度向上のためにより多くのデータが必要か。
* テストセットまたは検証セットが小さすぎる可能性がある場合。
* その他。

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

### クラス別の性能

クラス別の性能チャートでは、データセット内のすべてのクラスにわたる正しい予測、誤分類、偽陰性、偽陽性の数を示します。

この情報を使うと、モデルがどのクラスをよく識別でき、どのクラスの識別が苦手かを一目で確認できます。

<figure><img src="/files/642f0c647abb415d3add0dbb90268e3308febbf2" alt=""><figcaption></figcaption></figure>

データセットに多くのクラスがある場合は、「All Classes」ドロップダウンを開いて強調表示したいクラスを選ぶことで、チャートを特定のクラスに絞り込めます:

<figure><img src="/files/83d4525282e6c738f151262b793de1a5a3ffc4d2" alt=""><figcaption></figcaption></figure>

Confidence Threshold スライダーを動かすと、このチャートが異なる信頼度しきい値でどう変わるかも確認できます:

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

デフォルトでは、このチャートには推奨される最適な信頼度しきい値が使用されます。

### 混同行列

混同行列は、モデルがさまざまなクラスでどの程度うまく機能するかを示します。

混同行列は、学習済みモデルを使ってテストセットと検証セットの画像を実行することで計算されます。その後、モデルの結果はデータセットのアノテーションにある「ground truth」と比較されます。

混同行列ツールを使うと、次のことを特定できます:

* モデルがうまく機能するクラス。
* モデルがオブジェクトに対して誤ったクラスを識別するクラス（偽陽性）。
* モデルが、実際には存在しないオブジェクトを識別してしまうケース（偽陰性）。

以下は混同行列の例です:

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

モデルが多くのクラスを検出する場合、スクロールバーが表示され、混同行列を移動できます。

デフォルトでは、混同行列にはモデルに対して計算された最適なしきい値で実行したときの性能が表示されます。

Confidence Threshold スライダーを使って信頼度しきい値を調整できます。スライダーを変更すると、混同行列、precision、recall が更新されます:

<figure><img src="/files/67671127a7935ba92190b25c6e03849ea8a6bb25" alt=""><figcaption></figcaption></figure>

混同行列の各ボックスをクリックすると、対応するカテゴリにどの画像が含まれるかを確認できます。

たとえば、「False Positive」列の任意のボックスをクリックすると、ground truth データには存在しないオブジェクトが識別された画像を特定できます。

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

個々の画像をクリックすると、ground truth（アノテーション）とモデル予測を切り替えられるインタラクティブ表示に入ります:

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

"Ground Truth" をクリックするとアノテーションを、"Model Predictions" をクリックするとモデルの出力を表示できます。

## HTTP API

モデル評価は、Version のテスト分割におけるモデルの性能を把握するものです。クラス別指標、信頼度しきい値の曲線、画像埋め込みのクラスタリング、画像ごとの予測、および改善提案が含まれます。Object Detection と Instance Segmentation では主要指標は mAP、Semantic Segmentation では mIoU です。評価は学習完了時に自動生成され、アプリから手動で再実行することもできます。

Model Evaluations API を使うと、アプリの評価ページに表示される内容をすべて読み取れます。UI の各パネルは専用エンドポイントに対応しています:

* [ワークスペース内のモデル評価の一覧を取得](#list-model-evaluations)
* [1件の評価のメタデータと主要指標を取得](#get-a-model-evaluation)
* [スプリットごとの詳細な指標をすべて取得（mAP または mIoU）](#map-results)
* [信頼度しきい値のスイープと F1 最適しきい値を取得](#confidence-sweep)
* [1つのスプリットのクラス別性能を取得](#performance-by-class-1)
* [混同行列を取得](#confusion-matrix-1)
* [画像埋め込みのクラスタリング（ベクトル分析）を取得](#vector-analysis)
* [画像ごとの予測を取得](#per-image-predictions)
* [モデル改善の推奨事項を取得](#recommendations)

### 認証

すべてのエンドポイントには、 `model-eval:read` スコープを持つ API キーが必要です。クエリパラメータとして、または `Bearer` トークンとして `Authorization` ヘッダーに渡してください。

### よくあるエラー

| ステータス | エラーコード                 | 条件                                              |
| ----- | ---------------------- | ----------------------------------------------- |
| `401` | 未認証                    | API キーがないか無効です                                  |
| `404` | `model_eval_not_found` | 評価が存在しないか、別のワークスペースに属しています                      |
| `409` | `model_eval_not_done`  | 評価が完了していません。パネルデータはまだ利用できません                    |
| `400` | `invalid_confidence`   | `confidence` クエリパラメータが整数ではありません `[0, 100]`      |
| `400` | `invalid_split`        | `split` クエリパラメータが、このエンドポイントで許可されている値のいずれでもありません |

### モデル評価の一覧

ワークスペース内のモデル評価を一覧表示します。軽量なプロジェクションを返します。特定の評価の主要指標については、次を参照してください [モデル評価を取得](#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 スラッグでプロジェクトを絞り込みます（例: `chess-pieces-fmhpz`) |
| `version` （別名 `versionId`) | 文字列 | 特定のバージョンに絞り込みます（例: `"4"`)                       |
| `model` （別名 `modelId`)     | 文字列 | 特定のモデル ID の評価に絞り込みます                            |
| `status`                   | 列挙型 | 次のいずれか `running`, `done`, `failed`。不明な値は `400`. |
| `limit`                    | 整数  | ページサイズ。デフォルト `50`、最大 `200`                      |

次のうち最大1つまで `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 スラッグであり、REST API が URL パスで使用するのと同じ識別子です（`/:workspace/:project/...`）。評価 UI へディープリンクするには: `https://app.roboflow.com/{workspace}/{project}/evaluation/{versionId}`.

### モデル評価を取得

ID を指定して単一のモデル評価を取得します。完了した評価では、レスポンスに `summary` オブジェクトが含まれ、主要指標が返されます。実行中または失敗した評価では、軽量な形のみが返されます。どの主要指標が入るかはタスクタイプによって異なります - `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
    }
}
```

#### レスポンス（実行中または失敗）

同じフィールドですが、 `summary` ブロックは含まれません。

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

#### 注記

* `mAP` は IoU 0.5 における平均適合率（`map50`）です。これは `null` で、検出以外の評価タスク（例: 分類、Semantic Segmentation）では
* `mIoU` は前景のマクロ平均 Intersection-over-Union です。これは Semantic Segmentation の評価でのみ設定され、 `null` それ以外では
* `precision` と `recall` は、テスト分割に対する F1 最適信頼度しきい値で報告されます。
* `evalId` は、各パネルのレスポンスに埋め込まれているのと同じ識別子です - `modelEvals.get` payload は構造的には任意のパネル payload のスーパーセットなので、 `summary`で拡張された `modelEvals.get` ものと `getMapResults` のレスポンスは、同じクライアントコードパスでレンダリングできます。
* `project` はプロジェクトの URL スラッグであり、REST API が URL パスで使用するのと同じ識別子です。評価 UI へディープリンクするには: `https://app.roboflow.com/{workspace}/{project}/evaluation/{versionId}`. `project` は `null` プロジェクトが削除されている場合です。

### Map Results

評価の主要指標の詳細を返します。レスポンスの形はタスクタイプによって異なります:

* **Object detection / instance segmentation** - IoU 0.5 / 0.5-0.95 / 0.75 における mAP を、オブジェクトサイズ別およびクラス別に分解して返します。
* **Semantic segmentation** - スプリットごとの mIoU、precision、recall、F1（ピクセルレベル）に加え、クラス別 IoU と最適信頼度しきい値を返します。

レスポンスの `taskType` フィールドは、どの形を期待すべきかを示します: `"object-detection-like"` または `"semantic-segmentation"`.

これはアプリの **スプリットごとのメトリクス** パネルが読み取るデータです。

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

#### 注記

* レスポンスの `taskType` フィールドはレスポンスの形を判別します。スプリット内容を解析する前に必ず確認してください。
* **検出:** `map50_95` は、IoU しきい値 0.5 から 0.95 までを 0.05 刻みで平均した mAP です（COCO 標準）。オブジェクトサイズのバケットは `null` そのサイズのインスタンスがスプリットに含まれていない場合は `perClass`の下にクラス名をキーとして表示されます。
* **Semantic segmentation:** すべての指標は、前景クラスに対するピクセルレベルのマクロ平均です（背景は除外）。 `miou` は mean Intersection-over-Union です。 `optimalThreshold` はクラスごとの F1 最適信頼度しきい値です。値 `0.0` は有効であり、モデルが argmax でピークになることを意味します。

### 信頼度スイープ

スプリットごと（およびクラスごと）の信頼度しきい値別の指標曲線と F1 最適しきい値を返します。precision/recall のトレードオフを描画したり、デプロイ時のしきい値を選んだりするのに役立ちます。

これはアプリの **本番メトリクスエクスプローラー** パネルが読み取るデータです。

```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` のキーは、10進文字列で表された信頼度しきい値で、通常は `0.01` ごとに `0.00` から `0.99`.
* `optimalThreshold` が、そのスプリットで F1 を最大化するしきい値です。
* スプリット内の `perClass` のクラス別エントリは、入れ子の `perClass`.

### クラス別の性能

を除いて同じ形を持ちます。

* **Object detection / instance segmentation** クラス別 `map50`, `map50_95`, `map75`、precision、recall、F1、および最適なしきい値を返します。
* **Semantic segmentation** クラス別 `iou`、precision、recall、F1、および最適なしきい値（ピクセルレベル）を返します。

レスポンスの `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"
```

#### クエリパラメータ

| パラメータ   | 型   | 説明                                                                                               |
| ------- | --- | ------------------------------------------------------------------------------------------------ |
| `split` | 列挙型 | 次のいずれか `train`, `valid`, `test`。デフォルト `test`. `all` は **はここでは** 有効ではありません。クラス別指標はスプリット間で集約できません。 |

#### レスポンス（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,
            "recall": 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` と `クラスID` の代わりに。
* `optimalThreshold` は、confidence sweep から得られるクラスごとのF1最適信頼度しきい値です。
* `precision`, `recall`、および `F1` は、そのクラスごとの最適しきい値で報告されます。
* 検出では、mAPフィールドは `null` その分割にそのクラスのインスタンスが存在しない場合。
* セマンティックセグメンテーションでは、すべての指標がピクセル単位です。 `optimalThreshold` の `0.0` は有効です。

### 混同行列

画像ごとの予測から導出された集計済み混同行列を返します。各セル `matrix[actual][predicted]` は、正解クラスが `実際` であり、モデルが `予測`したインスタンス数を表します。セマンティックセグメンテーションの評価では、値はインスタンス数ではなくピクセル数を表します。

これはアプリの **混同行列** パネルが読み取るデータです。

```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`      | 列挙型 | 次のいずれか `train`, `valid`, `test`、または `all`。デフォルト `test`. |
| `confidence` | 整数  | Confidenceしきい値の割合 `[0, 100]`。既定では正規ファイル（通常は `20`).      |

#### レスポンス

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

上の例では、信頼度しきい値0.2で:

* の20件すべてが `Car-rims` 正しく分類されました（`matrix[0][0] = 20`)
* モデルは80件の偽陽性を生成しました。つまり、 `Car-rims` 実際のクラスが `background` (`matrix[2][0] = 80`)
* テスト分割には `music-note` のインスタンスはありません。

#### 注記

* `confidence` レポートのどの信頼度ごとの派生版を集計するかを選択します。しきい値が異なると、異なる行列になります。
* `split=all` train、valid、test 全体の生カウントを集計します。

### ベクトル分析

評価の画像埋め込みクラスタリング結果を返します。UMAPで射影した埋め込みをHDBSCANでクラスタリングし、クラスタごとの集計指標を含みます。モデルの性能が体系的に良い、または悪い画像群を見つけるのに役立ちます。

これはアプリの **ベクトル分析** パネルが読み取るデータです。

```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しきい値の割合 `[0, 100]` （既定では正規レポート）。 |

#### レスポンス

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

#### 注記

* クラスタID `-1` はノイズ/未クラスタ化バケット（HDBSCANの慣例）です。- どの密な領域にも当てはまらない画像。
* `平均適合率` と `平均再現率` はクラスタ内のすべての画像で平均化されます。
* 画像ごとの埋め込みとクラスタ割り当ては、次を通じて公開されます： [画像ごとの予測](#per-image-predictions).

### 画像ごとの予測

画像ごとの予測レコードを返します。TP/FP/FNの件数、画像ごとのprecision/recall/F1、画像のクラスタIDと2D埋め込み、そして生の混同行エントリを含みます。ページ分割あり。

これはアプリの **画像ごとの予測** パネルが読み取るデータです。

```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`      | 列挙型 | 次のいずれか `train`, `valid`, `test`、または `all`。デフォルト `all`.  |
| `confidence` | 整数  | Confidenceしきい値の割合 `[0, 100]` （読み取る信頼度ごとのレポート派生版を選択します）。 |
| `limit`      | 整数  | ページサイズ。デフォルト `200`、最大 `1000`.                           |
| `offset`     | 整数  | 返却前にこの件数のレコードをスキップします。既定 `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]
            ]
        }
    ]
}
```

#### 注記

* `画像ID` はRoboflowの元画像IDです。- 他のRoboflow APIとの照合に便利です。
* `混同行` エントリは `[actualClassIdx, predictedClassIdx, count]` のタプルです。クラスインデックスは、次と同じ配列を参照します： [混同行列](#confusion-matrix-1)の `クラス`.
* `2D埋め込み` は、次で使用されるUMAPで射影された2D座標です： [ベクトル分析](#vector-analysis) プロット。
* 異なる `confidence` 値を返すと、異なる統計が得られます。予測はしきい値に応じて変化します。任意の `confidence` 値の照会が成功するのは、評価パイプラインが生成済みのしきい値に限られます。未生成の派生版は `404 report_not_found`.
* **ページネーションのコスト**：各ページで完全な `model_eval_results.json` ファイルをストレージから再読み込みし、サーバー側でスライスします。非常に大きな `image_results` 配列を含むevalでは、より大きな `limit` 値（最大 `1000`）を、多数の小さなページより優先して、ページごとの固定コストを最小化してください。

### 推奨事項

完了した評価から生成されたモデル改善の推奨事項を返します。- クラス不均衡の警告、検出漏れのパターン、データセットに追加すべき内容や再学習方法に関するその他の実行可能な提案を含みます。

これはアプリの **モデル改善の推奨事項** パネルが読み取るデータです。

このエンドポイントは **読み取り専用です**。推奨事項は、学習完了の副作用として（または従来のアプリ内「推奨事項を更新」アクション経由で）生成されます。まだ生成されていない場合、レスポンスは `200 {"generated": false}` - ただし、これは **はここでは** a `409 EVAL_NOT_DONE`。評価は *は* 完了しています。ただし、オプションの推奨事項のサイド出力がないだけです。その他のパネルエンドポイント（`map-results`, `confidence-sweep`、など）は `409 EVAL_NOT_DONE` その基盤データが欠落している場合に返されます。なぜなら、そのデータは評価に不可欠だからです。推奨事項はそうではありません。

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