> 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/timein-zone.md).

# ゾーン内時間

## v3

定義された1つ以上のポリゴンゾーン内で追跡対象オブジェクトが費やした時間を計算・追跡し、特定エリアにおけるオブジェクトの存在時間を測定し（オブジェクトがいずれかのゾーンに存在すれば「ゾーン内」とみなす複数ゾーンをサポート）、ゾーン所属に基づいて検出をフィルタリングし、オブジェクトがゾーンを離れたときに時間追跡をリセットし、ゾーンベースの分析、滞在時間分析、存在監視のワークフローを有効にします。

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

このブロックは、各ユニークなtrack IDの入退出時刻を追跡することで、各追跡対象オブジェクトが1つ以上の定義済みポリゴンゾーン内にどれだけ長く滞在しているかを測定します。このブロックは複数ゾーンをサポートし、定義されたゾーンのいずれかに存在すればオブジェクトを「ゾーン内」とみなします。このブロックは次のとおりです:

1. track ID付きの追跡済み検出予測、埋め込み動画メタデータを含む画像、およびポリゴンゾーン定義（単一ゾーンまたはゾーンのリスト）を受け取ります
2. 画像からビデオメタデータを抽出します：
   * WorkflowImageDataオブジェクトからvideo\_metadataにアクセスします
   * fps、frame\_number、frame\_timestamp、video\_identifier、および動画ソース情報を抽出します
   * video\_identifierを使用して、異なる動画ごとに個別の追跡状態を維持します
3. 検出にtrack IDがあることを検証します（tracker\_idが存在する必要があります）:
   * 検出がトラッキングブロック（例: Byte Tracker）由来であることを要求します
   * 各オブジェクトは、フレーム間で持続する一意のtracker\_idを持っている必要があります
   * tracker\_idがない場合はエラーを発生させます
4. ゾーン入力をポリゴンのリストに正規化します:
   * 単一のポリゴンゾーンまたはポリゴンゾーンのリストを受け付けます
   * 一貫した処理のために、単一ポリゴンを自動的にリストで包みます
   * すべてのゾーンについてネストの深さと座標形式を検証します
   * 柔軟なゾーン入力形式（単一ゾーンまたは複数ゾーン）を可能にします
5. 動画用のポリゴンゾーンを初期化または取得します:
   * 各ユニークなゾーンの組み合わせごとに、ゾーン座標からPolygonZoneオブジェクトのリストを作成します
   * ゾーン座標を検証します（各ゾーンは、少なくとも3点からなるリストで、各点は2つの座標を持つ必要があります）
   * OrderedDictとゾーンキャッシュ（最大100のゾーン組み合わせ）にゾーン設定を保存します
   * キャッシュ参照には、video\_identifierとゾーン座標を組み合わせたゾーンキーを使用します
   * キャッシュが100のゾーン組み合わせを超えた場合、FIFOで削除します
   * ゾーン検出のためのトリガーアンカー点（例: CENTER、BOTTOM\_CENTER）を設定します
6. 動画用の時間追跡状態を初期化または取得します:
   * 各track\_idがいついずれかのゾーンに入ったかを追跡する辞書を保持します
   * video\_identifierを使用して、動画ごとにエントリタイムスタンプを保存します
   * 各動画ごとに個別の追跡状態を維持します
7. 時間測定のための現在時刻を計算します:
   * 動画ファイルの場合: frame\_number / fpsとしてタイムスタンプを計算します
   * ストリーミング動画の場合: メタデータのframe\_timestampを使用します
   * 継続時間計算のために正確な時間測定を提供します
8. どの検出がいずれかのゾーン内にあるかを確認します:
   * ポリゴンゾーントリガーを使用して、各検出をすべてのポリゴンゾーンに対してテストします
   * ゾーン所属マトリクス（ゾーン×検出）を作成します
   * 論理OR演算を使用します。オブジェクトは、いずれかのゾーンに存在すれば「ゾーン内」とみなされます
   * triggering\_anchorは、バウンディングボックス上のどの点をチェックするかを決定します（CENTER、BOTTOM\_CENTERなど）
   * 各検出について、いずれかのゾーンへの所属を示すブール値を返します
9. 各追跡対象オブジェクトの時間追跡を更新します:
   * **いずれかのゾーンに入ったオブジェクトに対して**: まだ追跡されていなければ、入場タイムスタンプを記録します
   * **いずれかのゾーン内にあるオブジェクトに対して**: 経過時間を current\_timestamp - entry\_timestamp として計算します
   * **すべてのゾーンから出たオブジェクトに対して**:
     * : reset\_out\_of\_zone\_detections が True の場合、入場タイムスタンプを削除します（0にリセット）
     * : reset\_out\_of\_zone\_detections が False の場合、入場タイムスタンプを保持します（追跡を継続）
10. ゾーン外検出を処理します:
    * **remove\_out\_of\_zone\_detections が True の場合**: すべてのゾーン外の検出を出力から除外します
    * **remove\_out\_of\_zone\_detections が False の場合**: ゾーン外の検出を time = 0 として含めます
11. 各検出にtime\_in\_zone情報を追加します:
    * 各検出にtime\_in\_zoneの値（秒単位）をメタデータとして付与します
    * いずれかのゾーン内のオブジェクト: 時間は任意のゾーン内で過ごした継続時間を表します
    * すべてのゾーン外のオブジェクト: 時間は0（リセットされていない場合）または未定義（削除された場合）です
12. time\_in\_zone情報を含む検出を返します:
    * time\_in\_zoneメタデータで強化された追跡済み検出を出力します
    * remove\_out\_of\_zone\_detectionsの設定に応じてフィルタリングあり／なし
    * 元の検出プロパティをすべて保持しつつ、時間追跡情報を追加します

このブロックはフレーム間で永続的な追跡状態を維持し、複数フレームにわたっていずれかのゾーン内にとどまるオブジェクトの累積時間を正確に測定できます。時間は、オブジェクトが最初にいずれかのゾーンに入った時点（track\_idに基づく）から現在のフレームまで測定され、リアルタイムの継続時間追跡を提供します。複数ゾーンが指定されている場合、オブジェクトはアンカーポイントがいずれかのゾーン内にあれば「ゾーン内」とみなされ、複数エリアを単一の結合ゾーンとして追跡できます。ゾーンキャッシュはFIFO削除を用いて動画ごとの複数のゾーン設定を効率的に管理し、メモリ使用量を抑えます。triggering\_anchorはゾーン検出に使用するバウンディングボックスのどの部分を使うかを決定し、オブジェクト位置に応じた異なるゾーン入退場挙動を可能にします。

## 一般的な使用例

* **複数ゾーン滞在時間分析**: 行動分析のために、オブジェクトが複数のエリアのいずれかにどれだけ長く留まるかを測定します（例: 顧客が店舗の任意の売場に滞在した時間の測定、複数の駐車エリアでの滞在時間の追跡、重なり合うゾーンでの時間分析）。複数ゾーン滞在時間分析のワークフローを有効にします
* **ゾーンベース監視**: セキュリティと安全のために、複数の定義済みエリアにわたるオブジェクトの存在を監視します（例: いずれかの制限区域での徘徊検出、複数の危険区域での滞在時間監視、安全なゾーンにわたる存在追跡）。複数ゾーン監視のワークフローを有効にします
* **小売分析**: 小売分析のために、複数の店舗売場にわたる顧客の滞在時間を追跡します（例: 任意の売場での滞在時間の測定、売場間の購買行動分析、複数ゾーンでのエンゲージメント追跡）。複数ゾーン小売分析のワークフローを有効にします
* **占有管理**: 空間利用のために、複数スペースのいずれかでオブジェクトが費やす時間を測定します（例: 複数駐車場での車両駐車時間の追跡、複数ゾーンにわたるテーブル占有の測定、複数エリアでの空間利用分析）。複数ゾーン占有管理のワークフローを有効にします
* **安全コンプライアンス**: 複数の制限区域または時間制限区域にわたる時間違反を監視します（例: いずれかの危険区域での長時間滞在検出、ゾーンをまたぐ時間制限違反の監視、複数エリアでの安全コンプライアンス追跡）。複数ゾーン安全監視のワークフローを有効にします
* **交通分析**: 複数の交通ゾーンや交差点で車両が費やす時間を測定します（例: 複数交差点での滞在時間追跡、ゾーンをまたぐ待ち行列の待機時間測定、複数エリアでの交通流分析）。複数ゾーン交通分析のワークフローを有効にします

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

このブロックは、埋め込み動画メタデータ、追跡済み検出、およびゾーン座標を含む画像を受け取り、time\_in\_zoneメタデータを持つtimed\_detectionsを生成します:

* **Byte Trackerブロックの後** 複数ゾーンにわたる追跡対象オブジェクトの時間を測定するために（例: 追跡対象オブジェクトの複数ゾーンでの時間追跡、一貫したIDでの滞在時間測定、複数ゾーンでの追跡対象オブジェクトの存在分析）、tracking-to-timeワークフローを有効にします
* **ゾーン定義ブロックの後に** 定義済みの複数エリアに時間追跡を適用するために（例: 複数のポリゴンゾーンにわたる時間測定、カスタムの複数ゾーン構成での滞在時間追跡、ゾーンをまたぐ存在分析）、zone-to-timeワークフローを有効にします
* **ロジックブロックの前** Continue Ifのように、任意のゾーン内の時間に基づいて判断するために（例: いずれかのゾーンで時間がしきい値を超えた場合に継続、ゾーンをまたぐ滞在時間に基づくフィルタリング、複数エリアでの時間違反に対するアクション実行）、時間ベース判断ワークフローを有効にします
* **分析ブロックの前** 複数ゾーンにわたる時間ベースの指標を分析するために（例: ゾーン間の滞在時間パターン分析、複数エリアのtime\_in\_zoneデータ処理、ゾーンをまたぐ継続時間指標の取り扱い）、時間分析ワークフローを有効にします
* **通知ブロックの前** 任意のゾーンでの時間違反やしきい値超過を通知するために（例: いずれかのゾーンでの長時間滞在アラート、エリアをまたぐ時間制限違反の通知、複数ゾーン向けの時間ベースアラート発報）、時間ベース通知ワークフローを有効にします
* **データ保存ブロックの前** 複数ゾーンにわたる時間指標を記録するために（例: 複数エリアの滞在時間データ保存、ゾーンをまたぐtime\_in\_zone指標のログ記録、複数ゾーンの継続時間測定の記録）、時間指標ログ記録ワークフローを有効にします

## バージョン差分

**v2からの強化点:**

* **複数ゾーンサポート**: 複数のポリゴンゾーンにまたがる時間追跡を同時にサポートし、オブジェクトは定義されたゾーンのいずれかに存在すれば「ゾーン内」とみなされ、複数ゾーンでの時間追跡と分析を可能にします
* **柔軟なゾーン入力**: 単一のポリゴンゾーンまたはポリゴンゾーンのリストのいずれかを受け付け、両方の形式をシームレスに扱うために入力を自動的に正規化します
* **ゾーンキャッシュ管理**: FIFO削除（最大100のゾーン組み合わせ）を備えたゾーンキャッシュを実装し、メモリ使用量を抑えつつ動画ごとの複数のゾーン設定を効率的に管理します
* **結合ゾーンロジック**: すべてのゾーンに対して論理OR演算を使用し、包括的な存在監視のために複数エリアを単一のゾーンシステムとして追跡できるようにします
* **強化されたゾーンキーシステム**: キャッシュ参照に結合ゾーンキー（video\_identifier + ゾーン座標）を使用し、ゾーン設定の効率的な保存と取得を可能にします

## 要件

このブロックは、tracker\_id情報を持つ追跡済み検出（検出はByte Trackerのようなトラッキングブロック由来である必要があります）を要求します。ゾーンは単一ポリゴンまたはポリゴンのリストとして定義でき、各ポリゴンは少なくとも3点からなるリストとして定義され、各点はちょうど2つの座標（x, y）を持つリストまたはタプルでなければなりません。画像のvideo\_metadataには、正確な時間測定のために、動画ファイルの場合はフレームレート（fps）、ストリーミング動画の場合はフレームタイムスタンプを含める必要があります。このブロックは各動画のフレーム間で永続的な追跡状態を維持するため、フレームが順次処理される動画ワークフローで使用してください。正確な時間測定のため、検出は有効なtrack IDとともにフレーム間で一貫して提供される必要があります。複数ゾーンが指定されている場合、オブジェクトはいずれかのゾーンに存在すれば「ゾーン内」とみなされます。

### 型識別子

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

### プロパティ

| **名前**                          | **型**       | **説明**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 参照 |
| ------------------------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`                          | `str`       | このステップの一意の識別子を入力してください。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | ❌  |
| `zone`                          | `List[Any]` | 時間測定のための1つ以上のエリアを定義するポリゴンゾーン座標。単一のポリゴンゾーンまたはポリゴンゾーンのリストのいずれかにできます。各ゾーンは少なくとも3点からなるリストで、各点はちょうど2つの座標 \[x, y] または (x, y) を持つリストまたはタプルでなければなりません。座標は画像サイズに一致するピクセル空間で指定してください。単一ゾーンの例: \[(100, 100), (100, 200), (300, 200), (300, 100)]。複数ゾーンの例: \[\[(100, 100), (100, 200), (300, 200), (300, 100)], \[(400, 400), (400, 500), (600, 500), (600, 400)]]. オブジェクトは、triggering\_anchor点が提供されたゾーンのいずれかに入っていれば「ゾーン内」とみなされます。ゾーン座標は検証され、各ゾーンに対してPolygonZoneオブジェクトが作成されます。ゾーン設定はキャッシュされ（最大100組み合わせ）、FIFO削除が行われます。.. | ✅  |
| `triggering_anchor`             | `str`       | オブジェクトを「ゾーン内」とみなすためにゾーン内に存在していなければならない、検出バウンディングボックス上の点。選択肢には 'CENTER'（デフォルト、バウンディングボックスの中心）、'BOTTOM\_CENTER'（下中央点）、'TOP\_CENTER'（上中央点）、'CENTER\_LEFT'（左中央点）、'CENTER\_RIGHT'（右中央点）、および他のPosition enumの値が含まれます。triggering\_anchorは、オブジェクトのバウンディングボックスのどの部分をゾーンポリゴンと照合するかを決定します。複数ゾーンが指定されている場合、アンカーポイントがいずれかのゾーン内にあればオブジェクトは「ゾーン内」とみなされます。標準的なゾーン検出にはCENTER、地面レベルのゾーン（例: 足元／車両ベースの追跡）にはBOTTOM\_CENTER、または検出ニーズに応じた他のアンカーを使用してください。デフォルトは 'CENTER' です。..                                                      | ✅  |
| `remove_out_of_zone_detections` | `bool`      | True（デフォルト）の場合、すべてのゾーン外で検出されたものはフィルタリングされ、出力に含まれません。少なくとも1つのゾーン内にある検出のみが返されます。Falseの場合、すべての検出が出力に含まれ、すべてのゾーン外のオブジェクトには time\_in\_zone = 0 が設定されます。ゾーン内のオブジェクトだけに分析を集中させるにはTrueを使用し、すべての検出をゾーン状態付きで保持するにはFalseを使用します。複数ゾーンが指定されている場合、オブジェクトは任意のゾーンに存在すれば「ゾーン内」とみなされます。よりクリーンでゾーン活動に焦点を当てた出力のため、デフォルトはTrueです。..                                                                                                                                                                                               | ✅  |
| `reset_out_of_zone_detections`  | `bool`      | True（デフォルト）の場合、追跡対象オブジェクトがすべてのゾーンを離れると、その時間追跡はリセットされます（入場タイムスタンプがクリアされます）。オブジェクトがいずれかのゾーンに再入場すると、時間追跡は0から再開されます。Falseの場合、すべてのゾーンを離れた後も時間追跡は継続し、再入場しても累積時間が維持されます。任意のゾーン内での現在の連続時間を測定するにはTrue（すべてのゾーン退出時にリセット）を、複数回の入場をまたいだ累積時間を測定するにはFalseを使用します。複数ゾーンが指定されている場合、オブジェクトがすべてのゾーンを離れたときのみ時間がリセットされます。連続滞在時間を測定するため、デフォルトはTrueです。..                                                                                                                                                                            | ✅  |

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

### ランタイム互換性

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

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

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

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

<details>

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

* 入力
  * `image` ([*`image`*](/workflows/ja/gaido/developer-guide/kinds/image.md): 時間計算と状態管理に必要な、埋め込み動画メタデータ（fps、frame\_number、frame\_timestamp、video\_identifier、video source）を含む現在の動画フレームの入力画像です。このブロックはWorkflowImageDataオブジェクトからvideo\_metadataを抽出します。fpsとframe\_numberは、動画ファイルのタイムスタンプ計算に使用されます（timestamp = frame\_number / fps）。ストリーミング動画ではframe\_timestampが直接使用されます。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情報を持つ追跡済み検出予測（物体検出またはインスタンスセグメンテーション）です。検出は、フレーム間で持続する一意のtracker\_id値を割り当てるトラッキングブロック（例: Byte Tracker）由来でなければなりません。各検出には、時間追跡を有効にするためのtracker\_idが必要です。このブロックは、各追跡対象オブジェクトのtime\_in\_zoneを、そのtrack\_idが最初にいずれかのゾーンに入った時点に基づいて計算します。オブジェクトは、アンカーポイントが提供されたゾーンのいずれかに入っていれば「ゾーン内」とみなされます。出力には、time\_in\_zoneメタデータ（継続時間、秒）が付加された同じ検出が含まれます。remove\_out\_of\_zone\_detectionsがTrueの場合、いずれかのゾーン内の検出のみが出力に含まれます。..
  * `zone` ([*`list_of_values`*](/workflows/ja/gaido/developer-guide/kinds/list-of-values.md): 時間測定のための1つ以上のエリアを定義するポリゴンゾーン座標。単一のポリゴンゾーンまたはポリゴンゾーンのリストのいずれかにできます。各ゾーンは少なくとも3点からなるリストで、各点はちょうど2つの座標 \[x, y] または (x, y) を持つリストまたはタプルでなければなりません。座標は画像サイズに一致するピクセル空間で指定してください。単一ゾーンの例: \[(100, 100), (100, 200), (300, 200), (300, 100)]。複数ゾーンの例: \[\[(100, 100), (100, 200), (300, 200), (300, 100)], \[(400, 400), (400, 500), (600, 500), (600, 400)]]. オブジェクトは、triggering\_anchor点が提供されたゾーンのいずれかに入っていれば「ゾーン内」とみなされます。ゾーン座標は検証され、各ゾーンに対してPolygonZoneオブジェクトが作成されます。ゾーン設定はキャッシュされ（最大100組み合わせ）、FIFO削除が行われます。..
  * `triggering_anchor` ([*`string`*](/workflows/ja/gaido/developer-guide/kinds/string.md): オブジェクトを「ゾーン内」とみなすためにゾーン内に存在していなければならない、検出バウンディングボックス上の点。選択肢には 'CENTER'（デフォルト、バウンディングボックスの中心）、'BOTTOM\_CENTER'（下中央点）、'TOP\_CENTER'（上中央点）、'CENTER\_LEFT'（左中央点）、'CENTER\_RIGHT'（右中央点）、および他のPosition enumの値が含まれます。triggering\_anchorは、オブジェクトのバウンディングボックスのどの部分をゾーンポリゴンと照合するかを決定します。複数ゾーンが指定されている場合、アンカーポイントがいずれかのゾーン内にあればオブジェクトは「ゾーン内」とみなされます。標準的なゾーン検出にはCENTER、地面レベルのゾーン（例: 足元／車両ベースの追跡）にはBOTTOM\_CENTER、または検出ニーズに応じた他のアンカーを使用してください。デフォルトは 'CENTER' です。..
  * `remove_out_of_zone_detections` ([*`boolean`*](/workflows/ja/gaido/developer-guide/kinds/boolean.md)True（デフォルト）の場合、すべてのゾーン外で検出されたものはフィルタリングされ、出力に含まれません。少なくとも1つのゾーン内にある検出のみが返されます。Falseの場合、すべての検出が出力に含まれ、すべてのゾーン外のオブジェクトには time\_in\_zone = 0 が設定されます。ゾーン内のオブジェクトだけに分析を集中させるにはTrueを使用し、すべての検出をゾーン状態付きで保持するにはFalseを使用します。複数ゾーンが指定されている場合、オブジェクトは任意のゾーンに存在すれば「ゾーン内」とみなされます。よりクリーンでゾーン活動に焦点を当てた出力のため、デフォルトはTrueです。..
  * `reset_out_of_zone_detections` ([*`boolean`*](/workflows/ja/gaido/developer-guide/kinds/boolean.md)True（デフォルト）の場合、追跡対象オブジェクトがすべてのゾーンを離れると、その時間追跡はリセットされます（入場タイムスタンプがクリアされます）。オブジェクトがいずれかのゾーンに再入場すると、時間追跡は0から再開されます。Falseの場合、すべてのゾーンを離れた後も時間追跡は継続し、再入場しても累積時間が維持されます。任意のゾーン内での現在の連続時間を測定するにはTrue（すべてのゾーン退出時にリセット）を、複数回の入場をまたいだ累積時間を測定するにはFalseを使用します。複数ゾーンが指定されている場合、オブジェクトがすべてのゾーンを離れたときのみ時間がリセットされます。連続滞在時間を測定するため、デフォルトはTrueです。..
* 出力
  * `timed_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/time_in_zone@v3",
	    "image": "$inputs.image",
	    "detections": "$steps.object_detection_model.predictions",
	    "zone": [
	        [
	            100,
	            100
	        ],
	        [
	            100,
	            200
	        ],
	        [
	            300,
	            200
	        ],
	        [
	            300,
	            100
	        ]
	    ],
	    "triggering_anchor": "CENTER",
	    "remove_out_of_zone_detections": true,
	    "reset_out_of_zone_detections": true
	}
```

</details>

## v2

定義されたポリゴンゾーン内で追跡対象オブジェクトが費やした時間を計算・追跡し、特定エリアにおけるオブジェクトの存在時間を測定し、ゾーン所属に基づいて検出をフィルタリングし、オブジェクトがゾーンを離れたときに時間追跡をリセットし、ゾーンベースの分析、滞在時間分析、存在監視のワークフローを有効にします。

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

このブロックは、各ユニークなtrack IDの入退出時刻を追跡することで、各追跡対象オブジェクトが定義されたポリゴンゾーン内にどれだけ長く滞在しているかを測定します。このブロックは次のとおりです:

1. track ID付きの追跡済み検出予測、埋め込み動画メタデータを含む画像、およびポリゴンゾーン定義を受け取ります
2. 画像からビデオメタデータを抽出します：
   * WorkflowImageDataオブジェクトからvideo\_metadataにアクセスします
   * fps、frame\_number、frame\_timestamp、video\_identifier、および動画ソース情報を抽出します
   * video\_identifierを使用して、異なる動画ごとに個別の追跡状態を維持します
3. 検出にtrack IDがあることを検証します（tracker\_idが存在する必要があります）:
   * 検出がトラッキングブロック（例: Byte Tracker）由来であることを要求します
   * 各オブジェクトは、フレーム間で持続する一意のtracker\_idを持っている必要があります
   * tracker\_idがない場合はエラーを発生させます
4. 動画用のポリゴンゾーンを初期化または取得します:
   * 各ユニークな動画ごとに、ゾーン座標からPolygonZoneオブジェクトを作成します
   * ゾーン座標を検証します（少なくとも3点からなるリストで、各点は2つの座標を持つ必要があります）
   * video\_identifierを使用して動画ごとにゾーン設定を保存します
   * ゾーン検出のためのトリガーアンカー点（例: CENTER、BOTTOM\_CENTER）を設定します
5. 動画用の時間追跡状態を初期化または取得します:
   * 各track\_idがいつゾーンに入ったかを追跡する辞書を保持します
   * video\_identifierを使用して、動画ごとにエントリタイムスタンプを保存します
   * 各動画ごとに個別の追跡状態を維持します
6. 時間測定のための現在時刻を計算します:
   * 動画ファイルの場合: frame\_number / fpsとしてタイムスタンプを計算します
   * ストリーミング動画の場合: メタデータのframe\_timestampを使用します
   * 継続時間計算のために正確な時間測定を提供します
7. どの検出がゾーン内にあるかを確認します:
   * ポリゴンゾーントリガーを使用して、各検出のアンカーポイントがゾーン内にあるかをテストします
   * triggering\_anchorは、バウンディングボックス上のどの点をチェックするかを決定します（CENTER、BOTTOM\_CENTERなど）
   * 各検出についてゾーン所属を示すブール値を返します
8. 各追跡対象オブジェクトの時間追跡を更新します:
   * **ゾーンに入るオブジェクトに対して**: まだ追跡されていなければ、入場タイムスタンプを記録します
   * **ゾーン内のオブジェクトに対して**: 経過時間を current\_timestamp - entry\_timestamp として計算します
   * **ゾーンを離れるオブジェクトに対して**:
     * : reset\_out\_of\_zone\_detections が True の場合、入場タイムスタンプを削除します（0にリセット）
     * : reset\_out\_of\_zone\_detections が False の場合、入場タイムスタンプを保持します（追跡を継続）
9. ゾーン外検出を処理します:
   * **remove\_out\_of\_zone\_detections が True の場合**: ゾーン外の検出を出力から除外します
   * **remove\_out\_of\_zone\_detections が False の場合**: ゾーン外の検出を time = 0 として含めます
10. 各検出にtime\_in\_zone情報を追加します:
    * 各検出にtime\_in\_zoneの値（秒単位）をメタデータとして付与します
    * ゾーン内のオブジェクト: 時間はゾーン内で過ごした継続時間を表します
    * ゾーン外のオブジェクト: 時間は0（リセットされていない場合）または未定義（削除された場合）です
11. time\_in\_zone情報を含む検出を返します:
    * time\_in\_zoneメタデータで強化された追跡済み検出を出力します
    * remove\_out\_of\_zone\_detectionsの設定に応じてフィルタリングあり／なし
    * 元の検出プロパティをすべて保持しつつ、時間追跡情報を追加します

このブロックはフレーム間で永続的な追跡状態を維持し、複数フレームにわたってゾーン内にとどまるオブジェクトの累積時間を正確に測定できます。時間は、オブジェクトが最初にゾーンに入った時点（track\_idに基づく）から現在のフレームまで測定され、リアルタイムの継続時間追跡を提供します。ゾーンは複数点を持つポリゴンとして定義され、柔軟なエリア定義が可能です。triggering\_anchorはゾーン検出に使用するバウンディングボックスのどの部分を使うかを決定し、オブジェクト位置に応じた異なるゾーン入退場挙動を可能にします。

## 一般的な使用例

* **滞在時間分析**: 行動分析のために、オブジェクトが特定エリアにどれだけ長く留まるかを測定します（例: 店舗の売場での顧客滞在時間の測定、駐車スペースでの滞在時間の追跡、待機エリアでの時間分析）。滞在時間分析のワークフローを有効にします
* **ゾーンベース監視**: セキュリティと安全のために、定義されたエリア内のオブジェクトの存在を監視します（例: 制限区域での徘徊検出、危険区域での滞在時間監視、安全なゾーンでの存在追跡）。ゾーン監視のワークフローを有効にします
* **小売分析**: 小売向けの洞察のために、店舗内の異なる売場での顧客の滞在時間を追跡します（例: 商品通路での滞在時間の測定、購買行動の分析、売場ごとのエンゲージメント追跡）。小売分析のワークフローを有効にします
* **占有管理**: 空間利用のために、オブジェクトがスペース内で費やす時間を測定します（例: 車両の駐車時間の追跡、テーブル占有時間の測定、空間利用パターンの分析）。占有管理のワークフローを有効にします
* **安全コンプライアンス**: 制限区域または時間制限区域での時間違反を監視します（例: 危険区域での長時間滞在の検出、時間制限違反の監視、安全コンプライアンスの追跡）。安全監視のワークフローを有効にします
* **交通分析**: 交通ゾーンや交差点で車両が費やす時間を測定します（例: 交差点での時間の追跡、待ち行列の待機時間の測定、交通流パターンの分析）。交通分析のワークフローを有効にします

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

このブロックは、埋め込み動画メタデータ、追跡済み検出、およびゾーン座標を含む画像を受け取り、time\_in\_zoneメタデータを持つtimed\_detectionsを生成します:

* **Byte Trackerブロックの後** 追跡対象オブジェクトの時間を測定するために（例: 追跡対象オブジェクトのゾーンでの時間追跡、一貫したIDでの滞在時間測定、追跡対象オブジェクトの存在分析）、tracking-to-timeワークフローを有効にします
* **ゾーン定義ブロックの後に** 定義されたエリアに時間追跡を適用するために（例: ポリゴンゾーンでの時間測定、カスタムゾーンでの滞在時間追跡、ゾーンベースの存在分析）、zone-to-timeワークフローを有効にします
* **ロジックブロックの前** Continue Ifのように、ゾーン内の時間に基づいて判断するために（例: 時間がしきい値を超えたら継続、滞在時間に基づくフィルタリング、時間違反時にアクションを発火）、時間ベース判断ワークフローを有効にします
* **分析ブロックの前** 時間ベースの指標を分析するために（例: 滞在時間パターンの分析、time\_in\_zoneデータの処理、継続時間指標の取り扱い）、時間分析ワークフローを有効にします
* **通知ブロックの前** 時間違反やしきい値超過を通知するために（例: 長時間滞在のアラート、時間制限違反の通知、時間ベースアラートの発報）、時間ベース通知ワークフローを有効にします
* **データ保存ブロックの前** 時間指標を記録するために（例: 滞在時間データの保存、time\_in\_zone指標のログ記録、継続時間測定の記録）、時間指標ログ記録ワークフローを有効にします

## バージョン差分

**v1からの強化点:**

* **入力の簡素化**: `image` を使用し、別個の `metadata` フィールドを要求する代わりに埋め込み動画メタデータを含む入力を使用することで、ワークフロー接続を簡素化し、入力の複雑さを削減します
* **統合の改善**: 動画メタデータを別のメタデータ入力ではなく画像オブジェクトから直接アクセスするため、画像ベースのワークフローとの統合が向上します
* **ワークフローの簡素化**: 必要な入力数を減らし、画像とメタデータが同じソースから来るワークフローに接続しやすくします

## 要件

このブロックは、tracker\_id情報を持つ追跡済み検出（検出はByte Trackerのようなトラッキングブロック由来である必要があります）を要求します。ゾーンは少なくとも3点からなるリストとして定義する必要があり、各点はちょうど2つの座標（x, y）を持つリストまたはタプルでなければなりません。画像のvideo\_metadataには、正確な時間測定のために、動画ファイルの場合はフレームレート（fps）、ストリーミング動画の場合はフレームタイムスタンプを含める必要があります。このブロックは各動画のフレーム間で永続的な追跡状態を維持するため、フレームが順次処理される動画ワークフローで使用してください。正確な時間測定のため、検出は有効なtrack IDとともにフレーム間で一貫して提供される必要があります。

### 型識別子

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

### プロパティ

| **名前**                          | **型**       | **説明**                                                                                                                                                                                                                                                                                                                                                                                      | 参照 |
| ------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`                          | `str`       | このステップの一意の識別子を入力してください。                                                                                                                                                                                                                                                                                                                                                                     | ❌  |
| `zone`                          | `List[Any]` | 時間測定のためのエリアを定義するポリゴンゾーン座標。少なくとも3点からなるリストでなければならず、各点はちょうど2つの座標 \[x, y] または (x, y) を持つリストまたはタプルでなければなりません。座標は画像サイズに一致するピクセル空間で指定してください。例: 四角形ゾーンの場合は \[(100, 100), (100, 200), (300, 200), (300, 100)]。ゾーンは、時間追跡が行われるポリゴン領域を定義します。オブジェクトは、triggering\_anchor点がこのポリゴン内にあるときに「ゾーン内」とみなされます。ゾーン座標は検証され、各動画に対してPolygonZoneオブジェクトが作成されます。..                                                        | ✅  |
| `triggering_anchor`             | `str`       | オブジェクトを「ゾーン内」とみなすためにゾーン内に存在していなければならない、検出バウンディングボックス上の点。選択肢には 'CENTER'（デフォルト、バウンディングボックスの中心）、'BOTTOM\_CENTER'（下中央点）、'TOP\_CENTER'（上中央点）、'CENTER\_LEFT'（左中央点）、'CENTER\_RIGHT'（右中央点）、および他のPosition enumの値が含まれます。triggering\_anchorは、オブジェクトのバウンディングボックスのどの部分をゾーンポリゴンと照合するかを決定します。標準的なゾーン検出にはCENTER、地面レベルのゾーン（例: 足元／車両ベースの追跡）にはBOTTOM\_CENTER、または検出ニーズに応じた他のアンカーを使用してください。デフォルトは 'CENTER' です。.. | ✅  |
| `remove_out_of_zone_detections` | `bool`      | True（デフォルト）の場合、ゾーン外で検出されたものはフィルタリングされ、出力に含まれません。ゾーン内の検出のみが返されます。Falseの場合、すべての検出が出力に含まれ、ゾーン外のオブジェクトには time\_in\_zone = 0 が設定されます。ゾーン内のオブジェクトだけに分析を集中させるにはTrueを使用し、すべての検出をゾーン状態付きで保持するにはFalseを使用します。デフォルトは、ゾーン活動に焦点を当てたよりクリーンな出力のためにTrueです。..                                                                                                                                                 | ✅  |
| `reset_out_of_zone_detections`  | `bool`      | True（デフォルト）の場合、追跡対象オブジェクトがゾーンを離れると、その時間追跡はリセットされます（入場タイムスタンプがクリアされます）。オブジェクトがゾーンに再入場すると、時間追跡は0から再開されます。Falseの場合、ゾーンを離れた後も時間追跡は継続し、再入場しても累積時間が維持されます。ゾーン内での現在の連続時間を測定するにはTrue（退出時にリセット）を、複数回の入場をまたいだ累積時間を測定するにはFalseを使用します。連続滞在時間を測定するため、デフォルトはTrueです。..                                                                                                                                     | ✅  |

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

### ランタイム互換性

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

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

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

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

<details>

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

* 入力
  * `image` ([*`image`*](/workflows/ja/gaido/developer-guide/kinds/image.md): 時間計算と状態管理に必要な、埋め込み動画メタデータ（fps、frame\_number、frame\_timestamp、video\_identifier、video source）を含む現在の動画フレームの入力画像です。このブロックはWorkflowImageDataオブジェクトからvideo\_metadataを抽出します。fpsとframe\_numberは、動画ファイルのタイムスタンプ計算に使用されます（timestamp = frame\_number / fps）。ストリーミング動画ではframe\_timestampが直接使用されます。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情報を持つ追跡済み検出予測（物体検出またはインスタンスセグメンテーション）です。検出は、フレーム間で持続する一意のtracker\_id値を割り当てるトラッキングブロック（例: Byte Tracker）由来でなければなりません。各検出には、時間追跡を有効にするためのtracker\_idが必要です。このブロックは、各追跡対象オブジェクトのtime\_in\_zoneを、そのtrack\_idが最初にゾーンに入った時点に基づいて計算します。出力には、time\_in\_zoneメタデータ（継続時間、秒）が付加された同じ検出が含まれます。remove\_out\_of\_zone\_detectionsがTrueの場合、ゾーン内の検出のみが出力に含まれます。..
  * `zone` ([*`list_of_values`*](/workflows/ja/gaido/developer-guide/kinds/list-of-values.md): 時間測定のためのエリアを定義するポリゴンゾーン座標。少なくとも3点からなるリストでなければならず、各点はちょうど2つの座標 \[x, y] または (x, y) を持つリストまたはタプルでなければなりません。座標は画像サイズに一致するピクセル空間で指定してください。例: 四角形ゾーンの場合は \[(100, 100), (100, 200), (300, 200), (300, 100)]。ゾーンは、時間追跡が行われるポリゴン領域を定義します。オブジェクトは、triggering\_anchor点がこのポリゴン内にあるときに「ゾーン内」とみなされます。ゾーン座標は検証され、各動画に対してPolygonZoneオブジェクトが作成されます。..
  * `triggering_anchor` ([*`string`*](/workflows/ja/gaido/developer-guide/kinds/string.md): オブジェクトを「ゾーン内」とみなすためにゾーン内に存在していなければならない、検出バウンディングボックス上の点。選択肢には 'CENTER'（デフォルト、バウンディングボックスの中心）、'BOTTOM\_CENTER'（下中央点）、'TOP\_CENTER'（上中央点）、'CENTER\_LEFT'（左中央点）、'CENTER\_RIGHT'（右中央点）、および他のPosition enumの値が含まれます。triggering\_anchorは、オブジェクトのバウンディングボックスのどの部分をゾーンポリゴンと照合するかを決定します。標準的なゾーン検出にはCENTER、地面レベルのゾーン（例: 足元／車両ベースの追跡）にはBOTTOM\_CENTER、または検出ニーズに応じた他のアンカーを使用してください。デフォルトは 'CENTER' です。..
  * `remove_out_of_zone_detections` ([*`boolean`*](/workflows/ja/gaido/developer-guide/kinds/boolean.md)True（デフォルト）の場合、ゾーン外で検出されたものはフィルタリングされ、出力に含まれません。ゾーン内の検出のみが返されます。Falseの場合、すべての検出が出力に含まれ、ゾーン外のオブジェクトには time\_in\_zone = 0 が設定されます。ゾーン内のオブジェクトだけに分析を集中させるにはTrueを使用し、すべての検出をゾーン状態付きで保持するにはFalseを使用します。デフォルトは、ゾーン活動に焦点を当てたよりクリーンな出力のためにTrueです。..
  * `reset_out_of_zone_detections` ([*`boolean`*](/workflows/ja/gaido/developer-guide/kinds/boolean.md)True（デフォルト）の場合、追跡対象オブジェクトがゾーンを離れると、その時間追跡はリセットされます（入場タイムスタンプがクリアされます）。オブジェクトがゾーンに再入場すると、時間追跡は0から再開されます。Falseの場合、ゾーンを離れた後も時間追跡は継続し、再入場しても累積時間が維持されます。ゾーン内での現在の連続時間を測定するにはTrue（退出時にリセット）を、複数回の入場をまたいだ累積時間を測定するにはFalseを使用します。連続滞在時間を測定するため、デフォルトはTrueです。..
* 出力
  * `timed_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/time_in_zone@v2",
	    "image": "$inputs.image",
	    "detections": "$steps.object_detection_model.predictions",
	    "zone": [
	        [
	            100,
	            100
	        ],
	        [
	            100,
	            200
	        ],
	        [
	            300,
	            200
	        ],
	        [
	            300,
	            100
	        ]
	    ],
	    "triggering_anchor": "CENTER",
	    "remove_out_of_zone_detections": true,
	    "reset_out_of_zone_detections": true
	}
```

</details>

## v1

定義されたポリゴンゾーン内で追跡対象オブジェクトが費やした時間を計算・追跡し、特定エリアにおけるオブジェクトの存在時間を測定し、ゾーン所属に基づいて検出をフィルタリングし、オブジェクトがゾーンを離れたときに時間追跡をリセットし、ゾーンベースの分析、滞在時間分析、存在監視のワークフローを有効にします。

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

このブロックは、各ユニークなtrack IDの入退出時刻を追跡することで、各追跡対象オブジェクトが定義されたポリゴンゾーン内にどれだけ長く滞在しているかを測定します。このブロックは次のとおりです:

1. track ID付きの追跡済み検出予測、画像、動画メタデータ、およびポリゴンゾーン定義を受け取ります
2. 検出にtrack IDがあることを検証します（tracker\_idが存在する必要があります）:
   * 検出がトラッキングブロック（例: Byte Tracker）由来であることを要求します
   * 各オブジェクトは、フレーム間で持続する一意のtracker\_idを持っている必要があります
   * tracker\_idがない場合はエラーを発生させます
3. 動画用のポリゴンゾーンを初期化または取得します:
   * 各ユニークな動画ごとに、ゾーン座標からPolygonZoneオブジェクトを作成します
   * ゾーン座標を検証します（少なくとも3点からなるリストで、各点は2つの座標を持つ必要があります）
   * video\_identifierを使用して動画ごとにゾーン設定を保存します
   * ゾーン検出のためのトリガーアンカー点（例: CENTER、BOTTOM\_CENTER）を設定します
4. 動画用の時間追跡状態を初期化または取得します:
   * 各track\_idがいつゾーンに入ったかを追跡する辞書を保持します
   * video\_identifierを使用して、動画ごとにエントリタイムスタンプを保存します
   * 各動画ごとに個別の追跡状態を維持します
5. 時間測定のための現在時刻を計算します:
   * 動画ファイルの場合: frame\_number / fpsとしてタイムスタンプを計算します
   * ストリーミング動画の場合: メタデータのframe\_timestampを使用します
   * 継続時間計算のために正確な時間測定を提供します
6. どの検出がゾーン内にあるかを確認します:
   * ポリゴンゾーントリガーを使用して、各検出のアンカーポイントがゾーン内にあるかをテストします
   * triggering\_anchorは、バウンディングボックス上のどの点をチェックするかを決定します（CENTER、BOTTOM\_CENTERなど）
   * 各検出についてゾーン所属を示すブール値を返します
7. 各追跡対象オブジェクトの時間追跡を更新します:
   * **ゾーンに入るオブジェクトに対して**: まだ追跡されていなければ、入場タイムスタンプを記録します
   * **ゾーン内のオブジェクトに対して**: 経過時間を current\_timestamp - entry\_timestamp として計算します
   * **ゾーンを離れるオブジェクトに対して**:
     * : reset\_out\_of\_zone\_detections が True の場合、入場タイムスタンプを削除します（0にリセット）
     * : reset\_out\_of\_zone\_detections が False の場合、入場タイムスタンプを保持します（追跡を継続）
8. ゾーン外検出を処理します:
   * **remove\_out\_of\_zone\_detections が True の場合**: ゾーン外の検出を出力から除外します
   * **remove\_out\_of\_zone\_detections が False の場合**: ゾーン外の検出を time = 0 として含めます
9. 各検出にtime\_in\_zone情報を追加します:
   * 各検出にtime\_in\_zoneの値（秒単位）をメタデータとして付与します
   * ゾーン内のオブジェクト: 時間はゾーン内で過ごした継続時間を表します
   * ゾーン外のオブジェクト: 時間は0（リセットされていない場合）または未定義（削除された場合）です
10. time\_in\_zone情報を含む検出を返します:
    * time\_in\_zoneメタデータで強化された追跡済み検出を出力します
    * remove\_out\_of\_zone\_detectionsの設定に応じてフィルタリングあり／なし
    * 元の検出プロパティをすべて保持しつつ、時間追跡情報を追加します

このブロックはフレーム間で永続的な追跡状態を維持し、複数フレームにわたってゾーン内にとどまるオブジェクトの累積時間を正確に測定できます。時間は、オブジェクトが最初にゾーンに入った時点（track\_idに基づく）から現在のフレームまで測定され、リアルタイムの継続時間追跡を提供します。ゾーンは複数点を持つポリゴンとして定義され、柔軟なエリア定義が可能です。triggering\_anchorはゾーン検出に使用するバウンディングボックスのどの部分を使うかを決定し、オブジェクト位置に応じた異なるゾーン入退場挙動を可能にします。

## 一般的な使用例

* **滞在時間分析**: 行動分析のために、オブジェクトが特定エリアにどれだけ長く留まるかを測定します（例: 店舗の売場での顧客滞在時間の測定、駐車スペースでの滞在時間の追跡、待機エリアでの時間分析）。滞在時間分析のワークフローを有効にします
* **ゾーンベース監視**: セキュリティと安全のために、定義されたエリア内のオブジェクトの存在を監視します（例: 制限区域での徘徊検出、危険区域での滞在時間監視、安全なゾーンでの存在追跡）。ゾーン監視のワークフローを有効にします
* **小売分析**: 小売向けの洞察のために、店舗内の異なる売場での顧客の滞在時間を追跡します（例: 商品通路での滞在時間の測定、購買行動の分析、売場ごとのエンゲージメント追跡）。小売分析のワークフローを有効にします
* **占有管理**: 空間利用のために、オブジェクトがスペース内で費やす時間を測定します（例: 車両の駐車時間の追跡、テーブル占有時間の測定、空間利用パターンの分析）。占有管理のワークフローを有効にします
* **安全コンプライアンス**: 制限区域または時間制限区域での時間違反を監視します（例: 危険区域での長時間滞在の検出、時間制限違反の監視、安全コンプライアンスの追跡）。安全監視のワークフローを有効にします
* **交通分析**: 交通ゾーンや交差点で車両が費やす時間を測定します（例: 交差点での時間の追跡、待ち行列の待機時間の測定、交通流パターンの分析）。交通分析のワークフローを有効にします

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

このブロックは、追跡済み検出、画像、動画メタデータ、およびゾーン座標を受け取り、time\_in\_zoneメタデータを持つtimed\_detectionsを生成します:

* **Byte Trackerブロックの後** 追跡対象オブジェクトの時間を測定するために（例: 追跡対象オブジェクトのゾーンでの時間追跡、一貫したIDでの滞在時間測定、追跡対象オブジェクトの存在分析）、tracking-to-timeワークフローを有効にします
* **ゾーン定義ブロックの後に** 定義されたエリアに時間追跡を適用するために（例: ポリゴンゾーンでの時間測定、カスタムゾーンでの滞在時間追跡、ゾーンベースの存在分析）、zone-to-timeワークフローを有効にします
* **ロジックブロックの前** Continue Ifのように、ゾーン内の時間に基づいて判断するために（例: 時間がしきい値を超えたら継続、滞在時間に基づくフィルタリング、時間違反時にアクションを発火）、時間ベース判断ワークフローを有効にします
* **分析ブロックの前** 時間ベースの指標を分析するために（例: 滞在時間パターンの分析、time\_in\_zoneデータの処理、継続時間指標の取り扱い）、時間分析ワークフローを有効にします
* **通知ブロックの前** 時間違反やしきい値超過を通知するために（例: 長時間滞在のアラート、時間制限違反の通知、時間ベースアラートの発報）、時間ベース通知ワークフローを有効にします
* **データ保存ブロックの前** 時間指標を記録するために（例: 滞在時間データの保存、time\_in\_zone指標のログ記録、継続時間測定の記録）、時間指標ログ記録ワークフローを有効にします

## 要件

このブロックは、tracker\_id情報を持つ追跡済み検出を要求します（検出はByte Trackerのようなトラッキングブロック由来である必要があります）。ゾーンは少なくとも3点からなるリストとして定義する必要があり、各点はちょうど2つの座標（x, y）を持つリストまたはタプルでなければなりません。このブロックは、正確な時間測定のために、動画ファイルの場合はフレームレート（fps）、ストリーミング動画の場合はフレームタイムスタンプを含む動画メタデータを必要とします。このブロックは各動画のフレーム間で永続的な追跡状態を維持するため、フレームが順次処理される動画ワークフローで使用してください。正確な時間測定のため、検出は有効なtrack IDとともにフレーム間で一貫して提供される必要があります。

### 型識別子

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

### プロパティ

| **名前**                          | **型**       | **説明**                                                                                                                                                                                                                                                                                                                                                                                      | 参照 |
| ------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`                          | `str`       | このステップの一意の識別子を入力してください。                                                                                                                                                                                                                                                                                                                                                                     | ❌  |
| `zone`                          | `List[Any]` | 時間測定のためのエリアを定義するポリゴンゾーン座標。少なくとも3点からなるリストでなければならず、各点はちょうど2つの座標 \[x, y] または (x, y) を持つリストまたはタプルでなければなりません。座標は画像サイズに一致するピクセル空間で指定してください。例: 四角形ゾーンの場合は \[\[x1, y1], \[x2, y2], \[x3, y3], \[x4, y4]]。ゾーンは、時間追跡が行われるポリゴン領域を定義します。オブジェクトは、triggering\_anchor点がこのポリゴン内にあるときに「ゾーン内」とみなされます。ゾーン座標は検証され、各動画に対してPolygonZoneオブジェクトが作成されます。..                                                            | ✅  |
| `triggering_anchor`             | `str`       | オブジェクトを「ゾーン内」とみなすためにゾーン内に存在していなければならない、検出バウンディングボックス上の点。選択肢には 'CENTER'（デフォルト、バウンディングボックスの中心）、'BOTTOM\_CENTER'（下中央点）、'TOP\_CENTER'（上中央点）、'CENTER\_LEFT'（左中央点）、'CENTER\_RIGHT'（右中央点）、および他のPosition enumの値が含まれます。triggering\_anchorは、オブジェクトのバウンディングボックスのどの部分をゾーンポリゴンと照合するかを決定します。標準的なゾーン検出にはCENTER、地面レベルのゾーン（例: 足元／車両ベースの追跡）にはBOTTOM\_CENTER、または検出ニーズに応じた他のアンカーを使用してください。デフォルトは 'CENTER' です。.. | ✅  |
| `remove_out_of_zone_detections` | `bool`      | True（デフォルト）の場合、ゾーン外で検出されたものはフィルタリングされ、出力に含まれません。ゾーン内の検出のみが返されます。Falseの場合、すべての検出が出力に含まれ、ゾーン外のオブジェクトには time\_in\_zone = 0 が設定されます。ゾーン内のオブジェクトだけに分析を集中させるにはTrueを使用し、すべての検出をゾーン状態付きで保持するにはFalseを使用します。デフォルトは、ゾーン活動に焦点を当てたよりクリーンな出力のためにTrueです。..                                                                                                                                                 | ✅  |
| `reset_out_of_zone_detections`  | `bool`      | True（デフォルト）の場合、追跡対象オブジェクトがゾーンを離れると、その時間追跡はリセットされます（入場タイムスタンプがクリアされます）。オブジェクトがゾーンに再入場すると、時間追跡は0から再開されます。Falseの場合、ゾーンを離れた後も時間追跡は継続し、再入場しても累積時間が維持されます。ゾーン内での現在の連続時間を測定するにはTrue（退出時にリセット）を、複数回の入場をまたいだ累積時間を測定するにはFalseを使用します。連続滞在時間を測定するため、デフォルトはTrueです。..                                                                                                                                     | ✅  |

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

### ランタイム互換性

`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)): 現在の動画フレームの入力画像です。ゾーンの可視化と参照に使用されます。このブロックはゾーン座標を検証するために画像サイズを使用します。フレームタイムスタンプが必要な場合は、時間計算に画像メタデータが使用されることがあります。..
  * `metadata` ([*`video_metadata`*](/workflows/ja/gaido/developer-guide/kinds/video-metadata.md)）: フレームレート（fps）、フレーム番号、フレームタイムスタンプ、video identifier、および時間計算と状態管理に必要な動画ソース情報を含む動画メタデータです。fpsとframe\_numberは、動画ファイルのタイムスタンプ計算に使用されます（timestamp = frame\_number / fps）。ストリーミング動画ではframe\_timestampが直接使用されます。video\_identifierは、異なる動画ごとに個別の追跡状態とゾーン設定を維持するために使用されます。正確な時間測定を可能にするには、メタデータに動画ファイル用の有効なfps、またはストリーム用のframe\_timestampが含まれている必要があります。..
  * `検出` (*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情報を持つ追跡済み検出予測（物体検出またはインスタンスセグメンテーション）です。検出は、フレーム間で持続する一意のtracker\_id値を割り当てるトラッキングブロック（例: Byte Tracker）由来でなければなりません。各検出には、時間追跡を有効にするためのtracker\_idが必要です。このブロックは、各追跡対象オブジェクトのtime\_in\_zoneを、そのtrack\_idが最初にゾーンに入った時点に基づいて計算します。出力には、time\_in\_zoneメタデータ（継続時間、秒）が付加された同じ検出が含まれます。remove\_out\_of\_zone\_detectionsがTrueの場合、ゾーン内の検出のみが出力に含まれます。..
  * `zone` ([*`list_of_values`*](/workflows/ja/gaido/developer-guide/kinds/list-of-values.md)）: 時間測定のためのエリアを定義するポリゴンゾーン座標。少なくとも3点からなるリストでなければならず、各点はちょうど2つの座標 \[x, y] または (x, y) を持つリストまたはタプルでなければなりません。座標は画像サイズに一致するピクセル空間で指定してください。例: 四角形ゾーンの場合は \[\[x1, y1], \[x2, y2], \[x3, y3], \[x4, y4]]。ゾーンは、時間追跡が行われるポリゴン領域を定義します。オブジェクトは、triggering\_anchor点がこのポリゴン内にあるときに「ゾーン内」とみなされます。ゾーン座標は検証され、各動画に対してPolygonZoneオブジェクトが作成されます。..
  * `triggering_anchor` ([*`string`*](/workflows/ja/gaido/developer-guide/kinds/string.md): オブジェクトを「ゾーン内」とみなすためにゾーン内に存在していなければならない、検出バウンディングボックス上の点。選択肢には 'CENTER'（デフォルト、バウンディングボックスの中心）、'BOTTOM\_CENTER'（下中央点）、'TOP\_CENTER'（上中央点）、'CENTER\_LEFT'（左中央点）、'CENTER\_RIGHT'（右中央点）、および他のPosition enumの値が含まれます。triggering\_anchorは、オブジェクトのバウンディングボックスのどの部分をゾーンポリゴンと照合するかを決定します。標準的なゾーン検出にはCENTER、地面レベルのゾーン（例: 足元／車両ベースの追跡）にはBOTTOM\_CENTER、または検出ニーズに応じた他のアンカーを使用してください。デフォルトは 'CENTER' です。..
  * `remove_out_of_zone_detections` ([*`boolean`*](/workflows/ja/gaido/developer-guide/kinds/boolean.md)True（デフォルト）の場合、ゾーン外で検出されたものはフィルタリングされ、出力に含まれません。ゾーン内の検出のみが返されます。Falseの場合、すべての検出が出力に含まれ、ゾーン外のオブジェクトには time\_in\_zone = 0 が設定されます。ゾーン内のオブジェクトだけに分析を集中させるにはTrueを使用し、すべての検出をゾーン状態付きで保持するにはFalseを使用します。デフォルトは、ゾーン活動に焦点を当てたよりクリーンな出力のためにTrueです。..
  * `reset_out_of_zone_detections` ([*`boolean`*](/workflows/ja/gaido/developer-guide/kinds/boolean.md)True（デフォルト）の場合、追跡対象オブジェクトがゾーンを離れると、その時間追跡はリセットされます（入場タイムスタンプがクリアされます）。オブジェクトがゾーンに再入場すると、時間追跡は0から再開されます。Falseの場合、ゾーンを離れた後も時間追跡は継続し、再入場しても累積時間が維持されます。ゾーン内での現在の連続時間を測定するにはTrue（退出時にリセット）を、複数回の入場をまたいだ累積時間を測定するにはFalseを使用します。連続滞在時間を測定するため、デフォルトはTrueです。..
* 出力
  * `timed_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/time_in_zone@v1",
	    "image": "$inputs.image",
	    "metadata": "<block_does_not_provide_example>",
	    "detections": "$steps.object_detection_model.predictions",
	    "zone": "$inputs.zones",
	    "triggering_anchor": "CENTER",
	    "remove_out_of_zone_detections": true,
	    "reset_out_of_zone_detections": true
	}
```

</details>
