> 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/track-class-lock.md).

# トラッククラス固定

多数決で各追跡オブジェクトのクラスラベルを固定し、同じ物理オブジェクトに対してモデルが類似クラス間で切り替わる動画ワークフローでのクラスのちらつきを排除します。

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

このブロックは、画像の video\_metadata に埋め込まれた video\_identifier をキーとして、トラックごとの投票状態を保持します：

1. ロック前は、条件を満たすすべてのフレーム（confidence >= vote\_confidence）が予測クラスへの1票として数えられます。クラスは min\_votes 票を獲得し、かつ次点クラスに対して少なくとも lead\_margin 票差をつけるとロックされます。
2. ロック後は、ロックされたクラスがそのトラックの以降のすべての検出に書き込まれます。報告される信頼度は、カウントされた票の移動平均（1.0 に上限設定）です。
3. ロックされたクラスは、同じ挑戦クラスが switch\_after 連続の条件を満たすフレームを続けた後にのみ変更できます。挑戦の証拠は連続区間単位で扱われ、連続が途切れるたびに連続カウンタとその信頼度合計の両方がリセットされます。切り替えに成功した場合、新しいクラスの集計値はその連続区間の値のみに基づいて初期化されるため、報告される信頼度が 1.0 を超えることはありません。
4. ロックされたトラックが最近消えた場所に新しい tracker\_id が現れた場合（reattach\_window フレーム以内、バウンディングボックス IoU >= reattach\_iou）、新しいトラックは消失したトラックのロック状態と投票状態を継承します。これにより、短い検出ギャップや遮蔽によって生じる tracker\_id の切り替わりでもロックが維持されます。継承されるのはロック済みトラックのみで、現在のフレームにまだ存在しているトラックは継承されません。再アタッチを無効にするには reattach\_window を 0 に設定してください。
5. state\_ttl フレームの間見えなかったトラックの状態は削除されます。

各検出にはブール値の `class_locked` フラグが detections.data に付与されます。

## 要件

検出には tracker\_id が含まれている必要があります（このブロックは Byte Tracker のようなトラッキングブロックの後に接続してください）。画像の video\_metadata は、動画ストリームごとに個別の状態を保持するために使用されます。

### 型識別子

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

### プロパティ

| **名前**            | **型**   | **説明**                                                                                                                                          | 参照 |
| ----------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`            | `str`   | このステップの一意の識別子を入力してください。                                                                                                                         | ❌  |
| `min_votes`       | `整数`    | 初回ロックを獲得する前に、そのクラスに必要な条件を満たす累積票数です。値を大きくするとロックは遅くなりますが、初期判定の信頼性は高まります。                                                                          | ✅  |
| `vote_confidence` | `float` | フレームを票として数えるための最小予測信頼度です。ロック前の投票とロック後の挑戦クラスの連続区間の両方に適用されます。このしきい値未満のフレームは無視されます。                                                                | ✅  |
| `lead_margin`     | `整数`    | ロック前に、最上位クラスが次点クラスに対して何票差でリードしていなければならないかを表す票数です。2つのクラスが競合しているときの早すぎるロックを防ぎます。                                                                  | ✅  |
| `switch_after`    | `整数`    | 既存のロックを変更するために必要な、同じ挑戦クラスの連続フレーム数です。いずれかで途切れると連続はリセットされます。最小値は 1（1 にすると反対のフレーム 1 つで切り替わります。複数フレームの連続を強制するには >= 2 を使用してください）。                    | ✅  |
| `state_ttl`       | `整数`    | 見えないトラックの状態が削除されるまでのフレーム数です。                                                                                                                    | ✅  |
| `reattach_window` | `整数`    | ロックされたトラックがこのフレーム数以内に消えた場所に新しい tracker\_id が現れた場合、新しいトラックは消失したトラックのロックと票を継承します。短い検出ギャップによる tracker\_id の切り替わりを橋渡しします。再アタッチを無効にするには 0 に設定してください。 | ✅  |
| `reattach_iou`    | `float` | ロックを継承するために、新しい検出のバウンディングボックスと、最近失われたロック済みトラックの最後に既知のバウンディングボックスとの間に必要な最小 IoU です。値を大きくすると、オブジェクトは消えた場所のより近くに再出現する必要があります。                       | ✅  |

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

### ランタイム互換性

`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\[*[*`rle_instance_segmentation_prediction`*](/workflows/ja/gaido/developer-guide/kinds/rle-instance-segmentation-prediction.md)*,* [*`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)*,* [*`keypoint_detection_prediction`*](/workflows/ja/gaido/developer-guide/kinds/keypoint-detection-prediction.md)*]*): 追跡済み予測（物体検出、インスタンスセグメンテーション、キーポイント検出、または RLE インスタンスセグメンテーション）。トラッキングブロックからの tracker\_id 情報を含める必要があります。
  * `min_votes` ([*`整数`*](/workflows/ja/gaido/developer-guide/kinds/integer.md)): 初回ロックを獲得する前に、そのクラスに必要な条件を満たす累積票数です。値を大きくするとロックは遅くなりますが、初期判定の信頼性は高まります。
  * `vote_confidence` ([*`float_zero_to_one`*](/workflows/ja/gaido/developer-guide/kinds/float-zero-to-one.md)): フレームを票として数えるための最小予測信頼度です。ロック前の投票とロック後の挑戦クラスの連続区間の両方に適用されます。このしきい値未満のフレームは無視されます。
  * `lead_margin` ([*`整数`*](/workflows/ja/gaido/developer-guide/kinds/integer.md)): ロック前に、最上位クラスが次点クラスに対して何票差でリードしていなければならないかを表す票数です。2つのクラスが競合しているときの早すぎるロックを防ぎます。
  * `switch_after` ([*`整数`*](/workflows/ja/gaido/developer-guide/kinds/integer.md)): 既存のロックを変更するために必要な、同じ挑戦クラスの連続フレーム数です。いずれかで途切れると連続はリセットされます。最小値は 1（1 にすると反対のフレーム 1 つで切り替わります。複数フレームの連続を強制するには >= 2 を使用してください）。
  * `state_ttl` ([*`整数`*](/workflows/ja/gaido/developer-guide/kinds/integer.md)): 見えないトラックの状態が削除されるまでのフレーム数です。
  * `reattach_window` ([*`整数`*](/workflows/ja/gaido/developer-guide/kinds/integer.md)): ロックされたトラックがこのフレーム数以内に消えた場所に新しい tracker\_id が現れた場合、新しいトラックは消失したトラックのロックと票を継承します。短い検出ギャップによる tracker\_id の切り替わりを橋渡しします。再アタッチを無効にするには 0 に設定してください。
  * `reattach_iou` ([*`float_zero_to_one`*](/workflows/ja/gaido/developer-guide/kinds/float-zero-to-one.md)): ロックを継承するために、新しい検出のバウンディングボックスと、最近失われたロック済みトラックの最後に既知のバウンディングボックスとの間に必要な最小 IoU です。値を大きくすると、オブジェクトは消えた場所のより近くに再出現する必要があります。
* 出力
  * `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)*,* [*`keypoint_detection_prediction`*](/workflows/ja/gaido/developer-guide/kinds/keypoint-detection-prediction.md)*,* [*`rle_instance_segmentation_prediction`*](/workflows/ja/gaido/developer-guide/kinds/rle-instance-segmentation-prediction.md)*]*）：sv.Detections(...) 形式の検出バウンディングボックスを含む予測。 `object_detection_prediction` または、sv.Detections(...) 形式の検出バウンディングボックスとセグメンテーションマスクを含む予測。 `instance_segmentation_prediction` または、検出されたバウンディングボックスと検出されたキーポイントを sv.Detections(...) オブジェクトの形式で持つ Prediction の場合 `keypoint_detection_prediction` または、sv.Detections(...) オブジェクト形式で、検出されたバウンディングボックスと RLE エンコードされたセグメンテーションマスクを含む Prediction。もし `rle_instance_segmentation_prediction`.

</details>

<details>

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

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/track_class_lock@v1",
	    "image": "<block_does_not_provide_example>",
	    "detections": "$steps.byte_tracker.tracked_detections",
	    "min_votes": 10,
	    "vote_confidence": 0.8,
	    "lead_margin": 3,
	    "switch_after": 15,
	    "state_ttl": 300,
	    "reattach_window": 30,
	    "reattach_iou": 0.3
	}
```

</details>
