> 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).

# 学習済みモデルを評価

Model Evaluation を使って、テストデータセット上でのモデルの性能を確認します。

## 概要

モデル評価では次が表示されます:

1. 本番メトリクス エクスプローラー。モデルを実行する最適な信頼度しきい値を見つけるのに役立ちます;
2. モデル改善の推奨事項。モデルの精度を向上させる方法を提案します;
3. クラス別パフォーマンス。モデルがさまざまなクラスをどれだけ正確に識別できるかを示します;
4. 混同行列。モデルが得意なクラスと苦手なクラスを見つけるのに使用できます。および;
5. モデルがうまく機能する画像や不調な画像のクラスタを特定できる対話型ベクター エクスプローラー;

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

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

### 推論向けに最適化中

学習後、Roboflow はモデルを Serverless Cloud API が提供するパッケージにコンパイルします。処理中はモデルに「推論向けに最適化中」と表示され、評価は完了を待ちます。これにより、評価は推論リクエストを提供するのと同じパッケージを測定します。コンパイルには通常数分追加でかかります。失敗した場合、または 24 時間を超えても完了しない場合でも、評価はそのまま開始されます。

### サポートされるプロジェクトタイプ

モデル評価は、物体検出、インスタンスセグメンテーション、分類、セマンティック セグメンテーションのプロジェクトをサポートします。

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

## Web アプリ

### モデル評価を開く

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

<figure><img src="https://1194881119-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcmo9mhfIjYrvFFy1U7dk%2Fuploads%2Fgit-blob-8c6db60420e1905df8d6f3c824f91f0f219e8a76%2FScreenshot%202025-05-14%20at%2014.41.23.png?alt=media" alt=""><figcaption></figcaption></figure>

ウィンドウが開き、混同行列とベクター分析を確認できます。

### 中央値レイテンシ

評価では、Serverless Cloud API がテスト画像上で 1 リクエストに応答するのにかかる中央値時間を表示します。この値には前処理と後処理の時間が含まれます。ネットワーク時間は含まれません。モデル一覧とモデルカードには同じ値が「Latency (Cloud API)」として表示されます。A からのレイテンシは [Neural Architecture Search](/models/ja/xue-xi/neural-architecture-search.md) ベンチマークでは別の方法で測定されるため、2 つを比較しないでください。

テスト画像の画素数がモデル入力の少なくとも 2 倍ある場合、評価にはキャプチャ解像度に関する推奨が追加されます。サーバーはモデルを実行する前にすべての画像をデコードしてリサイズするため、長辺がモデル入力に近いフレームほど応答が速くなります。

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

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

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

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

個々の推論リクエストで信頼度しきい値を上書きすることもできます。その場合は `confidence` パラメータを明示的に渡します。

<figure><img src="https://1194881119-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcmo9mhfIjYrvFFy1U7dk%2Fuploads%2Fgit-blob-cf7be3e1155f28ab47c87709fe072e767b536898%2FScreenshot%202025-07-23%20at%2011.15.02.png?alt=media" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://1194881119-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcmo9mhfIjYrvFFy1U7dk%2Fuploads%2Fgit-blob-c0f91bfa945e226cba1bdb659ef70c507779add8%2FScreenshot%202025-07-23%20at%2011.15.39.png?alt=media" alt=""><figcaption></figcaption></figure>

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

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

モデル改善の推奨事項機能では、次のような内容に関する提案ができます:

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

<figure><img src="https://1194881119-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcmo9mhfIjYrvFFy1U7dk%2Fuploads%2Fgit-blob-cb54b251f5e115f9a1eb549b0c03117d5b263b3b%2FScreenshot%202025-07-23%20at%2011.17.09.png?alt=media" alt=""><figcaption></figcaption></figure>

### クラス別パフォーマンス

クラス別パフォーマンスのチャートには、データセット内のすべてのクラスにおける正しい予測、誤分類、偽陰性、偽陽性の数が表示されます。

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

<figure><img src="https://1194881119-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcmo9mhfIjYrvFFy1U7dk%2Fuploads%2Fgit-blob-ffaf491bbb2d955905c575d90aeb04a4fd94f257%2FScreenshot%202025-07-23%20at%2011.18.34.png?alt=media" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://1194881119-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcmo9mhfIjYrvFFy1U7dk%2Fuploads%2Fgit-blob-9656c52d9fc2be6f7da56bcd9bd4f2538677dba3%2FScreenshot%202025-07-23%20at%2011.19.30.png?alt=media" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://1194881119-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcmo9mhfIjYrvFFy1U7dk%2Fuploads%2Fgit-blob-443ab7ce57aba56477ab17435cb9f27f622fe7c1%2FScreenshot%202025-07-23%20at%2011.20.12.png?alt=media" alt=""><figcaption></figcaption></figure>

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

### 混同行列

混同行列では、モデルが各クラスでどれだけうまく機能しているかが表示されます。

混同行列は、学習済みモデルでテストセットと検証セットの画像を実行して算出されます。その後、モデルの結果はデータセット注釈の「ground truth」と比較されます。

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

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

これは混同行列の例です:

<figure><img src="https://1194881119-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcmo9mhfIjYrvFFy1U7dk%2Fuploads%2Fgit-blob-cd0af50fa3e0c4158310901798a285245a9d87bc%2FScreenshot%202025-07-23%20at%2011.20.53.png?alt=media" alt=""><figcaption></figcaption></figure>

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

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

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

<figure><img src="https://1194881119-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcmo9mhfIjYrvFFy1U7dk%2Fuploads%2Fgit-blob-37d06af76a4e8f6a660dec67c79f30d7d47e67ea%2FScreenshot%202025-07-23%20at%2011.21.19.png?alt=media" alt=""><figcaption></figcaption></figure>

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

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

<figure><img src="https://1194881119-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcmo9mhfIjYrvFFy1U7dk%2Fuploads%2Fgit-blob-5372c962df1b4125d6d89098a5b43ea4df21e74c%2FScreenshot%202025-07-23%20at%2011.22.08.png?alt=media" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://1194881119-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcmo9mhfIjYrvFFy1U7dk%2Fuploads%2Fgit-blob-15edd76d7c3b4f61ddd86e3581a91b90f0b72608%2FScreenshot%202025-07-23%20at%2011.22.30.png?alt=media" 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)

### 認証

すべてのエンドポイントには、次のスコープを持つ API キーが必要です: `model-eval:read` スコープ。クエリパラメータとして、または `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"
```

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

| パラメータ                    | 型   | 説明                                                                                                                  |
| ------------------------ | --- | ------------------------------------------------------------------------------------------------------------------- |
| `プロジェクト`                 | 文字列 | URL スラッグでプロジェクトを絞り込みます（例: `chess-pieces-fmhpz`)                                                                     |
| `バージョン` （別名 `versionId`) | 文字列 | 特定のバージョンを絞り込みます（例: `"4"`)                                                                                           |
| `モデル` （別名 `modelId`)     | 文字列 | ワークスペースのプレフィックスの有無にかかわらず、URL スラッグ ID でモデルを絞り込みます（例: `my-workspace/chess-pieces-fmhpz-2` または `chess-pieces-fmhpz-2`) |
| `ステータス`                  | 列挙型 | 次のいずれか `pending`, `running`, `done`, `failed`。不明な値は次を返します: `400`.                                                   |
| `limit`                  | 整数  | ページサイズ。デフォルト `50`、最大 `200`                                                                                          |

最大 1 つまで `プロジェクト` / `バージョン` / `モデル` を 1 回の呼び出しごとに設定できます（最も具体的なものが優先されます: `モデル` > `バージョン` > `プロジェクト`）。組み合わせは次で拒否されます: `400 invalid_filter_combination` ストレージのインデックスを有限に保つためです。

#### レスポンス

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

`プロジェクト` これはプロジェクトの URL スラッグです。REST API が URL パスで使用するのと同じ識別子です（`/:workspace/:project/...`）。評価 UI にディープリンクするには: `https://app.roboflow.com/{workspace}/{project}/evaluation/{versionId}`.

`modelId` これはモデルの URL スラッグ ID です。モデルおよび推論エンドポイントに渡すのと同じ ID であるため、文字列を比較することで評価をそのモデルに対応付けられます。バージョン単位で実行された評価は `{project}/{versionId}` の代わりにこの形式で報告されます。

`medianLatencyMs` は Serverless Cloud API のサーバー側の中央値時間で、ミリ秒単位です。これは `null` 評価で測定されなかった場合です。

### モデル評価を取得

ID で単一のモデル評価を取得します。完了済みの評価では、レスポンスに `summary` 主要指標を含むオブジェクトが含まれます。pending、running、failed の評価では簡略版の形式のみが返されます。どの主要指標が設定されるかはタスクタイプによって異なり、 `mAP` 検出系タスクでは、 `mIoU` セマンティック セグメンテーション向けです。

```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": "my-workspace/chess-pieces-fmhpz-2",
    "createdAt": "2026-04-27T20:04:10.904Z",
    "summary": {
        "mAP": 0.9239650566041828,
        "mIoU": null,
        "precision": 0.85,
        "recall": 0.85,
        "medianLatencyMs": 11.9
    }
}
```

#### レスポンス（pending、running、failed のいずれか）

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

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

#### 備考

* `mAP` は IoU 0.5 における mean Average Precision（`map50`）です。これは `null` 検出以外の評価タスク（例: 分類、セマンティック セグメンテーション）では
* `mIoU` は前景のマクロ平均 Intersection-over-Union です。Semantic Segmentation の評価でのみ設定され、 `null` それ以外では null です。
* `precision` と `recall` は、テスト分割における F1 最適信頼度しきい値で報告されます。
* `medianLatencyMs` は、最大 500 枚のテスト分割画像で測定された、Serverless Cloud API のサーバー側中央値時間（ミリ秒）です。前処理と後処理の時間は含まれ、ネットワーク時間は除外されます。これは `null` 評価で測定されなかった場合です。
* `ステータス` は `pending` 評価が推論用にモデルのコンパイルを待っている間です。評価ジョブが開始されると `running` に移行します。
* `evalId` は、すべてのパネル応答に埋め込まれる同じ識別子です。つまり `modelEvals.get` のペイロードは、構造上どのパネルのペイロードも包含するスーパーセットなので、 `summary`に拡張された `modelEvals.get` と `getMapResults` のレスポンスは同じクライアントのコードパスでレンダリングできます。
* `プロジェクト` これはプロジェクトの URL スラッグです。REST API が URL パスで使用するのと同じ識別子です。評価 UI にディープリンクするには: `https://app.roboflow.com/{workspace}/{project}/evaluation/{versionId}`. `プロジェクト` は `null` プロジェクトが削除されている場合。
* `modelId` これはモデルの URL スラッグ ID（`{workspace}/{model}`）、または `{project}/{versionId}` 単一モデルではなくバージョンで実行された評価の場合です。これは `null` モデルをもはや解決できない場合です。

### Map 結果

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

* **物体検出 / インスタンスセグメンテーション** - 各分割ごとの IoU 0.5 / 0.5-0.95 / 0.75 における mAP。オブジェクトサイズ別およびクラス別に内訳が表示されます。
* **セマンティック セグメンテーション** - 各分割ごとの 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"
```

#### レスポンス（物体検出 / インスタンスセグメンテーション）

```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": { "...": "同じ形式" }
    }
}
```

#### レスポンス（セマンティック セグメンテーション）

```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": { "...": "同じ形式" }
    }
}
```

#### 備考

* この `taskType` フィールドはレスポンス形式を判別します。分割内容をパースする前に必ず確認してください。
* **検出:** `map50_95` は、IoU しきい値 0.5 から 0.95 まで 0.05 刻みで平均した mAP です（COCO 標準）。オブジェクトサイズのバケットは `null` そのサイズのインスタンスが分割に存在しない場合は null になります。クラス別エントリは `perClass`の下に、クラス名をキーとして表示されます。
* **セマンティック セグメンテーション:** すべての指標は、前景クラスに対するピクセルレベルのマクロ平均です（背景は除外）。 `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": { "...": "同じ形式" },
        "train": { "...": "同じ形式" }
    }
}
```

#### 備考

* `perThreshold` キーは小数文字列として表した信頼度しきい値で、通常は `0.01` から `0.00` まで `0.99`.
* `optimalThreshold` その分割で F1 を最大化するしきい値です。
* 分割内のクラス別エントリは `perClass` 入れ子の部分を除いて同じ形式です。 `perClass`.

### クラス別パフォーマンス

1 つの分割について、クラス別の主要指標を返します。レスポンス形式は評価のタスクタイプによって異なります:

* **物体検出 / インスタンスセグメンテーション** - クラス別 `map50`, `map50_95`, `map75`、適合率、再現率、F1、および最適しきい値。
* **セマンティック セグメンテーション** - クラス別 `IoU`、適合率、再現率、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` | 列挙型 | 次のいずれか `学習`, `検証`, `テスト`。デフォルト `テスト`. `すべて` は **ない** ここでは有効ではありません。クラス別メトリクスはスプリット間で集計できません。 |

#### レスポンス（物体検出 / インスタンスセグメンテーション）

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

#### レスポンス（セマンティック セグメンテーション）

```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最適信頼度しきい値です。
* `precision`, `recall`、および `f1` は、そのクラス別の最適しきい値で報告されます。
* 検出では、mAPフィールドは `null` そのクラスのインスタンスがスプリットに存在しない場合。
* セマンティックセグメンテーションでは、すべてのメトリクスはピクセル単位です。 `optimalThreshold` の `0.0` は有効です。

### 混同行列

画像ごとの予測から導出された集計済みの混同行列を返します。各セル `matrix[actual][predicted]` は、正解クラスが `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`      | 列挙型 | 次のいずれか `学習`, `検証`, `テスト`、または `すべて`。デフォルト `テスト`.     |
| `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` | 整数 | の信頼度しきい値パーセンテージ `[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の慣例）で、どの密な領域にも当てはまらない画像です。
* `precisionMean` と `recallMean` は、そのクラスタ内の全画像で平均化されます。
* 画像ごとの埋め込みとクラスタ割り当ては、以下で利用できます。 [画像ごとの予測](#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`      | 列挙型 | 次のいずれか `学習`, `検証`, `テスト`、または `すべて`。デフォルト `すべて`.        |
| `confidence` | 整数  | の信頼度しきい値パーセンテージ `[0, 100]` （読み取る信頼度別レポートのバリアントを選択します）。 |
| `limit`      | 整数  | ページサイズ。デフォルト `200`、最大 `1000`.                          |
| `オフセット`      | 整数  | 返却前にこの件数のレコードをスキップします。デフォルト `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の元画像IDです。Roboflowの他のAPIとの照合に便利です。
* `confusion` のエントリは `[actualClassIdx, predictedClassIdx, count]` の3要素組です。クラスインデックスは [混同行列](#confusion-matrix-1)の `クラス`.
* `embedding2D` は、以下の [ベクトル分析](#vector-analysis) プロットで使用されるUMAP投影の2次元座標です。
* 異なる `confidence` 値は異なる統計を返します。予測はしきい値によって変化します。任意の `confidence` 値が成功するのは、評価パイプラインが生成済みのしきい値に限られます。未生成のバリアントは `404 report_not_found`.
* **ページネーションのコスト**：各ページで完全な `model_eval_results.json` ファイルをストレージから再読み込みし、サーバー側でスライスします。非常に大きな `image_results` 配列を含む評価では、より大きい `limit` の値（最大 `1000`）を、細かいページを多数取るより優先して、ページごとの固定コストを最小化してください。

### 推奨事項

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

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

このエンドポイントは **読み取り専用**です。推奨事項は、学習完了時の副作用として（または従来のアプリ内「推奨事項を更新」アクションで）生成されます。まだ生成されていない場合、レスポンスは `200 {"generated": false}` — これは **ない** 1つの `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
}
```

## 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>ワークスペース内のモデル評価を一覧表示します。</td></tr><tr><td><code>model_evals_get</code></td><td>1件の評価の最上位サマリーを取得します。</td></tr><tr><td><code>model_evals_get_map_results</code></td><td>スプリットごとの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>1つのスプリットのクラス別パフォーマンス指標を取得します。</td></tr><tr><td><code>model_evals_get_recommendations</code></td><td>利用可能であれば、その評価に対して生成された推奨事項を取得します。</td></tr></tbody></table>
