> 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. 参照画像とスライス／クロップ予測を受け取ります。
   * スライスまたはクロップされた元の参照画像を受け取ります
   * 各スライス／クロップを処理した検出モデルからの予測を受け取ります
   * 予測には、スライス／クロップの位置を示す親座標メタデータが含まれている必要があります
2. 各検出のクロップオフセットを取得します。
   * 各検出のメタデータから親座標を抽出します
   * 各スライス／クロップが元画像内のどこにあったかを示すオフセット（x, y位置）を取得します
   * このオフセットを使用して、座標をスライス空間から元画像空間へ変換します
3. クロップメタデータを管理します。
   * 検出メタデータ内の画像サイズを参照画像のサイズに合わせて更新します
   * 検出がスケールされていないことを検証します（スケーリングされた検出はサポートされません）
   * 適切な座標変換のために、検出に親座標情報を付与します
4. 座標を元画像空間に変換します。
   * バウンディングボックス座標（xyxy）をスライス／クロップ座標から元画像座標へ移動します
   * （存在する場合）セグメンテーションマスクをスライス／クロップ空間から元画像空間へ変換します
   * オフセットを適用して、検出結果を元画像上の位置に合わせます
5. 変換されたすべての検出結果を結合します。
   * すべてのスライス／クロップから再位置合わせされた検出結果を1つに結合します
   * すべてのサブ画像の検出結果を含む統合された検出出力を作成します
6. 重複フィルタリングを適用します（任意）。
   * **none 戦略**：フィルタリングなしで結合されたすべての検出結果を返します（重なり合うスライスからの重複が含まれる場合があります）
   * **NMS（非最大抑制）**：IoUが閾値を超えたときに低信頼度の検出を除去し、各重複領域ごとに最も信頼度の高い検出のみを保持します
   * **NMM（非最大マージ）**：重複する検出を破棄する代わりに結合し、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、デフォルト。IoUが閾値を超えた低信頼度の重複検出を除去）、「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では、閾値を超える重複検出は信頼度の低い検出が除去されます。NMMでは、閾値を超える重複検出がマージされます。低い値（例：0.2〜0.3）はより強く作用し、より多くの検出を除去／マージします。高い値（例：0.5〜0.7）はより寛容で、強く重なっている検出のみを処理します。デフォルトの0.3は、重なり合うスライスを伴う多くのユースケースでうまく機能します。                        | ✅  |

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

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

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

<details>

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

* 入力
  * `reference_image` ([*`画像`*](/workflows/ja/gaido/developer-guide/kinds/image.md)）：入力予測を生成するためにスライス／クロップされた元の参照画像です。この画像は、結合された検出結果の対象座標空間と画像サイズを決定するために使用されます。すべての検出座標は、この参照画像の座標系に一致するよう変換されます。適切な座標の整合性を確保するため、Image Slicer または Dynamic Crop ブロックに渡したのと同じ画像をここで使用してください。
  * `predictions` (*Union\[*[*`instance_segmentation_prediction`*](/workflows/ja/gaido/developer-guide/kinds/instance-segmentation-prediction.md)*,* [*`object_detection_prediction`*](/workflows/ja/gaido/developer-guide/kinds/object-detection-prediction.md)*]*）：画像スライスまたはクロップを処理した検出モデルからのモデル予測（物体検出またはインスタンスセグメンテーション）です。これらの予測には、各スライス／クロップの元画像内での位置を示す親座標メタデータが含まれている必要があります。予測は複数のスライス／クロップから収集され、単一の統合された検出結果に結合されます。このブロックは、座標をスライス／クロップ空間から元画像空間へ変換し、すべての検出を結合します。
  * `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では、閾値を超える重複検出は信頼度の低い検出が除去されます。NMMでは、閾値を超える重複検出がマージされます。低い値（例：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>
