> 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/video-processing/detections-stabilizer.md).

# 検出安定化

Kalman フィルタリングでオブジェクトの速度を予測し、指数移動平均でバウンディングボックス位置を平滑化し、ギャップ補完で一時的に欠落した検出を復元することで、ビデオフレーム間の追跡検出におけるノイズとちらつきを低減する平滑化アルゴリズムを適用します。より安定したトラッキングとより滑らかな可視化ワークフローを実現します。

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

このブロックは、ジッターを低減し、位置を平滑化し、オブジェクトが検出から一時的に消えたときにギャップを埋めることで、追跡検出を安定化します。このブロックは：

1. 一意のトラッカーIDを持つ追跡済み検出予測と、埋め込みビデオメタデータを含む画像を受け取ります
2. 画像からビデオメタデータを抽出します：
   * video\_metadata にアクセスして video\_identifier を取得します
   * video\_identifier を使用して、動画ごとに個別の安定化状態を維持します
3. 検出にトラッカーIDがあることを検証します（フレーム間でオブジェクトの移動を追跡するために必要）
4. 動画の安定化状態を初期化または取得します：
   * 動画ごとに各 tracker\_id の最後に確認された検出結果のキャッシュを保持します
   * 動画ごとに速度予測用の Kalman フィルタを作成または取得します
   * video\_identifier を使用して動画ごとに個別の状態を保存します
5. 既存トラックのオブジェクト速度を測定します：
   * 現在フレームのバウンディングボックス中心を前フレームの中心と比較して速度を計算します
   * 現在フレームと前フレームの両方に存在するオブジェクトについて、変位（位置の変化）を算出します
   * 速度測定値は Kalman フィルタの更新に使用されます
6. 速度測定値で Kalman フィルタを更新します：
   * 過去の測定値に基づいて平滑化された速度を予測するために Kalman フィルタリングを使用します
   * 平滑化ウィンドウサイズ（smoothing\_window\_size）で制御される速度測定値のスライディングウィンドウを保持します
   * Kalman フィルタ内で指数移動平均を適用して速度推定値を平滑化します
   * 検出の不正確さやフレーム間の変動によるノイズを除去します
7. 現在フレームに存在するオブジェクトのバウンディングボックスを平滑化します：
   * バウンディングボックス座標に指数移動平均平滑化を適用します
   * bbox\_smoothing\_coefficient を使用して前フレームの位置と現在フレームの位置を組み合わせます
   * 式: smoothed\_bbox = alpha \* current\_bbox + (1 - alpha) \* previous\_bbox
   * 検出のばらつきによるジッターとちらつきを低減します
8. 欠落した検出の位置を予測します：
   * Kalman フィルタで予測された速度を使用して、消失したオブジェクトの位置を推定します
   * 予測された速度を最後に確認されたバウンディングボックス位置に適用します
   * 現在フレームで一時的に欠落していた検出を復元することでギャップを埋めます
   * 指数移動平均を使用して予測位置を平滑化します
9. トラッキング状態を管理します：
   * 次フレームの計算用に、現在フレームの検出結果でキャッシュを更新します
   * smoothing\_window\_size フレームより長く欠落しているオブジェクトのトラッキングエントリを削除します
   * video\_identifier ごとに個別の状態を保持します
10. 安定化された検出結果をマージして返します：
    * 平滑化された検出結果（現在フレーム）と予測された検出結果（欠落オブジェクト）を組み合わせます
    * ノイズが低減され、ギャップが埋められた安定化済みの検出オブジェクトを出力します
    * すべての検出は一貫した追跡のために tracker ID を保持します

このブロックは、相補的な 2 つの平滑化手法を使用します： **Kalman フィルタリング** 速度予測用（オブジェクトがどれだけ速く移動しているかの推定）と **指数移動平均** 位置の平滑化（バウンディングボックスのジッターを低減）用です。Kalman フィルタは速度測定の履歴を保持し、統計的推定を用いて将来の速度を予測しながらノイズを除去します。指数移動平均は、現在位置と前回位置をブレンドすることでバウンディングボックス座標を平滑化します。ギャップ補完は予測速度を使って一時的に消えた検出を復元し、トラックの連続性維持に役立ちます。注意: このブロックは、オブジェクトが一貫して検出されない場合でもギャップを埋めようとするため、不安定なトラッカーに対して短命なバウンディングボックスを生成することがあります。

## 一般的な使用例

* **動画可視化**: より滑らかな可視化のために動画注釈のちらつきとジッターを低減します（例: バウンディングボックスの動きを滑らかにする、注釈ノイズを低減する、動画可視化品質を向上させる）ことで、安定した動画可視化ワークフローを実現します
* **トラッキング安定性**: 検出にノイズや不整合がある場合のトラッキング安定性を向上させます（例: ノイジーな検出を安定化する、トラッキングジッターを低減する、トラッキング連続性を向上させる）ことで、安定したトラッキングワークフローを実現します
* **一時的な遮蔽の処理**: オブジェクトが一時的に遮蔽されたり検出から欠落したりした場合にギャップを埋めます（例: 短時間の遮蔽中もトラックを維持する、検出ギャップを埋める、トラッキング連続性を保持する）ことで、遮蔽処理ワークフローを実現します
* **リアルタイム監視**: リアルタイム監視アプリケーションでの視覚品質を向上させます（例: ライブ動画注釈を滑らかにする、監視表示のちらつきを低減する、リアルタイム可視化を改善する）ことで、安定したリアルタイム監視ワークフローを実現します
* **分析精度**: 安定した検出位置に依存する分析計算のノイズを低減します（例: 位置ベースの分析を改善する、測定ノイズを低減する、移動計算を安定化する）ことで、正確な分析ワークフローを実現します
* **品質管理**: 下流処理のための検出品質を向上させます（例: 分析前に検出を平滑化する、より良い処理のためにノイズを低減する、他のブロックへの入力を安定化する）ことで、品質向上ワークフローを実現します

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

このブロックは追跡検出と画像を受け取り、安定化された tracked\_detections を生成します：

* **Byte Trackerブロックの後** 追跡検出を安定化するために（例: 追跡対象の位置を平滑化する、トラッキングジッターを低減する、トラッキングギャップを埋める）ことで、トラッキング安定化ワークフローを実現します
* **物体検出またはインスタンスセグメンテーションブロックの後** 追跡を有効にして検出を安定化するために（例: 検出位置を平滑化する、検出ノイズを低減する、トラッキング安定性を向上させる）ことで、検出安定化ワークフローを実現します
* **可視化ブロックの前** 安定化された検出を表示するために（例: 滑らかなバウンディングボックスを可視化する、安定した注釈を表示する、ギャップ補完済みの検出を示す）ことで、安定した可視化ワークフローを実現します
* **分析ブロックの前で** 分析用の安定した入力を提供するために（例: 安定化された位置を分析する、滑らかな動きデータを処理する、ギャップ補完済みの検出を扱う）ことで、安定した分析ワークフローを実現します
* **速度または軌跡分析ブロックの前に** 測定精度を向上させるために（例: 安定した位置から速度を計算する、滑らかな軌跡から経路を分析する、ギャップ補完済みの検出から測定する）ことで、正確な測定ワークフローを実現します
* **ビデオ処理パイプラインでは** 下流処理で検出の安定性が必要な場合に（例: 処理チェーン内で検出を安定化する、分析用の品質を向上させる、パイプライン内のノイズを低減する）ことで、安定した動画処理ワークフローを実現します

## 要件

このブロックは tracker\_id 情報を含む追跡済み検出を必要とします（検出は Byte Tracker のようなトラッキングブロックから出力されている必要があります）。画像の video\_metadata には、動画ごとに個別の安定化状態を維持するための video\_identifier が含まれている必要があります。このブロックは各動画についてフレーム間で永続的な安定化状態を保持するため、フレームが順次処理される動画ワークフローで使用してください。最適な安定化のために、検出は有効な tracker ID とともにフレーム間で一貫して提供される必要があります。smoothing\_window\_size は、Kalman フィルタリングに使用される過去の速度測定値の数と、欠落した検出をどれだけ長く保持するかを制御します。bbox\_smoothing\_coefficient（0〜1）は、現在位置と前回位置のバランスを制御します。値が低いほど平滑化は強くなりますが変化への応答は遅くなり、高いほど平滑化は弱くなりますが応答は速くなります。注意: このブロックは、オブジェクトが一貫して検出されない場合でもギャップを埋めようとするため、不安定なトラッカーに対して短命なバウンディングボックスを生成することがあります。

### 型識別子

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

### プロパティ

| **名前**                       | **型**   | **説明**                                                                                                                                                                                                                                                                                   | 参照 |
| ---------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`                       | `str`   | このステップの一意の識別子を入力してください。                                                                                                                                                                                                                                                                  | ❌  |
| `smoothing_window_size`      | `整数`    | Kalman フィルタにおける速度平滑化用のスライディングウィンドウのサイズで、使用される過去の速度測定値の数を制御します。また、削除されるまで欠落検出をどれだけ保持するかも決定します。値が大きいほど平滑化は強くなりますが、変化への適応は遅くなります。値が小さいほど平滑化は弱くなりますが、適応は速くなります。このフレーム数を超えて欠落した検出は、トラッキング状態から削除されます。一般的な範囲: 3〜10 フレーム..                                                                       | ✅  |
| `bbox_smoothing_coefficient` | `float` | バウンディングボックス位置平滑化のための指数移動平均係数（alpha）で、範囲は 0.0〜1.0 です。現在と前回のバウンディングボックス位置のブレンドを制御します: smoothed\_bbox = alpha \* current + (1-alpha) \* previous。値が低い（0 に近い）ほど平滑化は強くなり、変化への応答は遅く、ジッターは少なくなります。値が高い（1 に近い）ほど平滑化は弱くなり、変化への応答は速く、ジッターは多くなります。デフォルトは 0.2 で、滑らかさと応答性のバランスを取ります。一般的な範囲: 0.1〜0.5.. | ✅  |

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

### ランタイム互換性

`soft` - ランタイム `hosted_serverless`, `dedicated_deployment`；実行 `リモート`; 入力 `動画` このブロックは、プロセスメモリ内に動画ごとの状態を保持します（video\_metadata.video\_identifier をキーとする）。ステートレスまたは複数レプリカのHTTPランタイムでリモートステップ実行を行うと、連続するリクエストが別々のワーカープロセスによって処理される可能性があるため、呼び出し間で状態がリセットされ、追跡／カウント／集計には意味のない出力になります。安定したフレーム間結果を得るには、永続的な WebRTC セッションでローカルステップ実行を使用してください。

`soft` - 入力 `image` このブロックは、動画または繰り返しフレームのワークフローからの時間的コンテキストに依存します。静止画像／写真では、追跡、比較、集計、可視化に使える意味のある履歴がないため、このブロックの利点はほとんど、またはまったくありません。

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

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

<details>

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

* 入力
  * `image` ([*`image`*](/workflows/ja/gaido/developer-guide/kinds/image.md)): ビデオメタデータが埋め込まれた画像。video\_metadata には、動画ごとに個別の安定化状態を維持するための video\_identifier が含まれています。フレーム間で永続的な状態を管理するために必須です..
  * `検出` (*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)*]*): 追跡対象オブジェクトの検出またはインスタンスセグメンテーション予測。トラッキングブロックからの tracker\_id 情報を含める必要があります。このブロックは、速度予測に Kalman フィルタリング、位置平滑化に指数移動平均、欠落検出のギャップ補完を適用します。出力検出はノイズとジッターが低減され、安定化されます..
  * `smoothing_window_size` ([*`整数`*](/workflows/ja/gaido/developer-guide/kinds/integer.md)): Kalman フィルタにおける速度平滑化用のスライディングウィンドウのサイズで、使用される過去の速度測定値の数を制御します。また、削除されるまで欠落検出をどれだけ保持するかも決定します。値が大きいほど平滑化は強くなりますが、変化への適応は遅くなります。値が小さいほど平滑化は弱くなりますが、適応は速くなります。このフレーム数を超えて欠落した検出は、トラッキング状態から削除されます。一般的な範囲: 3〜10 フレーム..
  * `bbox_smoothing_coefficient` ([*`float_zero_to_one`*](/workflows/ja/gaido/developer-guide/kinds/float-zero-to-one.md)): バウンディングボックス位置平滑化のための指数移動平均係数（alpha）で、範囲は 0.0〜1.0 です。現在と前回のバウンディングボックス位置のブレンドを制御します: smoothed\_bbox = alpha \* current + (1-alpha) \* previous。値が低い（0 に近い）ほど平滑化は強くなり、変化への応答は遅く、ジッターは少なくなります。値が高い（1 に近い）ほど平滑化は弱くなり、変化への応答は速く、ジッターは多くなります。デフォルトは 0.2 で、滑らかさと応答性のバランスを取ります。一般的な範囲: 0.1〜0.5..
* 出力
  * `tracked_detections` (*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/stabilize_detections@v1",
	    "image": "<block_does_not_provide_example>",
	    "detections": "$steps.object_detection_model.predictions",
	    "smoothing_window_size": 3,
	    "bbox_smoothing_coefficient": 0.2
	}
```

</details>
