> 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. 他のモデルから一致する検出を見つけることで、各検出に「票」を数えます（class\_aware が有効な場合はクラスを考慮します）
5. 検出を`required_votes`個以上の票がある場合にのみ、コンセンサス出力の一部として受け入れます
6. 一致する検出の属性を、設定可能なモードで集約します：
   * **信頼度の集約**: 信頼度スコアを平均、最大、最小で組み合わせます
   * **座標の集約**: バウンディングボックスを平均（座標の平均値）、最大（最も大きいボックス）、最小（最も小さいボックス）でマージします
   * **マスクの集約** （インスタンスセグメンテーション用）：マスクを和集合、共通部分、最大、最小で組み合わせます
   * **クラスの選択**: 過半数投票（平均）、最も高い信頼度（最大）、または最も低い信頼度（最小）に基づいてクラス名を選択します
7. 任意の条件（対象とする特定クラス、最小信頼度閾値）に基づいて検出をフィルタリングします
8. コンセンサス結果に必要な数の物体（クラスごとまたは合計）が存在するかを確認して、物体の存在を判定します
9. マージされたコンセンサス検出、物体存在インジケーター、および存在信頼度スコアを返します

このブロックではクラス認識あり／なしの照合が可能です。 `class_aware` が true の場合、同じクラス名を持つ検出のみが同一物体への投票として考慮されます。false の場合は、重なっている検出であればクラスに関係なく票として加算されます。クラス認識モードはより保守的で、コンセンサス内でのクラス整合性を保証します。一方、クラス非依存モードでは異なるクラス間でも投票できますが、異なる物体タイプの検出をマージする可能性があります。複数モデルの合意を要することで、誤検出（1つのモデルだけが見つけた検出）を減らし、物体の存在に対する複数モデルの一致を要求することで信頼性を向上させます。集約モードにより、重複検出の統合方法に柔軟性を持たせ、保守的（共通部分、最小）な戦略と包括的（和集合、最大）な戦略の間でバランスを取れます。

## 一般的な使用例

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

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

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

* **複数の検出モデルブロック** （例：物体検出モデル、インスタンスセグメンテーションモデル）と接続して、異なるモデルからの予測を受け取り、過半数投票と空間的な重なりの照合に基づいてコンセンサス検出へ統合します
* **可視化ブロック** （例：バウンディングボックス可視化、ポリゴン可視化、ラベル可視化）と接続して、マージされたコンセンサス検出を表示し、複数モデルの統合結果を精度向上とともに示します
* **カウントおよび分析ブロック** （例：ラインカウンター、ゾーン内滞在時間、速度）と接続して、コンセンサス検出を数えたり分析したりし、複数モデルの合意に基づくより信頼性の高い指標を提供します
* **データ保存ブロック** （例：ローカルファイルシンク、CSVフォーマッタ、Roboflow データセットアップロード、Webhook シンク）と接続して、コンセンサス検出結果を保存または送信し、複数モデルの合意を表す統合予測を保管します
* **フロー制御ブロック** （例：Continue If）と接続して、以下に基づいて下流処理を条件付きで起動します `object_present` のインジケーターまたは `presence_confidence` スコアに基づき、物体の存在に対する複数モデルのコンセンサスに反応するワークフローを可能にします
* **フィルタリングブロック** （例：Detections Filter）と接続して、追加条件に基づいてコンセンサス検出をさらに絞り込み、コンセンサス統合後の多段階フィルタリングを可能にします

### 種別識別子

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

### プロパティ

| **名前**                                     | **型**                           | **説明**                                                                                                                                                                                                                                                                                      | 参照 |
| ------------------------------------------ | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`                                     | `str`                           | このステップの一意の識別子を入力してください。                                                                                                                                                                                                                                                                     | ❌  |
| `required_votes`                           | `int`                           | コンセンサス出力で検出を受け入れるために必要な最小票数（異なるモデルからの一致検出）。この閾値未満の票しか得られない検出は除外されます。例えば 2 に設定すると、少なくとも 2 つのモデルが重なった物体（IoU 閾値以上）を検出した場合にのみ、コンセンサス結果に表示されます。値を大きくするとコンセンサス要件は厳しくなり、誤検出は減りますが、より少ないモデルでしか見つけられない検出を見逃す可能性があります。                                                                                | ✅  |
| `class_aware`                              | `bool`                          | true の場合、異なるモデル間でクラス名が一致する検出のみが同一物体への票として考慮されます。false の場合は、重なっている検出であればクラスに関係なく票として加算されます。クラス認識モードはより保守的で、コンセンサス内でのクラス整合性を保証します。一方、クラス非依存モードでは異なるクラス間でも投票できますが、異なる物体タイプの検出をマージする可能性があります。                                                                                                   | ✅  |
| `iou_threshold`                            | `float`                         | 異なるモデルの検出を同じ物体とみなすための Intersection over Union（IoU）閾値です。この閾値より IoU が高い検出は重なっているとみなされ、互いに票を与えます。低い値（例：0.2）はより寛容で、重なりが少ない検出も一致として扱います。一方、高い値（例：0.5）は一致に強い空間的重なりを要求します。一般的な値は 0.2 から 0.5 の範囲です。                                                                                                 | ✅  |
| `信頼度`                                      | `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 人の person と 1 台の car を必要とします。None の場合、物体の存在はコンセンサス検出が少なくとも1つあるかどうかだけで判定されます。 | ✅  |
| `presence_confidence_aggregation`          | `集約モード`                         | 物体存在の信頼度スコアを計算するための集約モードです。物体存在の信頼度を算出する際に信頼度値をどう組み合わせるかを決定します：'average'（平均信頼度）、'max'（最高信頼度）、'min'（最低信頼度）。このモードは、必要な物体が存在する確信度を示す presence\_confidence 出力に適用されます。                                                                                                                           | ❌  |
| `detections_merge_confidence_aggregation`  | `集約モード`                         | 重複検出の信頼度スコアをマージするための集約モードです。'average' は平均信頼度（過半数投票の考え方）を計算し、'max' は一致した検出の中で最も高い信頼度を使い、'min' は最も低い信頼度を使います。クラス選択では、'average' は過半数投票（最も一般的なクラス）を表し、'max' は最も高い信頼度の検出からクラスを選択し、'min' は最も低い信頼度の検出からクラスを選択します。                                                                                  | ❌  |
| `detections_merge_coordinates_aggregation` | `集約モード`                         | 重複検出のバウンディングボックス座標をマージするための集約モードです。'average' は一致するすべてのボックスから平均座標を計算し（バランスの取れた方法）、'max' は最も大きいボックスを取り（最も包括的）、'min' は最も小さいボックスを取り（最も保守的）ます。このモードはバウンディングボックスにのみ適用され、マスクの集約には detections\_merge\_mask\_aggregation を使用します。                                                                     | ❌  |
| `detections_merge_mask_aggregation`        | `マスク集約モード`                      | 重複検出のセグメンテーションマスクをマージするための集約モードです。'union' はすべてのマスクを可能な限り最大の領域に結合し（最も包括的）、'intersection' は重なっている領域のみを取り（最も保守的）、'max' は最も大きいマスクを選択し、'min' は最も小さいマスクを選択します。このモードはマスクを持つインスタンスセグメンテーション検出にのみ適用され、バウンディングボックス検出には detections\_merge\_coordinates\_aggregation を使用します。                            | ❌  |

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

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

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

<details>

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

* 入力
  * `predictions_batches` (*Union\[*[*`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)*,* [*`object_detection_prediction`*](/workflows/ja/gaido/developer-guide/kinds/object-detection-prediction.md)*]*): 複数のモデルからの検出予測への参照のリストです。各モデルの予測は同じ入力画像に対して作成されている必要があります。予測は物体検出、インスタンスセグメンテーション、またはキーポイント検出モデルのものにできます。このブロックはモデル間の重複検出を照合し、コンセンサス出力で検出を受け入れる前に必要な最小票数（required\_votes）を要求します。少なくとも1つの予測ソースが必要です。バッチ処理をサポートします。
  * `required_votes` ([*`integer`*](/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 の範囲です。
  * `信頼度` ([*`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/dictionary.md)*,* [*`integer`*](/workflows/ja/gaido/developer-guide/kinds/integer.md)*]*): 物体存在を判定するために必要な物体数の任意の最小値です。整数（全クラス合計の物体数）またはクラス名から各クラスの最小個数への対応を表す辞書のどちらかにできます。object\_present 出力と組み合わせて、各クラスの十分な数の物体が検出されたかを判定するために使用します。例えば 3 は合計 3 個以上の物体が存在する必要があることを意味し、{'person': 2, 'car': 1} は少なくとも 2 人の person と 1 台の car を必要とします。None の場合、物体の存在はコンセンサス検出が少なくとも1つあるかどうかだけで判定されます。
* 出力
  * `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)*]*): ブールフラグ if `boolean` または辞書 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` または辞書 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>
