> 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/hi/blocks/blocks/video-processing/track-class-lock.md).

# ट्रैक क्लास लॉक

प्रत्येक ट्रैक किए गए ऑब्जेक्ट के वर्ग लेबल को बहुमत मतदान द्वारा लॉक करें, जिससे वीडियो वर्कफ़्लो में वर्ग-झिलमिलाहट समाप्त हो जाती है, जहाँ एक मॉडल एक ही भौतिक ऑब्जेक्ट के लिए समान वर्गों के बीच अदला-बदली करता है।

## यह ब्लॉक कैसे काम करता है

यह ब्लॉक प्रत्येक ट्रैक के लिए मतदान स्थिति बनाए रखता है, जिसे छवि के वीडियो मेटाडेटा में एम्बेड किए गए video\_identifier द्वारा कुंजीबद्ध किया जाता है:

1. लॉक से पहले, हर योग्य फ़्रेम (confidence >= vote\_confidence) अनुमानित वर्ग के लिए एक वोट माना जाता है। एक वर्ग तब लॉक हो जाता है जब उसे min\_votes वोट मिल जाते हैं और वह उपविजेता वर्ग से कम से कम lead\_margin वोटों से आगे होता है।
2. लॉक के बाद, लॉक किया गया वर्ग उस ट्रैक के हर बाद के डिटेक्शन में लिखा जाता है। रिपोर्ट की गई confidence गिने गए वोटों का चल औसत है (1.0 तक सीमित)।
3. एक लॉक किया गया वर्ग केवल तभी बदल सकता है जब उसी प्रतिद्वंद्वी वर्ग के switch\_after लगातार योग्य फ़्रेम आ जाएँ। प्रतिद्वंद्वी का प्रमाण streak-scoped होता है: streak काउंटर और उसका confidence योग दोनों streak टूटते ही रीसेट हो जाते हैं, और सफल स्विच पर नए वर्ग की गिनतियाँ केवल streak मानों से सीड की जाती हैं, इसलिए रिपोर्ट की गई confidence कभी 1.0 से अधिक नहीं होती।
4. जब एक नया tracker id दिखाई देता है जहाँ एक लॉक किया गया ट्रैक हाल ही में गायब हुआ हो (reattach\_window फ़्रेमों के भीतर, bounding box IoU >= reattach\_iou), तो नया ट्रैक खोए हुए ट्रैक का लॉक और मतदान स्थिति विरासत में लेता है। इससे छोटे डिटेक्शन गैप या आच्छादन (occlusions) के कारण होने वाले 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`       | `int`      | कोई वर्ग प्रारंभिक लॉक प्राप्त करने से पहले उसे जितने संचयी योग्य वोट चाहिए। अधिक मान लॉकिंग को विलंबित करते हैं, लेकिन प्रारंभिक निर्णय को अधिक विश्वसनीय बनाते हैं..                                                                                                                   | ✅      |
| `vote_confidence` | `float`    | किसी फ़्रेम को गिने जाने के लिए न्यूनतम prediction confidence, प्री-लॉक वोटों और पोस्ट-लॉक प्रतिद्वंद्वी streaks दोनों के लिए। इस सीमा से नीचे के फ़्रेमों को अनदेखा किया जाता है..                                                                                                      | ✅      |
| `lead_margin`     | `int`      | लॉक करने से पहले शीर्ष वर्ग को उपविजेता से जितने वोटों से आगे होना चाहिए। जब दो वर्गों में प्रतिस्पर्धा हो रही हो, तब यह समय से पहले लॉक होने से रोकता है..                                                                                                                              | ✅      |
| `switch_after`    | `int`      | किसी मौजूदा लॉक को बदलने के लिए उसी प्रतिद्वंद्वी वर्ग के लगातार CONSECUTIVE योग्य फ़्रेमों की संख्या आवश्यक है। कोई भी रुकावट streak को रीसेट कर देती है। न्यूनतम 1 (1 का मान एक ही विपरीत फ़्रेम पर स्विच करता है; बहु-फ़्रेम streak लागू करने के लिए >= 2 का उपयोग करें)..            | ✅      |
| `state_ttl`       | `int`      | उन फ़्रेमों की संख्या जिनके बाद न देखे गए ट्रैकों की स्थिति हटा दी जाती है..                                                                                                                                                                                                             | ✅      |
| `reattach_window` | `int`      | जब एक नया tracker id दिखाई देता है जहाँ एक लॉक किया गया ट्रैक इस कई फ़्रेमों के भीतर गायब हुआ हो, तो नया ट्रैक खोए हुए ट्रैक का लॉक और वोट विरासत में लेता है। छोटे डिटेक्शन गैप के कारण होने वाले tracker id स्विच को जोड़ता है। पुनः-संलग्नता को निष्क्रिय करने के लिए 0 पर सेट करें.. | ✅      |
| `reattach_iou`    | `float`    | लॉक विरासत में लेने के लिए किसी नए डिटेक्शन के bounding box और हाल ही में खोए हुए लॉक किए गए ट्रैक के अंतिम ज्ञात bounding box के बीच न्यूनतम IoU। अधिक मानों के लिए आवश्यक है कि ऑब्जेक्ट उसी जगह के अधिक करीब फिर से दिखाई दे जहाँ वह गायब हुआ था..                                    | ✅      |

यह **संदर्भ** स्तंभ यह इंगित करता है कि संपत्ति को वर्कफ़्लो रनटाइम में उपलब्ध गतिशील मानों के साथ पैरामीटराइज़ किया जा सकता है `वर्कफ़्लो` रनटाइम। देखें *बाइंडिंग्स* अधिक जानकारी के लिए।

### रनटाइम संगतता

`सॉफ्ट` - रनटाइम `hosted_serverless`, `dedicated_deployment`; निष्पादन `दूरस्थ`; इनपुट `वीडियो` : ब्लॉक प्रति-वीडियो स्थिति को प्रक्रिया मेमोरी में बनाए रखता है (video\_metadata.video\_identifier द्वारा कुंजीबद्ध)। स्टेटलेस या मल्टी-रिप्लिका HTTP रनटाइम्स पर दूरस्थ स्टेप निष्पादन के साथ, क्रमिक अनुरोधों को अलग-अलग वर्कर प्रक्रियाएँ सर्व कर सकती हैं, इसलिए कॉल्स के बीच स्थिति रीसेट हो जाती है और आउटपुट ट्रैकिंग / काउंटिंग / एग्रीगेशन के लिए अर्थहीन हो जाता है। स्थिर फ़्रेम-से-फ़्रेम परिणामों के लिए एक स्थायी WebRTC सत्र में स्थानीय स्टेप निष्पादन का उपयोग करें।

`सॉफ्ट` - इनपुट `छवि` : ब्लॉक वीडियो या दोहराए गए-फ़्रेम वर्कफ़्लो से समयगत संदर्भ पर निर्भर करता है। एक स्थिर छवि/फ़ोटो के साथ, ट्रैक करने, तुलना करने, समेकित करने या दृश्यीकृत करने के लिए कोई अर्थपूर्ण इतिहास नहीं होता, इसलिए ब्लॉक बहुत कम या कोई लाभ नहीं देता।

### इनपुट और आउटपुट बाइंडिंग्स

उपलब्ध कनेक्शन उसके बाइंडिंग प्रकारों पर निर्भर करते हैं। देखें कि कौन-से बाइंडिंग प्रकार `ट्रैक क्लास लॉक` संस्करण `v1` है।

<details>

<summary>इनपुट और आउटपुट बाइंडिंग्स</summary>

* इनपुट
  * `छवि` ([*`छवि`*](/workflows/hi/developer-guide/developer-guide/kinds/image.md)): एम्बेड किए गए वीडियो मेटाडेटा वाली छवि। video\_metadata में video\_identifier होता है, जिसका उपयोग विभिन्न वीडियो के लिए अलग मतदान स्थिति बनाए रखने में किया जाता है..
  * `detections` (*Union\[*[*`rle_instance_segmentation_prediction`*](/workflows/hi/developer-guide/developer-guide/kinds/rle-instance-segmentation-prediction.md)*,* [*`object_detection_prediction`*](/workflows/hi/developer-guide/developer-guide/kinds/object-detection-prediction.md)*,* [*`instance_segmentation_prediction`*](/workflows/hi/developer-guide/developer-guide/kinds/instance-segmentation-prediction.md)*,* [*`keypoint_detection_prediction`*](/workflows/hi/developer-guide/developer-guide/kinds/keypoint-detection-prediction.md)*]*): ट्रैक की गई भविष्यवाणियाँ (ऑब्जेक्ट डिटेक्शन, इंस्टेंस सेगमेंटेशन, कीपॉइंट डिटेक्शन या RLE इंस्टेंस सेगमेंटेशन)। इसमें किसी ट्रैकिंग ब्लॉक से tracker\_id जानकारी शामिल होनी चाहिए..
  * `min_votes` ([*`पूर्णांक`*](/workflows/hi/developer-guide/developer-guide/kinds/integer.md)): कोई वर्ग प्रारंभिक लॉक प्राप्त करने से पहले उसे जितने संचयी योग्य वोट चाहिए। अधिक मान लॉकिंग को विलंबित करते हैं, लेकिन प्रारंभिक निर्णय को अधिक विश्वसनीय बनाते हैं..
  * `vote_confidence` ([*`float_zero_to_one`*](/workflows/hi/developer-guide/developer-guide/kinds/float-zero-to-one.md)): किसी फ़्रेम को गिने जाने के लिए न्यूनतम prediction confidence, प्री-लॉक वोटों और पोस्ट-लॉक प्रतिद्वंद्वी streaks दोनों के लिए। इस सीमा से नीचे के फ़्रेमों को अनदेखा किया जाता है..
  * `lead_margin` ([*`पूर्णांक`*](/workflows/hi/developer-guide/developer-guide/kinds/integer.md)): लॉक करने से पहले शीर्ष वर्ग को उपविजेता से जितने वोटों से आगे होना चाहिए। जब दो वर्गों में प्रतिस्पर्धा हो रही हो, तब यह समय से पहले लॉक होने से रोकता है..
  * `switch_after` ([*`पूर्णांक`*](/workflows/hi/developer-guide/developer-guide/kinds/integer.md)): किसी मौजूदा लॉक को बदलने के लिए उसी प्रतिद्वंद्वी वर्ग के लगातार CONSECUTIVE योग्य फ़्रेमों की संख्या आवश्यक है। कोई भी रुकावट streak को रीसेट कर देती है। न्यूनतम 1 (1 का मान एक ही विपरीत फ़्रेम पर स्विच करता है; बहु-फ़्रेम streak लागू करने के लिए >= 2 का उपयोग करें)..
  * `state_ttl` ([*`पूर्णांक`*](/workflows/hi/developer-guide/developer-guide/kinds/integer.md)): उन फ़्रेमों की संख्या जिनके बाद न देखे गए ट्रैकों की स्थिति हटा दी जाती है..
  * `reattach_window` ([*`पूर्णांक`*](/workflows/hi/developer-guide/developer-guide/kinds/integer.md)): जब एक नया tracker id दिखाई देता है जहाँ एक लॉक किया गया ट्रैक इस कई फ़्रेमों के भीतर गायब हुआ हो, तो नया ट्रैक खोए हुए ट्रैक का लॉक और वोट विरासत में लेता है। छोटे डिटेक्शन गैप के कारण होने वाले tracker id स्विच को जोड़ता है। पुनः-संलग्नता को निष्क्रिय करने के लिए 0 पर सेट करें..
  * `reattach_iou` ([*`float_zero_to_one`*](/workflows/hi/developer-guide/developer-guide/kinds/float-zero-to-one.md)): लॉक विरासत में लेने के लिए किसी नए डिटेक्शन के bounding box और हाल ही में खोए हुए लॉक किए गए ट्रैक के अंतिम ज्ञात bounding box के बीच न्यूनतम IoU। अधिक मानों के लिए आवश्यक है कि ऑब्जेक्ट उसी जगह के अधिक करीब फिर से दिखाई दे जहाँ वह गायब हुआ था..
* आउटपुट
  * `tracked_detections` (*Union\[*[*`object_detection_prediction`*](/workflows/hi/developer-guide/developer-guide/kinds/object-detection-prediction.md)*,* [*`instance_segmentation_prediction`*](/workflows/hi/developer-guide/developer-guide/kinds/instance-segmentation-prediction.md)*,* [*`keypoint_detection_prediction`*](/workflows/hi/developer-guide/developer-guide/kinds/keypoint-detection-prediction.md)*,* [*`rle_instance_segmentation_prediction`*](/workflows/hi/developer-guide/developer-guide/kinds/rle-instance-segmentation-prediction.md)*]*): यदि sv.Detections(...) ऑब्जेक्ट के रूप में पहचाने गए बाउंडिंग बॉक्स वाली प्रेडिक्शन `object_detection_prediction` या यदि sv.Detections(...) ऑब्जेक्ट के रूप में पहचाने गए बाउंडिंग बॉक्स और सेगमेंटेशन मास्क वाली प्रेडिक्शन `instance_segmentation_prediction` या पहचाने गए बाउंडिंग बॉक्स और पहचाने गए कीपॉइंट्स वाली Prediction, sv.Detections(...) ऑब्जेक्ट के रूप में, यदि `keypoint_detection_prediction` या detected bounding boxes और RLE-encoded segmentation masks के साथ Prediction, sv.Detections(...) ऑब्जेक्ट के रूप में यदि `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>
