> 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/workflows/ja/burokku/blocks/advanced-blocks/detections-classes-replacement.md).

# 検出クラスの置換

検出バウンディングボックスのクラスラベルを、切り出した領域に適用した分類モデルが予測したクラスで置き換え、汎用的な検出結果と専門的な分類予測を組み合わせることで、2段階検出ワークフロー、きめ細かな分類、そして汎用検出を専門的分類器の具体的なクラスラベルで洗練するクラス洗練ワークフローを実現します。

## このブロックの仕組み

このブロックは、検出モデルの結果（バウンディングボックスと汎用クラス）と分類予測（切り出した領域に適用した専門分類器からの結果）を組み合わせ、汎用クラスラベルを具体的なものに置き換えます。このブロックは次を行います:

1. 異なる次元レベルの2つの入力を受け取ります:
   * `object_detection_predictions`: バウンディングボックスと汎用クラス（例: "dog"、"person"、"vehicle"）を含む検出結果（次元レベル 1）
   * `分類予測`: 各検出の切り出し領域に適用した分類器からの分類結果（次元レベル 2）（例: dog 検出に対する "Golden Retriever"、"Labrador"）。文字列のリストである場合もあります（例: OCR 由来）。
2. 分類結果を検出結果に対応付けます:
   * を使用します `PARENT_ID_KEY` （detection\_id）を分類予測内で用いて、各分類結果を元の検出結果にリンクします。あるいは
   * 予測が親IDを持たない生の文字列/リストである場合は、位置ベースのマッピング（順序ベース）を使用します。
3. 各分類予測から先頭のクラスを抽出します:

   **単一ラベル分類の場合:**

   * 分類結果から "top" クラス（予測クラス）を使用します
   * 分類予測からクラス名、クラスID、信頼度を抽出します

   **複数ラベル分類の場合:**

   * 信頼度スコアが最も高いクラスを見つけます
   * 最も信頼度の高いラベルを置換クラスとして使用します
   * 最も信頼度の高い予測からクラス名、クラスID、信頼度を抽出します

   **文字列予測の場合:**

   * 文字列をクラス名として使用します
   * デフォルトの信頼度 1.0 とクラスID 0 を割り当てます
4. 欠落した分類を処理します:
   * 対応する分類予測がない検出は、デフォルトでは破棄されます
   * If `fallback_class_name` が指定されている場合、分類のない検出は破棄されずにフォールバッククラスを使用します
   * フォールバッククラスIDは、指定された値に設定されるか、 `sys.maxsize` が指定されていない、または負の場合
5. 検出をフィルタリングします:
   * 分類結果がある検出（または指定されている場合はフォールバック）だけを保持します
   * 分類予測に一致しない検出を削除します
6. クラス情報を置き換えます:
   * 検出内のクラス名を分類のクラス名に置き換えます
   * 検出内のクラスIDを分類のクラスIDに置き換えます
   * 検出内の信頼度スコアを分類の信頼度スコアに置き換えます
   * 新しいクラス情報を反映するよう、すべての検出メタデータを更新します
7. 新しい検出IDを生成します:
   * 更新された検出に対して新しい一意の検出IDを作成します（IDの競合を防ぎます）
   * クラス置換後に検出IDが一意であることを保証します
8. 更新された検出を返します:
   * バウンディングボックス座標やその他のプロパティを保持したまま、クラスが置き換えられた検出を出力します
   * 出力次元は入力の検出予測（次元レベル 1）と一致します

このブロックは、汎用的な検出モデルがオブジェクトを見つけ、専門的な分類モデルがきめ細かなラベルを提供する2段階検出ワークフローを可能にします。これは、空間情報を失わずに、汎用的な位置特定（例: "dog"）と具体的な分類（例: "Golden Retriever"、"German Shepherd"）を組み合わせたい場合に役立ちます。

## 一般的な使用例

* **2段階検出と分類**: 汎用検出と専門的分類を組み合わせて、きめ細かなラベル付けを行います（例: まず "dog" を検出し、その後犬種を分類する、まず "vehicle" を検出し、その後種類を分類する、まず "person" を検出し、その後年齢層を分類する）。これにより、2段階検出ワークフローを実現します
* **クラス洗練**: 汎用クラスラベルを、専門モデルからの具体的な分類で洗練します（例: "animal" を具体的な種に洗練する、"vehicle" を具体的なモデルに洗練する、"food" を具体的な料理に洗練する）。これにより、クラス洗練ワークフローを実現します
* **マルチモデルワークフロー**: 検出モデルと分類モデルを組み合わせて、両者の強みを活かします（例: 位置特定には汎用検出器を使い、識別には専門分類器を使う、粗いモデルときめ細かなモデルを組み合わせる、一般的な検出器に専門分類器を活用する）。これにより、マルチモデルワークフローを実現します
* **階層分類**: 検出が上位クラスを提供し、分類が詳細な下位クラスを提供する階層分類を適用します（例: まず "mammal" を検出し、その後種を分類する、まず "plant" を検出し、その後品種を分類する、まず "structure" を検出し、その後種類を分類する）。これにより、階層分類ワークフローを実現します
* **切り出しベースの分類**: 切り出した領域の分類結果を使って検出結果を強化します（例: 切り出し領域を分類して検出ラベルを改善する、検出領域に専門分類器を適用する、切り出し分類で検出を洗練する）。これにより、切り出しベースの分類ワークフローを実現します
* **きめ細かなオブジェクト認識**: 位置特定と詳細な分類を組み合わせることで、きめ細かな認識を可能にします（例: 具体的な製品モデルを認識する、特定の動物の品種を識別する、具体的な車両タイプを分類する）。これにより、きめ細かな認識ワークフローを実現します

## 他のブロックへの接続

このブロックは検出予測と分類予測を受け取り、クラスが置き換えられた検出結果を生成します:

* **検出および分類モデルのブロックの後** 汎用検出と専門的分類を組み合わせます（例: オブジェクト検出 + 分類で洗練された検出結果を得る、検出モデル + 分類器でラベル付き検出結果を得る）。これにより、検出-分類融合ワークフローを実現します
* **切り抜きブロックの後に** 検出結果から切り出しを作成して分類します（例: 検出結果を切り出してから切り出しを分類する、分類用の切り出しを作成してからクラスを置き換える）。これにより、切り出し-分類ワークフローを実現します
* **可視化ブロックの前** 洗練されたクラスを持つ検出を表示します（例: 洗練された検出結果を可視化する、具体的なラベル付きで検出を表示する、分類強化された検出を示す）。これにより、洗練された検出の可視化ワークフローを実現します
* **フィルタリングブロックの前** 洗練されたクラスを持つ検出をフィルタリングします（例: 具体的なクラスでフィルタリングする、洗練された検出をフィルタリングする、分類済み検出にフィルタを適用する）。これにより、洗練された検出のフィルタリングワークフローを実現します
* **分析ブロックの前で** 洗練された検出に対して分析を行います（例: 具体的なクラスを分析する、分類済み検出に対して分析を行う、洗練された検出メトリクスを追跡する）。これにより、洗練された検出の分析ワークフローを実現します
* **ワークフロー出力において** 洗練された検出を最終出力として提供します（例: 2段階検出出力、分類強化された検出出力、洗練された検出結果）。これにより、洗練された検出の出力ワークフローを実現します

## 要件

このブロックには、物体検出予測（バウンディングボックス付き）と、それらのバウンディングボックスを切り出した領域からの分類予測が必要です。分類予測には `PARENT_ID_KEY` （detection\_id）が含まれ、分類を元の検出にリンクします。このブロックは異なる次元レベルを受け付けます。検出予測はレベル 1、分類予測はレベル 2（切り出し由来）です。単一ラベル分類では "top" クラスが使用されます。複数ラベル分類では、最も信頼度の高いクラスが選択されます。分類結果のない検出は、 `fallback_class_name` が提供されない限り破棄されます。このブロックは、クラス、クラスID、信頼度が置き換えられた検出を出力し、新しい検出IDを生成します。出力次元は入力の検出予測（レベル 1）と一致します。

### 型識別子

ステップで次の識別子を使用してください `"type"` フィールド： `roboflow_core/detections_classes_replacement@v1` ワークフローにこのブロックをステップとして追加するには。

### プロパティ

| **名前**                | **型** | **説明**                                                                                                                                                                       | 参照 |
| --------------------- | ----- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`                | `str` | このステップの一意の識別子を入力してください。                                                                                                                                                      | ❌  |
| `fallback_class_name` | `str` | 対応する分類予測のない検出に使用する任意のクラス名。指定しない場合（デフォルト None）、分類のない検出は破棄されます。指定した場合、分類のない検出は削除されず、このフォールバッククラス名を使用します。分類が失敗した場合や利用できない場合に検出を保持するのに便利です..                                     | ✅  |
| `fallback_class_id`   | `整数`  | fallback\_class\_name とともに、分類予測のない検出に使用する任意のクラスID。指定されていないか負の値の場合、クラスIDは sys.maxsize に設定されます。fallback\_class\_name が指定されている場合にのみ使用されます。モデルで使用しているクラスIDのマッピングと一致している必要があります.. | ✅  |

この **参照** 列は、で利用可能な動的値を使ってプロパティをパラメータ化できる可能性を示します `ワークフロー` 実行時。参照 *バインディング* 詳細は。

### 入力と出力のバインディング

利用可能な接続は、そのバインディング種別によって異なります。どのバインディング種別が `検出クラスの置換` のバージョン `v1` あるか確認してください。

<details>

<summary>入力と出力のバインディング</summary>

* 入力
  * `object_detection_predictions` (*Union\[*[*`object_detection_prediction`*](/workflows/ja/gaido/developer-guide/kinds/object-detection-prediction.md)*,* [*`instance_segmentation_prediction`*](/workflows/ja/gaido/developer-guide/kinds/instance-segmentation-prediction.md)*,* [*`keypoint_detection_prediction`*](/workflows/ja/gaido/developer-guide/kinds/keypoint-detection-prediction.md)*]*): 汎用クラスラベルを含み、分類結果で置き換えられる検出予測（オブジェクト検出、インスタンスセグメンテーション、またはキーポイント検出）。これらの検出は、切り出されて分類された領域に対応している必要があります。検出には、分類予測内の PARENT\_ID\_KEY と一致する detection ID が必要です。検出は次元レベル 1 である必要があります..
  * `分類予測` (*Union\[*[*`list_of_values`*](/workflows/ja/gaido/developer-guide/kinds/list-of-values.md)*,* [*`classification_prediction`*](/workflows/ja/gaido/developer-guide/kinds/classification-prediction.md)*,* [*`string`*](/workflows/ja/gaido/developer-guide/kinds/string.md)*]*): 検出のクラス名を置き換えるラベル。分類予測（parent\_id でリンク）、単純な文字列、または文字列のリスト（例: Gemini のような OCR/LMM 出力）を受け付けます。文字列入力は検出に位置ベースで対応付けられます（インデックスによる 1:1 対応）。分類入力は単一ラベル（'top' クラス）と複数ラベル（最も信頼度の高いクラス）をサポートします..
  * `fallback_class_name` ([*`string`*](/workflows/ja/gaido/developer-guide/kinds/string.md)): 対応する分類予測のない検出に使用する任意のクラス名。指定しない場合（デフォルト None）、分類のない検出は破棄されます。指定した場合、分類のない検出は削除されず、このフォールバッククラス名を使用します。分類が失敗した場合や利用できない場合に検出を保持するのに便利です..
  * `fallback_class_id` ([*`整数`*](/workflows/ja/gaido/developer-guide/kinds/integer.md)): fallback\_class\_name とともに、分類予測のない検出に使用する任意のクラスID。指定されていないか負の値の場合、クラスIDは sys.maxsize に設定されます。fallback\_class\_name が指定されている場合にのみ使用されます。モデルで使用しているクラスIDのマッピングと一致している必要があります..
* 出力
  * `predictions` (*Union\[*[*`object_detection_prediction`*](/workflows/ja/gaido/developer-guide/kinds/object-detection-prediction.md)*,* [*`instance_segmentation_prediction`*](/workflows/ja/gaido/developer-guide/kinds/instance-segmentation-prediction.md)*,* [*`keypoint_detection_prediction`*](/workflows/ja/gaido/developer-guide/kinds/keypoint-detection-prediction.md)*]*）：sv.Detections(...) 形式の検出バウンディングボックスを含む予測。 `object_detection_prediction` または、sv.Detections(...) 形式の検出バウンディングボックスとセグメンテーションマスクを含む予測。 `instance_segmentation_prediction` または、検出されたバウンディングボックスと検出されたキーポイントを sv.Detections(...) オブジェクトの形式で持つ Prediction の場合 `keypoint_detection_prediction`.

</details>

<details>

<summary>JSON 定義の例</summary>

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/detections_classes_replacement@v1",
	    "object_detection_predictions": "$steps.object_detection_model.predictions",
	    "classification_predictions": "$steps.classification_model.predictions",
	    "fallback_class_name": null,
	    "fallback_class_id": null
	}
```

</details>
