> 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/identify-outliers.md).

# 外れ値を識別

von Mises-Fisher統計分布解析を使用して、前のデータと比較した外れ値の埋め込みを特定し、現在の埋め込みベクトルを履歴埋め込みのスライディングウィンドウと比較することで、異常、通常とは異なるパターン、または正常な挙動からの逸脱を検出し、品質管理、異常検知、データサンプリングのワークフローに役立てます。

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

このブロックは、方向統計を使用して埋め込みベクトルを履歴データと統計的に比較することで外れ値を検出します。ブロックは:

1. 現在のデータポイントの特徴を表す埋め込みベクトルを受け取ります
2. 埋め込みを単位長に正規化します:
   * 埋め込みを方向解析用の単位ベクトル（長さ = 1）に変換します
   * 距離ベースの指標ではなく、角度／方向統計を用いた比較を可能にします
   * ゼロベクトルは正規化をスキップして適切に処理します
3. サンプル数とウォームアップ状態を追跡します:
   * 処理した埋め込みごとにサンプルカウンタを増やします
   * まだウォームアップ期間中かどうかを判定します（samples < warmup パラメータ）
   * ウォームアップ中は、ベースラインを確立するために外れ値は識別されません
4. 履歴埋め込みのスライディングウィンドウを保持します:
   * 正規化された埋め込みを、window\_size まで増加するバッファに保存します
   * バッファが window\_size を超えると、最も古い埋め込みを削除します（FIFO）
   * 統計比較のために最近のデータのローリング履歴を作成します
5. ウォームアップ完了時にフォン・ミーゼス・フィッシャー（vMF）分布パラメータを当てはめます:
   * **平均方向（mu）**: すべての履歴埋め込みの平均方向を計算します
   * **集中度パラメータ（kappa）**: 埋め込みが平均の周囲にどれだけ密集しているかを測定します
   * 統計的推定を使用して、埋め込み方向の分布をモデル化します
   * vMF分布は、超球面上の方向データ（単位ベクトル）に最適です
6. 現在の埋め込みの整合スコアを計算します:
   * 現在の正規化埋め込みと平均方向ベクトルの内積を計算します
   * 現在の埋め込みが典型的な方向とどれだけ整合しているかを測定します
   * 値が高いほど基準への整合性が高く、値が低いほど逸脱を示します
7. 現在の埋め込みの経験的パーセンタイルを計算します:
   * 現在の整合スコアを、平均方向に対するすべての履歴埋め込みのスコアと比較します
   * 履歴スコアの中で現在の埋め込みの整合スコアの順位を付けます
   * 現在の埋め込みのパーセンタイル位置（0.0 = 最低、1.0 = 最高）を決定します
8. パーセンタイル閾値に基づいて外れ値かどうかを判定します:
   * パーセンタイルが threshold\_percentile 未満（例: 下位5%）なら外れ値としてフラグを立てます
   * パーセンタイルが（1 - threshold\_percentile）より上（例: 上位5%）なら外れ値としてフラグを立てます
   * 基準からの極端な低下と極端な上昇の両方の逸脱を検出します
9. 3つの出力を返します:
   * **is\_outlier**: 現在の埋め込みが外れ値かどうかを示すブールフラグ
   * **percentile**: 埋め込みが履歴データの中でどの位置にあるかを表す浮動小数点値（0.0〜1.0）
   * **warming\_up**: まだウォームアップ期間中かどうかを示すブールフラグ（ウォームアップ後は常に False）

このブロックは、超球面上の方向データ（単位ベクトル）向けに設計された von Mises-Fisher 分布解析を使用します。そのため、方向が大きさより重要な高次元埋め込みに非常に適しています。スライディングウィンドウ方式により、統計モデルは最近の傾向に適応しつつ、パーセンタイルベースの検出は履歴パターンと比べて異常に異なる埋め込みを識別します。低いパーセンタイルは典型的なパターンとの整合が弱い埋め込みを示し、高いパーセンタイルは異常に整合性が高い、または正の方向に異なる埋め込みを示します。

## 一般的な使用例

* **異常検知**: 通常のデータから逸脱する不自然な画像、物体、またはパターンを検出します（例: 不自然な製品バリエーションの特定、異常な挙動の検出、予期しないパターンのフラグ付け）し、異常検知ワークフローを可能にします
* **品質管理**: 製造や生産における不良品や異常な品目を特定します（例: 製品不良の検出、品質問題の特定、製造異常のフラグ付け）し、品質管理ワークフローを可能にします
* **データサンプリング**: 手動レビューやさらなる分析のために、興味深いまたは異常なデータポイントを特定します（例: ラベル付け用に不自然な画像をサンプリングする、モデル改善のためのエッジケースを特定する、分析用の興味深いデータを選択する）し、インテリジェントなデータサンプリングワークフローを可能にします
* **変化検出**: データパターンが履歴上の基準から大きく変化したときに検出します（例: シーンの変化を検出する、パターンのシフトを特定する、重大な変動にフラグを付ける）し、変化検出ワークフローを可能にします
* **モデル監視**: 埋め込みが学習時の分布から逸脱したときに検出することでモデル性能を監視します（例: 分布シフトの検出、分布外データの特定、モデルドリフトの監視）し、モデル監視ワークフローを可能にします
* **コンテンツフィルタリング**: 期待されるパターンと異なる不自然または不適切なコンテンツを特定します（例: 不自然なコンテンツの検出、不適切な素材へのフラグ付け、コンテンツ異常の特定）し、コンテンツフィルタリングワークフローを可能にします

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

このブロックは埋め込みを受け取り、is\_outlier、percentile、warming\_up を出力します:

* **埋め込みモデルブロックの後** （CLIP、Perception Encoder など）を用いて埋め込み外れ値を分析します（例: CLIP埋め込みから外れ値を特定、Perception Encoder の外れ値を分析、埋め込みから異常を検出）し、埋め込みから外れ値へのワークフローを可能にします
* **分類または検出ブロックの後** 埋め込みと組み合わせて異常な予測を特定します（例: 異常な検出を特定、異常な分類にフラグ、外れ値予測を検出）し、予測から外れ値へのワークフローを可能にします
* **ロジックブロックの前** Continue If のような機能を使って、外れ値検出に基づいて判断します（例: 外れ値が検出されたら続行、外れ値の状態に基づいてフィルタリング、異常時にアクションをトリガー）し、外れ値ベースの意思決定ワークフローを可能にします
* **通知ブロックの前** 外れ値検出でアラートを出します（例: 異常を通知、通常とは異なるデータを通知、外れ値でアラートをトリガー）し、外れ値ベースの通知ワークフローを可能にします
* **データ保存ブロックの前** 外れ値情報を記録します（例: 外れ値データをログに残す、異常統計を保存する、通常とは異なるデータポイントを記録する）し、外れ値データのログ記録ワークフローを可能にします
* **品質管理パイプラインでは** 外れ値検出が品質保証の一部である場合（例: 品質パイプラインで外れ値を除外する、本番ワークフローで問題を特定する、処理チェーンで問題を検出する）に、品質管理ワークフローを可能にします

## 要件

このブロックは入力として埋め込みを必要とします（通常は CLIP や Perception Encoder などの埋め込みモデルブロックから）。このブロックはワークフローの実行をまたいで内部状態を保持し、履歴埋め込みのスライディングウィンドウを蓄積します。ウォームアップ期間中（最初の `ウォームアップ` サンプル）には外れ値は識別されず、ブロックは is\_outlier=False と percentile=0.5 を返します。ウォームアップ後、ブロックは少なくとも `ウォームアップ` 個の埋め込み（最大 `window_size` 個の埋め込み）を使用して統計的な基準値を確立します。threshold\_percentile パラメータ（0.0〜1.0）が感度を制御します。低い値（例: 0.01）は極端な外れ値のみを検出し、高い値（例: 0.1）はより中程度の逸脱を検出します。ブロックは一貫した埋め込みモデルで最もよく機能し、データの想定変動に応じて threshold\_percentile の調整が必要になる場合があります。。

### 型識別子

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

### プロパティ

| **名前**                 | **型**   | **説明**                                                                                                                                                                                                                                              | 参照 |
| ---------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`                 | `str`   | ワークフロー内のステップの一意の名前。                                                                                                                                                                                                                                 | ❌  |
| `threshold_percentile` | `float` | 外れ値検出のためのパーセンタイル閾値。範囲は 0.0〜1.0 です。このパーセンタイル未満または（1 - threshold\_percentile）を上回る埋め込みは外れ値としてフラグ付けされます。低い値（例: 0.01）は極端な外れ値のみを検出し、非常に厳格です。高い値（例: 0.1）はより中程度の逸脱を検出し、より感度が高くなります。デフォルトの 0.05 は下位5%と上位5%を外れ値とみなします。データの想定変動に応じて調整してください。。                  | ✅  |
| `ウォームアップ`              | `整数`    | 外れ値検出を開始する前に必要な初期データ点の数です。ウォームアップ中は、基準を確立するために外れ値は識別されません（is\_outlier=False）。統計解析には少なくとも 2 が必要です。一般的な範囲: 3〜100サンプル。値が大きいほど基準は安定しますが、外れ値検出は遅れます。値が小さいほど検出は速くなりますが、初期の精度は低くなる場合があります。。                                                                | ✅  |
| `window_size`          | `整数`    | スライディングウィンドウで保持する履歴埋め込みの最大数です。ブロックは、統計比較のために最新の window\_size 個の埋め込みを保持します。これを超えると、最も古い埋め込みが削除されます（FIFO）。大きなウィンドウはより安定した統計を提供しますが、分布変化への適応は遅くなります。小さなウィンドウはより速く適応しますが、安定性は低くなる場合があります。無制限ウィンドウにするには None に設定します（すべての履歴データを使用）。一般的な範囲: 10〜100個の埋め込み。。 | ✅  |

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

### ランタイム互換性

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

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

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

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

<details>

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

* 入力
  * `埋め込み` ([*`埋め込み`*](/workflows/ja/gaido/developer-guide/kinds/embedding.md)): 現在のデータポイントの特徴を表す埋め込みベクトルです。通常は CLIP や Perception Encoder のような埋め込みモデルから取得されます。埋め込みは、von Mises-Fisher 分布を用いた方向統計解析のために単位長に正規化されます。任意の次元の数値ベクトルでなければなりません。。
  * `threshold_percentile` ([*`float_zero_to_one`*](/workflows/ja/gaido/developer-guide/kinds/float-zero-to-one.md)): 外れ値検出のためのパーセンタイル閾値。範囲は 0.0〜1.0 です。このパーセンタイル未満または（1 - threshold\_percentile）を上回る埋め込みは外れ値としてフラグ付けされます。低い値（例: 0.01）は極端な外れ値のみを検出し、非常に厳格です。高い値（例: 0.1）はより中程度の逸脱を検出し、より感度が高くなります。デフォルトの 0.05 は下位5%と上位5%を外れ値とみなします。データの想定変動に応じて調整してください。。
  * `ウォームアップ` ([*`整数`*](/workflows/ja/gaido/developer-guide/kinds/integer.md)): 外れ値検出を開始する前に必要な初期データ点の数です。ウォームアップ中は、基準を確立するために外れ値は識別されません（is\_outlier=False）。統計解析には少なくとも 2 が必要です。一般的な範囲: 3〜100サンプル。値が大きいほど基準は安定しますが、外れ値検出は遅れます。値が小さいほど検出は速くなりますが、初期の精度は低くなる場合があります。。
  * `window_size` ([*`整数`*](/workflows/ja/gaido/developer-guide/kinds/integer.md)): スライディングウィンドウで保持する履歴埋め込みの最大数です。ブロックは、統計比較のために最新の window\_size 個の埋め込みを保持します。これを超えると、最も古い埋め込みが削除されます（FIFO）。大きなウィンドウはより安定した統計を提供しますが、分布変化への適応は遅くなります。小さなウィンドウはより速く適応しますが、安定性は低くなる場合があります。無制限ウィンドウにするには None に設定します（すべての履歴データを使用）。一般的な範囲: 10〜100個の埋め込み。。
* 出力
  * `is_outlier` ([`boolean`](/workflows/ja/gaido/developer-guide/kinds/boolean.md)) : ブールフラグ。
  * `percentile` ([`float_zero_to_one`](/workflows/ja/gaido/developer-guide/kinds/float-zero-to-one.md)): `float` 範囲内の値 `[0.0, 1.0]`.
  * `warming_up` ([`boolean`](/workflows/ja/gaido/developer-guide/kinds/boolean.md)) : ブールフラグ。

</details>

<details>

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

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/identify_outliers@v1",
	    "embedding": "$steps.clip.embedding",
	    "threshold_percentile": 0.05,
	    "warmup": 3,
	    "window_size": 32
	}
```

</details>
