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

# 検出の統合

複数の画像スライスやクロップからの検出を、スライス／クロップ空間の座標を元画像座標に変換し、すべての検出を統合し、必要に応じて重複する検出をフィルタリングすることで、単一の統合された検出結果にまとめます。これにより、SAHIワークフロー、マルチステージ検出パイプライン、およびサブ画像の検出を元画像で検出されたかのように再構築する座標空間マージワークフローを有効にします。

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

このブロックは、同じ入力画像の複数のサブパート（スライスまたはクロップ）で行われた検出を統合し、元画像の座標空間で1つの検出結果として再構築します。このブロックは:

1. 参照画像とスライス／クロップの予測を受け取ります:
   * スライスまたはクロップされた元の参照画像を受け取ります
   * 各スライス／クロップを処理した検出モデルからの予測を受け取ります
   * 予測には、スライス／クロップの位置を示す親座標メタデータが含まれている必要があります
2. 各検出のクロップオフセットを取得します:
   * 各検出のメタデータから親座標を抽出します
   * 各スライス／クロップが元画像内のどこに位置していたかを示すオフセット（x, y位置）を取得します
   * このオフセットを使って、座標をスライス空間から元画像空間へ変換します
3. クロップのメタデータを管理します:
   * 参照画像の寸法に一致するよう、検出メタデータ内の画像サイズを更新します
   * 検出がスケーリングされていないことを検証します（スケーリングされた検出はサポートされません）
   * 正しい座標変換のために、検出へ親座標情報を付与します
4. 座標を元画像空間へ変換します:
   * バウンディングボックス座標（xyxy）をスライス／クロップ座標から元画像座標へ移動します
   * セグメンテーションマスクがある場合は、スライス／クロップ空間から元画像空間へ変換します
   * オフセットを適用して、検出を元画像上の位置に合わせます
5. 変換されたすべての検出を統合します:
   * すべてのスライス／クロップから再整列された検出を1つの検出結果にまとめます
   * すべてのサブ画像の検出を含む統合された検出出力を作成します
6. 重複フィルタリングを適用します（任意）:
   * **none 戦略**: フィルタリングなしで統合されたすべての検出を返します（重複するスライス由来の重複が含まれる場合があります）
   * **NMS（Non-Maximum Suppression）**: IoU が閾値を超えたとき、信頼度の低い検出を除去し、各重複領域ごとに最も信頼度の高い検出のみを保持します
   * **NMM（Non-Maximum Merge）**: 重複する検出を破棄せずに統合し、IoU閾値を超える検出をマージします
7. 統合された検出を返します:
   * 元画像の座標空間で統合された検出結果を出力します
   * 次元数を1つ削減します（複数のスライス検出 → 単一画像の検出）
   * すべての検出は、元画像の寸法と座標を基準に参照されるようになります

このブロックは、画像をスライスし、各スライスを個別に処理し、結果を元に戻して統合する SAHI（Slicing Adaptive Inference）ワークフローに不可欠です。重複するスライスは同じオブジェクトに対して重複した検出を生む可能性があるため、重複フィルタリング（NMS/NMM）でこれらの重複を整理できます。座標変換により、検出座標はスライスではなく元画像に対して正しい位置に配置されます。

## 一般的な使用例

* **SAHI ワークフロー**: 画像スライスからの検出を元画像座標に戻して統合することで SAHI 手法を完成させます（例: SAHI処理からのスライス検出を統合する、スライスからフル画像の検出を再構成する、小物体検出結果を組み合わせる）ことで、SAHI検出ワークフローを有効にします
* **マルチステージ検出**: 動的にクロップされた領域に適用された二次的な高解像度モデルの検出を統合します（例: 粗い検出 → クロップ → 精密検出 → 統合、2段階検出パイプライン、階層型検出ワークフロー）ことで、マルチステージ検出ワークフローを有効にします
* **小物体検出**: 小物体検出のために個別に処理されたスライス画像の検出結果を統合します（例: 航空画像スライスからの検出を統合する、スライス検出結果を組み合わせる、タイル化画像から検出を再構築する）ことで、小物体検出ワークフローを有効にします
* **高解像度処理**: 高解像度画像を小さなチャンクで処理した検出を統合します（例: 衛星画像タイルからの検出を統合する、医用画像領域の結果を組み合わせる、大きな画像セグメントから検出を再構築する）ことで、高解像度検出ワークフローを有効にします
* **座標空間の統一**: 複数の座標空間（スライス／クロップ空間）の検出を、単一の統一された座標空間（元画像空間）へ変換して一貫した処理を行います（例: 検出座標を統一する、座標空間をマージする、検出位置を標準化する）ことで、座標統一ワークフローを有効にします
* **重複領域の処理**: 重複フィルタリングを適用して、重なり合うスライスやクロップからの重複検出を処理します（例: 重複するスライスから重複検出を削除する、重複検出を統合する、重複結果を整理する）ことで、重複解決ワークフローを有効にします

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

このブロックは、スライス／クロップの予測と参照画像を受け取り、統合された検出を生成します:

* **SAHI ワークフローにおける検出モデルの後** Image Slicer → Detection Model → Detections Stitch パターンに従ってスライス検出を統合します（例: SAHI のスライス検出を統合する、フル画像の検出を再構築する、スライス結果を組み合わせる）ことで、SAHI完了ワークフローを有効にします
* **二次検出モデルの後** Dynamic Crop → Detection Model → Detections Stitch パターンに従うマルチステージパイプラインで、クロップされた検出を統合します（例: クロップ領域の検出を統合する、2段階検出結果を組み合わせる、マルチステージ出力を統一する）ことで、マルチステージ検出ワークフローを有効にします
* **可視化ブロックの前** 元画像上で統合された検出結果を可視化するために（例: 統合された検出を可視化する、ステッチされた結果を表示する、統一された検出出力を示す）ことで、可視化ワークフローを有効にします
* **フィルタリングまたは分析ブロックの前** 統合された検出結果を処理するために（例: 統合検出をフィルタリングする、ステッチされた結果を分析する、統一出力を処理する）ことで、分析ワークフローを有効にします
* **シンクまたは保存ブロックの前** 統合された検出結果を保存またはエクスポートするために（例: 統合検出を保存する、ステッチされた結果をエクスポートする、統一出力を保存する）ことで、保存ワークフローを有効にします
* **ワークフロー出力において** 統合された検出を最終ワークフロー出力として提供するために（例: 統合検出を返す、ステッチされた結果を出力する、統一された検出出力を提供する）ことで、出力ワークフローを有効にします

## 要件

このブロックには、参照画像（スライス／クロップの元となった元画像）と、スライス／クロップを処理した検出モデルからの予測が必要です。予測には、元画像内で各スライス／クロップの位置を示す親座標メタデータ（PARENT\_COORDINATES\_KEY）が含まれている必要があります。このブロックは、スケーリングされた検出（親画像に対してリサイズされた検出）をサポートしません。予測は物体検出またはインスタンスセグメンテーションモデルによるものである必要があります。このブロックは3つの重複フィルタリング戦略をサポートします: "none"（フィルタリングなし、重複が含まれる場合あり）、"nms"（Non-Maximum Suppression、信頼度の低い重複検出を除去、デフォルト）、"nmm"（Non-Maximum Merge、重複検出を統合）。IoU閾値（デフォルト0.3）は、フィルタリング対象として検出を重複とみなす基準を決定します。SAHI手法の詳細は次を参照してください: <https://ieeexplore.ieee.org/document/9897990。>

### 型識別子

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

### プロパティ

| **名前**                       | **型**   | **説明**                                                                                                                                                                                                                                                                                                                             | 参照 |
| ---------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`                       | `str`   | このステップの一意の識別子を入力してください。                                                                                                                                                                                                                                                                                                            | ❌  |
| `overlap_filtering_strategy` | `str`   | 重なり合うスライス／クロップからの結果を統合する際の重複検出の扱い方です。'none'：フィルタリングを行わず、すべての検出を保持します（重複領域の重複を含む場合があります）。'nms'（Non-Maximum Suppression、デフォルト）：IoU が閾値を超えたときに信頼度の低い検出を除去し、各重複領域ごとに最も信頼度の高い検出のみを保持します。'nmm'（Non-Maximum Merge）：重複検出を破棄せずに統合し、IoU 閾値を超える検出をマージします。すべての検出を保持したい場合は 'none'、重複を除去したい場合は 'nms'（ほとんどの場合に推奨）、重複検出をまとめたい場合は 'nmm' を使用してください。  | ✅  |
| `iou_threshold`              | `float` | 重複フィルタリングのための Intersection over Union（IoU）閾値。範囲: 0.0 から 1.0。重複フィルタリング戦略が 'nms' または 'nmm' の場合、IoU がこの閾値を上回る検出は重複しているとみなされます。NMS では、閾値を上回る IoU を持つ重複検出は信頼度の低い検出が除去されます。NMM では、閾値を上回る IoU を持つ重複検出が統合されます。低い値（例: 0.2〜0.3）はより強力で、より多くの検出を除去／統合します。高い値（例: 0.5〜0.7）はより寛容で、非常に重複している検出のみを処理します。デフォルトの 0.3 は、重なりのあるスライスを伴うほとんどの用途でうまく機能します。 | ✅  |

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

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

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

<details>

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

* 入力
  * `reference_image` ([*`image`*](/workflows/ja/gaido/developer-guide/kinds/image.md)): 入力予測を生成するためにスライスまたはクロップされた元の参照画像です。この画像は、統合された検出の対象座標空間と画像サイズを決定するために使用されます。すべての検出座標は、この参照画像の座標系に一致するよう変換されます。正しい座標整列を確保するため、Image Slicer または Dynamic Crop ブロックに渡したのと同じ画像をここで使用してください。。
  * `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)*]*): 画像スライスまたはクロップを処理した検出モデルからのモデル予測（物体検出またはインスタンスセグメンテーション）です。これらの予測には、元画像内で各スライス／クロップの位置を示す親座標メタデータが含まれている必要があります。予測は複数のスライス／クロップから収集され、1つの統合された検出結果にまとめられます。このブロックは、座標をスライス／クロップ空間から元画像空間へ変換し、すべての検出を統合します。。
  * `overlap_filtering_strategy` ([*`string`*](/workflows/ja/gaido/developer-guide/kinds/string.md)): 重なり合うスライス／クロップからの結果を統合する際の重複検出の扱い方です。'none'：フィルタリングを行わず、すべての検出を保持します（重複領域の重複を含む場合があります）。'nms'（Non-Maximum Suppression、デフォルト）：IoU が閾値を超えたときに信頼度の低い検出を除去し、各重複領域ごとに最も信頼度の高い検出のみを保持します。'nmm'（Non-Maximum Merge）：重複検出を破棄せずに統合し、IoU 閾値を超える検出をマージします。すべての検出を保持したい場合は 'none'、重複を除去したい場合は 'nms'（ほとんどの場合に推奨）、重複検出をまとめたい場合は 'nmm' を使用してください。
  * `iou_threshold` ([*`float_zero_to_one`*](/workflows/ja/gaido/developer-guide/kinds/float-zero-to-one.md)): 重複フィルタリングのための Intersection over Union（IoU）閾値。範囲: 0.0 から 1.0。重複フィルタリング戦略が 'nms' または 'nmm' の場合、IoU がこの閾値を上回る検出は重複しているとみなされます。NMS では、閾値を上回る IoU を持つ重複検出は信頼度の低い検出が除去されます。NMM では、閾値を上回る IoU を持つ重複検出が統合されます。低い値（例: 0.2〜0.3）はより強力で、より多くの検出を除去／統合します。高い値（例: 0.5〜0.7）はより寛容で、非常に重複している検出のみを処理します。デフォルトの 0.3 は、重なりのあるスライスを伴うほとんどの用途でうまく機能します。
* 出力
  * `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`.

</details>

<details>

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

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/detections_stitch@v1",
	    "reference_image": "$inputs.image",
	    "predictions": "$steps.object_detection.predictions",
	    "overlap_filtering_strategy": "none",
	    "iou_threshold": 0.2
	}
```

</details>
