> 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/logic-and-branching/detections-consensus.md).

# 検出結果のコンセンサス

複数モデルからの検出予測を、過半数投票のコンセンサス戦略を用いて統合し、異なるモデルから十分な票を得た重複検出をまとめ、各検出の属性（信頼度スコア、バウンディングボックス、マスク）をより高精度で信頼性の高い統一されたコンセンサス検出へ集約します。

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

このブロックは、検出を受け入れる前にモデル間の一致（コンセンサス）を要求することで、複数の検出モデルからの予測を融合します。このブロックは次のことを行います。

1. 複数のモデルソース（物体検出、インスタンスセグメンテーション、またはキーポイント検出）からの検出予測を入力として受け取ります
2. バウンディングボックス間の Intersection over Union（IoU）を計算することで、空間的に重なっている異なるモデルの検出を対応付けます
3. 重なっている検出を IoU 閾値と比較し、同じ物体を表しているかどうかを判断します
4. 他のモデルから一致する検出を見つけることで、各検出の「票」を数えます（有効にされている場合はクラスを考慮します）
5. 検出をコンセンサス出力の一部として受け入れるには、最小票数（`required_votes`）が必要です
6. 設定可能なモードを使用して、一致する検出の属性を集約します。
   * **信頼度の集約**：平均、最大、または最小を使用して信頼度スコアを統合します
   * **座標の集約**：平均（平均座標）、最大（最大のボックス）、または最小（最小のボックス）を使用してバウンディングボックスを結合します
   * **マスクの集約** （インスタンスセグメンテーション用）：和集合、共通部分、最大、または最小を使用してマスクを結合します
   * **クラスの選択**：過半数投票（average）、最も高い信頼度（max）、または最も低い信頼度（min）に基づいてクラス名を選択します
7. オプションの条件（考慮する特定クラス、最小信頼度閾値）に基づいて検出をフィルタリングします
8. 必要な数の物体（クラスごと、または合計）がコンセンサス結果に存在するかを確認して、物体の存在を判定します
9. 統合されたコンセンサス検出、物体存在インジケーター、および存在信頼度スコアを返します

このブロックのコンセンサス予測は次のものに接続できます。 `class_aware` が true のときは、同じクラス名を持つ検出のみが票として考慮されます。false のときは、クラスに関係なく重なっている検出が票に寄与します。コンセンサス機構は、1つのモデルだけが検出した偽陽性を減らし、物体の存在について複数モデルの一致を要求することで信頼性を向上させます。集約モードにより、重なり検出をどのように結合するかを柔軟に調整でき、保守的な戦略（共通部分、min）と包括的な戦略（和集合、max）のバランスを取れます。

## 一般的な使用例

* **マルチモデル・アンサンブル**：複数の特化モデル（例：人物向けに最適化されたモデルと車両向けに最適化された別モデル）の予測を統合し、全体的な検出精度を向上させます。各モデルの強みを活かしつつ、1つのモデルだけが見る検出を除外します
* **偽陽性の削減**：検出を受け入れる前に複数モデルのコンセンサスを要求します（例：3モデル中2つが物体を検出する必要がある）。1つのモデルだけが見た検出を除外することで偽陽性を減らします
* **検出信頼性の向上**：過半数投票を使って検出への信頼度を高めます（例：3モデルからの重なり検出を統合し、2票以上のものだけを保持する）。高信頼で、複数モデルが合意した検出のみが残るようにします
* **物体存在検出**：コンセンサスに基づいて特定の物体が存在するかを判定します（例：モデル全体で少なくとも2件の「person」検出があるかを確認し、集約した信頼度で存在を判断する）。これにより、しきい値を設定可能な堅牢な物体存在確認が可能になります
* **クラス別コンセンサス**：クラスごとに異なるコンセンサス要件を適用します（例：「car」には3票必要だが、「person」には2票だけ必要）。重要な物体にはより厳格な基準を、一般的な検出にはより緩い基準を適用できます
* **特化モデルの融合**：汎用モデルと特化モデル（例：汎用物体検出器 + 特化したナンバープレート検出器）を組み合わせ、広いカバレッジと特定分野の専門性の両方の恩恵を受ける統合検出システムを作成します

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

このブロックのコンセンサス予測は次のものに接続できます。

* **複数の検出モデルブロック** （例：Object Detection Model、Instance Segmentation Model）に接続して、異なるモデルからの予測を受け取り、過半数投票と空間的重なりのマッチングに基づいてコンセンサス検出に融合します
* **可視化ブロック** （例：Bounding Box Visualization、Polygon Visualization、Label Visualization）に接続して、統合されたコンセンサス検出を表示し、精度が向上した複数モデルの統一結果を示します
* **カウントおよび分析用ブロック** （例：Line Counter、Time in Zone、Velocity）に接続して、コンセンサス検出をカウントまたは分析し、複数モデルの一致に基づくより信頼性の高い指標を提供します
* **データ保存ブロック** （例：Local File Sink、CSV Formatter、Roboflow Dataset Upload、Webhook Sink）に接続して、コンセンサス検出結果を保存または送信し、複数モデルの合意を表す統合予測を格納します
* **フロー制御ブロック** （例：Continue If）に接続して、 `object_present` インジケーターまたは `presence_confidence` スコアに基づいて下流処理を条件付きで起動し、物体存在に関する複数モデルのコンセンサスに応答するワークフローを実現します
* **フィルタリングブロック** （例：Detections Filter）に接続して、追加条件に基づきコンセンサス検出をさらに絞り込み、コンセンサス融合後の多段フィルタリングを可能にします

### 型識別子

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

### プロパティ

| **名前**                                     | **型**                           | **説明**                                                                                                                                                                                                                                                                      | 参照 |
| ------------------------------------------ | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`                                     | `str`                           | このステップの一意の識別子を入力してください。                                                                                                                                                                                                                                                     | ❌  |
| `required_votes`                           | `整数`                            | コンセンサス出力で検出を受け入れるために必要な最小票数（異なるモデルからの一致検出数）。このしきい値より少ない票しか得られない検出は除外されます。たとえば 2 に設定すると、少なくとも 2 つのモデルが IoU 閾値を超えて重なる物体を検出した場合にのみ、コンセンサス結果に表示されます。値を高くするとコンセンサス要件が厳しくなり、偽陽性は減りますが、少数のモデルしか検出しない物体を見逃す可能性があります。                                                                | ✅  |
| `class_aware`                              | `bool`                          | true の場合、異なるモデル間でクラス名が一致する検出のみが、同じ物体への票として考慮されます。false の場合、重なっている検出はクラスに関係なく票に寄与します。クラス認識モードはより保守的で、コンセンサスにおけるクラスの一貫性を保証します。一方、クラス非依存モードは異なるクラス間での投票を許可しますが、異なる物体種別の検出を統合してしまう可能性があります。                                                                                     | ✅  |
| `iou_threshold`                            | `float`                         | 異なるモデルの検出を同じ物体としてマッチさせるための Intersection over Union（IoU）閾値。IoU がこの閾値を超える検出は重なっているとみなされ、互いの票に寄与します。低い値（例：0.2）は寛容で、重なりが少ない検出も一致させます。高い値（例：0.5）は一致により強い空間的重なりを要求します。一般的な値は 0.2 から 0.5 の範囲です。                                                                                    | ✅  |
| `confidence`                               | `float`                         | 統合されたコンセンサス検出に適用される信頼度閾値。この閾値を超える集約信頼度スコアを持つ検出のみが出力に含まれます。0.0 に設定すると信頼度フィルタリングを無効にできます。値を高くすると低信頼度のコンセンサス検出が除外され、出力品質は向上しますが、有効だが信頼度の低い検出が削除される可能性があります。                                                                                                                    | ✅  |
| `classes_to_consider`                      | `List[str]`                     | コンセンサス処理に含めるクラス名の任意のリスト。指定した場合、これらのクラスの検出のみが投票と統合の対象となり、他のすべてのクラスはコンセンサス一致の前に除外されます。無関係な検出を無視しながら、特定の物体種別にコンセンサスを集中させたい場合に使用します。None の場合は、すべてのクラスがコンセンサスに参加します。                                                                                                             | ✅  |
| `required_objects`                         | `Optional[Dict[str, int], int]` | 物体の存在を判定するために必要な物体数の任意指定の最小値。整数（全クラス合計の物体数）または、クラス名をクラスごとの最小数に対応付ける辞書のいずれかにできます。object\_present 出力と組み合わせて、各クラスの物体が十分に検出されているかを判断するために使用します。たとえば 3 は合計で少なくとも 3 個の物体が必要であることを意味し、{'person': 2, 'car': 1} は少なくとも 2 人の人物と 1 台の車が必要です。None の場合、物体の存在はコンセンサス検出が存在するかどうかだけで決定されます。 | ✅  |
| `presence_confidence_aggregation`          | `AggregationMode`               | 物体存在の信頼度スコアを計算する際の集約モード。物体存在の信頼度を計算するときに信頼度値をどのように結合するかを決定します。'average'（平均信頼度）、'max'（最高信頼度）、'min'（最低信頼度）のいずれかです。このモードは、必要な物体が存在するという信頼度を示す presence\_confidence 出力に適用されます。                                                                                                  | ❌  |
| `detections_merge_confidence_aggregation`  | `AggregationMode`               | 重なっている検出の信頼度スコアを統合するための集約モード。'average' は平均信頼度（過半数投票方式）を計算し、'max' は一致する検出の中で最も高い信頼度を使い、'min' は最も低い信頼度を使います。クラス選択では、'average' は過半数投票（最も一般的なクラス）を表し、'max' は最も高い信頼度の検出からクラスを選択し、'min' は最も低い信頼度の検出からクラスを選択します。                                                                   | ❌  |
| `detections_merge_coordinates_aggregation` | `AggregationMode`               | 重なっている検出のバウンディングボックス座標を統合するための集約モード。'average' はすべての一致ボックスの平均座標を計算し（バランスの取れたアプローチ）、'max' は最大のボックスを採用し（最も包括的）、'min' は最小のボックスを採用します（最も保守的）。このモードはバウンディングボックスにのみ適用されます。マスクの集約には detections\_merge\_mask\_aggregation を使用します。                                                    | ❌  |
| `detections_merge_mask_aggregation`        | `MaskAggregationMode`           | 重なっている検出のセグメンテーションマスクを統合するための集約モード。'union' はすべてのマスクを結合して可能な限り大きい領域にし（最も包括的）、'intersection' は重なっている領域のみを採用し（最も保守的）、'max' は最大のマスクを選択し、'min' は最小のマスクを選択します。このモードはマスク付きのインスタンスセグメンテーション検出にのみ適用されます。バウンディングボックス検出では detections\_merge\_coordinates\_aggregation を使用します。          | ❌  |

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

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

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

<details>

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

* 入力
  * `predictions_batches` (*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)*]*）：複数モデルからの検出予測への参照のリストです。各モデルの予測は同じ入力画像に対して行われている必要があります。予測は物体検出、インスタンスセグメンテーション、またはキーポイント検出モデルからのものでもかまいません。このブロックはモデル間の重なり検出を対応付け、コンセンサス出力で検出を受け入れる前に最小票数（required\_votes）を要求します。少なくとも1つの予測ソースが必要です。バッチ処理に対応しています。
  * `required_votes` ([*`整数`*](/workflows/ja/gaido/developer-guide/kinds/integer.md)）：コンセンサス出力で検出を受け入れるために必要な最小票数（異なるモデルからの一致検出数）。このしきい値より少ない票しか得られない検出は除外されます。たとえば 2 に設定すると、少なくとも 2 つのモデルが IoU 閾値を超えて重なる物体を検出した場合にのみ、コンセンサス結果に表示されます。値を高くするとコンセンサス要件が厳しくなり、偽陽性は減りますが、少数のモデルしか検出しない物体を見逃す可能性があります。
  * `class_aware` ([*`boolean`*](/workflows/ja/gaido/developer-guide/kinds/boolean.md)）：true の場合、異なるモデル間でクラス名が一致する検出のみが、同じ物体への票として考慮されます。false の場合、重なっている検出はクラスに関係なく票に寄与します。クラス認識モードはより保守的で、コンセンサスにおけるクラスの一貫性を保証します。一方、クラス非依存モードは異なるクラス間での投票を許可しますが、異なる物体種別の検出を統合してしまう可能性があります。
  * `iou_threshold` ([*`float_zero_to_one`*](/workflows/ja/gaido/developer-guide/kinds/float-zero-to-one.md)）：異なるモデルの検出を同じ物体としてマッチさせるための Intersection over Union（IoU）閾値。IoU がこの閾値を超える検出は重なっているとみなされ、互いの票に寄与します。低い値（例：0.2）は寛容で、重なりが少ない検出も一致させます。高い値（例：0.5）は一致により強い空間的重なりを要求します。一般的な値は 0.2 から 0.5 の範囲です。
  * `confidence` ([*`float_zero_to_one`*](/workflows/ja/gaido/developer-guide/kinds/float-zero-to-one.md)）：統合されたコンセンサス検出に適用される信頼度閾値。この閾値を超える集約信頼度スコアを持つ検出のみが出力に含まれます。0.0 に設定すると信頼度フィルタリングを無効にできます。値を高くすると低信頼度のコンセンサス検出が除外され、出力品質は向上しますが、有効だが信頼度の低い検出が削除される可能性があります。
  * `classes_to_consider` ([*`list_of_values`*](/workflows/ja/gaido/developer-guide/kinds/list-of-values.md)）：コンセンサス処理に含めるクラス名の任意のリスト。指定した場合、これらのクラスの検出のみが投票と統合の対象となり、他のすべてのクラスはコンセンサス一致の前に除外されます。無関係な検出を無視しながら、特定の物体種別にコンセンサスを集中させたい場合に使用します。None の場合は、すべてのクラスがコンセンサスに参加します。
  * `required_objects` (*Union\[*[*`整数`*](/workflows/ja/gaido/developer-guide/kinds/integer.md)*,* [*`辞書`*](/workflows/ja/gaido/developer-guide/kinds/dictionary.md)*]*）：物体の存在を判定するために必要な物体数の任意指定の最小値。整数（全クラス合計の物体数）または、クラス名をクラスごとの最小数に対応付ける辞書のいずれかにできます。object\_present 出力と組み合わせて、各クラスの物体が十分に検出されているかを判断するために使用します。たとえば 3 は合計で少なくとも 3 個の物体が必要であることを意味し、{'person': 2, 'car': 1} は少なくとも 2 人の人物と 1 台の車が必要です。None の場合、物体の存在はコンセンサス検出が存在するかどうかだけで決定されます。
* 出力
  * `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)*]*）：sv.Detections(...) 形式の検出バウンディングボックスを含む予測。 `object_detection_prediction` または、sv.Detections(...) 形式の検出バウンディングボックスとセグメンテーションマスクを含む予測。 `instance_segmentation_prediction`.
  * `object_present` (*Union\[*[*`boolean`*](/workflows/ja/gaido/developer-guide/kinds/boolean.md)*,* [*`辞書`*](/workflows/ja/gaido/developer-guide/kinds/dictionary.md)*]*）：Boolean フラグ、if `boolean` または Dictionary、if `辞書`.
  * `presence_confidence` (*Union\[*[*`float_zero_to_one`*](/workflows/ja/gaido/developer-guide/kinds/float-zero-to-one.md)*,* [*`辞書`*](/workflows/ja/gaido/developer-guide/kinds/dictionary.md)*]*): `float` 範囲内の値 `[0.0, 1.0]` if `float_zero_to_one` または Dictionary、if `辞書`.

</details>

<details>

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

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/detections_consensus@v1",
	    "predictions_batches": [
	        "$steps.a.predictions",
	        "$steps.b.predictions"
	    ],
	    "required_votes": 2,
	    "class_aware": true,
	    "iou_threshold": 0.3,
	    "confidence": 0.1,
	    "classes_to_consider": [
	        "a",
	        "b"
	    ],
	    "required_objects": 3,
	    "presence_confidence_aggregation": "max",
	    "detections_merge_confidence_aggregation": "min",
	    "detections_merge_coordinates_aggregation": "min",
	    "detections_merge_mask_aggregation": "union"
	}
```

</details>
