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

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

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

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

## Webアプリ

### モデル評価を開く

モデルの混同行列とベクトルエクスプローラーを確認するには、プロジェクト内の任意のトレーニング済みモデルを開きます。次に、「評価を表示」ボタンをクリックします:

<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件のリクエストに応答するまでの時間の中央値が表示されます。この値には前処理と後処理の時間が含まれます。ネットワーク時間は含まれません。モデル一覧とモデルカードには、同じ値が「レイテンシ（Cloud API）」として表示されます。 [ニューラルアーキテクチャ検索](/models/ja/xue-xi/neural-architecture-search.md) ベンチマークによる測定方法は異なるため、この2つを比較しないでください。

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

使用 [モデル比較](/models/ja/ping-si/compare-trained-models.md) を使用して、同じデータセットバージョン上のモデルのテストセット精度とレイテンシを比較します。

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

本番メトリクスエクスプローラーでは、可能なすべての信頼度しきい値におけるモデルの適合率、再現率、F1スコアが表示されます。この情報はグラフで表示されます。

これらの統計情報を使用して、本番メトリクスエクスプローラーは「最適な信頼度」を推奨します。これは、適合率/再現率/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/適合率/再現率の値を確認できます:

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

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

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

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

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

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

### 混同行列

混同行列には、モデルがさまざまなクラスでどの程度の性能を発揮するかが表示されます。

混同行列は、テストセットおよび検証セットの画像をトレーニング済みモデルで実行して計算されます。その後、モデルの結果がデータセットアノテーションの「グラウンドトゥルース」と比較されます。

混同行列ツールを使用すると、次を特定できます:

* モデルが良好に機能するクラス。
* モデルがオブジェクトに対して誤ったクラスを識別するクラス（偽陽性）。
* モデルが存在しない場所にオブジェクトを識別する事例（偽陰性）。

混同行列の例を次に示します:

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

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

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

信頼度しきい値スライダーを使用して信頼度しきい値を調整できます。スライダーを設定すると、混同行列、適合率、再現率が更新されます:

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

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

たとえば、「偽陽性」列の任意のボックスをクリックすると、グラウンドトゥルースデータには存在しない場所でオブジェクトが識別された画像を特定できます。

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

個々の画像をクリックすると、グラウンドトゥルース（アノテーション）とモデル予測を切り替えられるインタラクティブビューに入れます:

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

アノテーションを表示するには「グラウンドトゥルース」を、モデルが返した内容を表示するには「モデル予測」をクリックします。

## HTTP API

モデル評価では、バージョンのテスト分割におけるモデルの性能（クラス別指標、信頼度しきい値曲線、画像埋め込みクラスタリング、画像別予測、改善の推奨事項）が取得されます。物体検出とインスタンスセグメンテーションの主要指標はmAPです。セマンティックセグメンテーションではmIoUです。評価はトレーニングの完了時に自動生成され、アプリから手動で再実行できます。

モデル評価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` | unauthenticated        | 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`)     | 文字列 | ワークスペースプレフィックスの有無を問わず、URLスラッグIDでモデルをフィルタリングします（例: `my-workspace/chess-pieces-fmhpz-2` または `chess-pieces-fmhpz-2`) |
| `status`                      | 列挙型 | 次のいずれか: `pending`, `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": "my-workspace/chess-pieces-fmhpz-2",
            "createdAt": "2026-04-27T20:04:10.904Z",
            "medianLatencyMs": 11.9
        }
    ]
}
```

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

### Map結果

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

* **物体検出 / インスタンスセグメンテーション** - 分割ごとのIoU 0.5 / 0.5～0.95 / 0.75におけるmAP。オブジェクトサイズ別およびクラス別の内訳を含みます。
* **セマンティックセグメンテーション** - 分割ごとのmIoU、適合率、再現率、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` は、0.5から0.95まで0.05刻みのIoUしきい値で平均したmAPです（COCO標準）。オブジェクトサイズのバケットは `null` 分割にそのサイズのインスタンスが含まれていない場合です。クラス別エントリは `perClass`の下にクラス名をキーとして表示されます。
* **セマンティックセグメンテーション:** すべての指標は、前景クラス（背景を除く）に対するピクセルレベルのマクロ平均です。 `miou` は平均Intersection-over-Unionです。 `optimalThreshold` はクラスごとのF1最適信頼度しきい値です。次の値は `0.0` 有効であり、モデルがargmaxで最大になることを意味します。

### 信頼度スイープ

信頼度しきい値ごとの指標曲線と、分割ごと（およびクラスごと）のF1最適しきい値を返します。適合率/再現率のトレードオフをプロットし、デプロイ時のしきい値を選択する際に役立ちます。

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

```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`、precision、recall、F1、および最適しきい値。
* **セマンティックセグメンテーション** - クラスごと `IoU`、precision、recall、F1、および最適しきい値（ピクセルレベル）。

レスポンス内の `taskType` レスポンス内の field は、期待される形状を示します。

これはアプリ内の **クラス別パフォーマンス** パネルが読み取るデータです。

```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` クラス別 field セットを判別します。検出クラスには `map50`/`map50_95`/`map75`、セマンティックセグメンテーションのクラスには `IoU` および `classID` が代わりに報告されます。
* `optimalThreshold` は、信頼度スイープによるクラス別F1最適信頼度しきい値です。
* `precision`, `recall`、および `f1` は、そのクラス別の最適しきい値で報告されます。
* 検出では、mAP フィールドは `null` そのクラスのインスタンスがその分割にない場合は 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`      | 列挙型 | 次のいずれか: `学習`, `検証`, `テスト`、または `すべて`。デフォルト `テスト`.                  |
| `confidence` | 整数  | confidence-threshold パーセンテージを `[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]
    ]
}
```

上の例では、confidence threshold 0.2 で:

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

#### 注記

* `confidence` は、レポートの基になる 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-threshold パーセンテージを `[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` | 整数  | confidence-threshold パーセンテージを `[0, 100]` （どの confidence ごとのレポート変種を読むかを選択します）。 |
| `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]
            ]
        }
    ]
}
```

#### 注記

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

### 推奨事項

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

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

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