> 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/logic-and-branching/delta-filter.md).

# डेल्टा फ़िल्टर

केवल तब वर्कफ़्लो निष्पादन ट्रिगर करें जब किसी इनपुट मान में उसकी पिछली स्थिति से परिवर्तन हो, जिससे परिवर्तन का पता लग सके, मान स्थिर रहने पर अनावश्यक प्रसंस्करण से बचा जा सके, और केवल स्थिति-परिवर्तन पर डाउनस्ट्रीम चरणों को निष्पादित करके सिस्टम दक्षता को अनुकूलित किया जा सके।

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

यह ब्लॉक एक मान की निगरानी करता है और वर्कफ़्लो निष्पादन को केवल तभी आगे बढ़ाता है जब वह मान अपनी पिछली स्थिति की तुलना में बदल जाए। यह ब्लॉक:

1. इनपुट के रूप में एक छवि (वीडियो मेटाडेटा संदर्भ के लिए) और निगरानी करने योग्य एक मान लेता है
2. वीडियो स्ट्रीम (video\_identifier) की पहचान करने के लिए छवि से वीडियो मेटाडेटा निकालता है
3. इस वीडियो पहचानकर्ता के लिए पहले से कैश किया गया मान आंतरिक कैश से पुनः प्राप्त करता है
4. वर्तमान इनपुट मान की तुलना कैश किए गए पिछले मान से करता है
5. यदि मान बदल गया है (वर्तमान मान ≠ पिछला मान):
   * इस वीडियो पहचानकर्ता के लिए नए मान के साथ कैश को अद्यतन करता है
   * निर्दिष्ट `next_steps` ब्लॉकों तक निष्पादन जारी रखता है, जिससे downstream processing संभव होती है
6. यदि मान नहीं बदला है (वर्तमान मान == पिछला मान):
   * वर्तमान वर्कफ़्लो शाखा को समाप्त करता है, जिससे अनावश्यक डाउनस्ट्रीम निष्पादन रोका जाता है
7. flow control निर्देश लौटाता है जो या तो अगले चरणों तक जारी रहते हैं या शाखा समाप्त करते हैं

यह ब्लॉक प्रत्येक वीडियो स्ट्रीम (video\_identifier द्वारा पहचानी गई) के लिए अलग-अलग कैश किए गए मान बनाए रखता है, जिससे यह कई वीडियो स्रोतों में स्वतंत्र रूप से मान परिवर्तनों को ट्रैक कर सकता है। यह प्रति-वीडियो ट्रैकिंग सुनिश्चित करती है कि अलग-अलग वीडियो स्ट्रीम के बीच स्विच करते समय फ़िल्टर उचित रूप से रीसेट हो जाए। ब्लॉक किसी भी मान प्रकार (संख्याएँ, स्ट्रिंग्स, पहचान गणनाएँ, आदि) की निगरानी का समर्थन करता है, जिससे यह काउंटर, मीट्रिक्स, पहचान परिणामों, या किसी अन्य वर्कफ़्लो डेटा में परिवर्तन का पता लगाने के लिए बहुमुखी बन जाता है। केवल तब डाउनस्ट्रीम ब्लॉक्स ट्रिगर करके जब मान वास्तव में बदलते हैं, Delta Filter अनावश्यक प्रसंस्करण को रोकता है जब मान स्थिर रहते हैं, जो विशेष रूप से वीडियो वर्कफ़्लोज़ में उपयोगी है जहाँ कई फ़्रेमों में समान पहचान गणना या मीट्रिक मान हो सकता है।

## सामान्य उपयोग के मामले

* **काउंटरों के लिए परिवर्तन का पता लगाना**: काउंटर मान बदलने पर ही क्रियाएँ ट्रिगर करें (जैसे, जब line counter count\_in 5 से 6 हो जाए तब डेटा लॉगिंग निष्पादित करें, और जब count 6 पर बना रहे तो प्रसंस्करण छोड़ दें), जिससे मान स्थिर रहने पर अनावश्यक लेखन या अद्यतन से बचा जा सके
* **स्थिति संक्रमण निगरानी**: सिस्टम स्थितियों या पहचान परिणामों में संक्रमण का पता लगाएँ और वर्कफ़्लो को केवल स्थिति बदलने पर ही ट्रिगर करें (जैसे, जब detection class "empty" से "occupied" में बदले तो सूचना निष्पादित करें, और जब स्थिति "occupied" बनी रहे तो छोड़ दें), जिससे एक ही स्थिति के लिए बार-बार क्रियाएँ रोकी जा सकें
* **सशर्त डेटा लॉगिंग**: डेटाबेस, CSV फ़ाइलों, या बाहरी प्रणालियों में केवल तब लिखें जब मान बदलें (जैसे, OPC या PLC प्रणालियों में count परिवर्तनों को लॉग करें, और जब counts अपरिवर्तित हों तो लॉगिंग छोड़ दें), जिससे संग्रहण और नेटवर्क ओवरहेड कम हो
* **घटना-आधारित सूचनाएँ**: अलर्ट या सूचनाएँ केवल तब भेजें जब मान परिवर्तित हों (जैसे, zone count बदलने पर ईमेल सूचना ट्रिगर करें, और count स्थिर रहने पर स्पैम से बचें), जिससे यह सुनिश्चित हो कि सूचनाएँ बार-बार आने वाली स्थितियों के बजाय अर्थपूर्ण परिवर्तनों को दर्शाएँ
* **अनुकूलित प्रसंस्करण पाइपलाइन**: जब निगरानी किए गए मान नहीं बदले हों, तब डाउनस्ट्रीम प्रसंस्करण छोड़कर वीडियो वर्कफ़्लोज़ में संगणनात्मक भार कम करें (जैसे, फ़्रेमों के बीच detection count अपरिवर्तित होने पर महंगा विश्लेषण छोड़ दें), जिससे समग्र वर्कफ़्लो दक्षता बेहतर हो
* **बहु-स्ट्रीम परिवर्तन ट्रैकिंग**: कई वीडियो स्ट्रीमों में मान परिवर्तनों की स्वतंत्र रूप से निगरानी करें (जैसे, अलग-अलग कैमरा फ़ीड्स के लिए zone counts को अलग-अलग ट्रैक करें), और स्वचालित प्रति-वीडियो कैशिंग प्रत्येक स्ट्रीम के लिए सही परिवर्तन पहचान सुनिश्चित करती है

## अन्य ब्लॉक्स से कनेक्ट करना

यह ब्लॉक मानों की निगरानी करता है और वर्कफ़्लो निष्पादन प्रवाह को नियंत्रित करता है, और इससे जोड़ा जा सकता है:

* **गणना या मीट्रिक ब्लॉक्स के बाद** (उदा., Line Counter, Time in Zone, Velocity, Detection Filter) ताकि यह पता लगाया जा सके कि गणनाएँ, मीट्रिक्स, या समेकित मान कब बदलते हैं और मान-परिवर्तन के आधार पर डाउनस्ट्रीम प्रसंस्करण को सशर्त रूप से ट्रिगर किया जा सके
* **पहचान ब्लॉक्स के बाद** (उदा., Object Detection, Classification, Keypoint Detection) ताकि पहचान परिणामों, वर्ग परिवर्तनों, या कॉन्फ़िडेंस मीट्रिक्स की निगरानी की जा सके और केवल तब क्रियाएँ निष्पादित हों जब पहचान परिणाम पिछले फ़्रेमों की तुलना में बदलें
* **डेटा प्रोसेसिंग ब्लॉकों के बाद** (उदा., Property Definition, Expression, Delta Filter) गणना किए गए मानों या संसाधित मीट्रिक्स को ट्रैक करने और वर्कफ़्लोज़ को केवल तब ट्रिगर करने के लिए जब ये गणना किए गए मान परिवर्तित हों, अनावश्यक प्रसंस्करण से बचते हुए
* **डेटा संग्रहण ब्लॉकों से पहले** (उदा., Local File Sink, CSV Formatter, Roboflow Dataset Upload, Webhook Sink) ताकि निगरानी किए गए मान बदलने पर ही डेटा को सशर्त रूप से लॉग या संग्रहीत किया जा सके, और मान स्थिर रहने पर डुप्लिकेट प्रविष्टियों या अनावश्यक लेखन से बचा जा सके
* **सूचना ब्लॉकों से पहले** (उदा., Email Notification, Slack Notification, Twilio SMS Notification) ताकि केवल अर्थपूर्ण परिवर्तन होने पर अलर्ट ट्रिगर किए जाएँ (उदा., count परिवर्तन, स्थिति संक्रमण), और मान स्थिर रहने पर सूचना स्पैम से बचा जा सके
* **वीडियो प्रोसेसिंग workflows में** जहाँ प्रति-फ़्रेम मान कई फ़्रेमों तक स्थिर रह सकते हैं, उस ब्लॉक का उपयोग परिवर्तनों का कुशलता से पता लगाने और केवल आवश्यकता होने पर महंगे डाउनस्ट्रीम ऑपरेशनों को ट्रिगर करने के लिए करें, जिससे संसाधन उपयोग अनुकूलित हो

### प्रकार पहचानकर्ता

स्टेप में निम्नलिखित पहचानकर्ता का उपयोग करें `"type"` फ़ील्ड: `roboflow_core/delta_filter@v1` अपने वर्कफ़्लो में ब्लॉक को एक स्टेप के रूप में जोड़ने के लिए।

### गुण

| **नाम** | **प्रकार** | **विवरण**                                         | संदर्भ |
| ------- | ---------- | ------------------------------------------------- | ------ |
| `name`  | `str`      | इस स्टेप के लिए एक विशिष्ट पहचानकर्ता दर्ज करें.. | ❌      |

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

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

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

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

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

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

<details>

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

* इनपुट
  * `छवि` ([*`छवि`*](/workflows/hi/developer-guide/developer-guide/kinds/image.md)): उपलब्ध नहीं है.
  * `मान` ([*`*`*](/workflows/hi/developer-guide/developer-guide/kinds/wildcard.md)): परिवर्तनों की निगरानी के लिए मान। यह किसी भी डेटा प्रकार (संख्याएँ, स्ट्रिंग्स, पहचान गणनाएँ, मीट्रिक्स, आदि) का हो सकता है, जो वर्कफ़्लो इनपुट या चरण आउटपुट से आता हो। वर्कफ़्लो शाखा केवल तब next\_steps तक जारी रहती है जब यह मान वर्तमान वीडियो स्ट्रीम के लिए पहले से कैश किए गए मान से भिन्न हो। यदि मान समान रहता है, तो अनावश्यक प्रसंस्करण से बचने के लिए शाखा समाप्त हो जाती है। उदाहरण: एक line counter count ($steps.line\_counter.count\_in) की निगरानी करें और केवल तभी क्रियाएँ ट्रिगर करें जब गणना बदलती है..
  * `next_steps` (*चरण*): जब निगरानी किया गया मान अपनी पिछली स्थिति से बदलता है, तब निष्पादित किए जाने वाले वर्कफ़्लो चरणों की सूची। ये चरण केवल तब नियंत्रण प्रवाह प्राप्त करते हैं जब परिवर्तन का पता चलता है, जिससे सशर्त डाउनस्ट्रीम प्रसंस्करण संभव होता है। यदि मान नहीं बदला है, तो शाखा समाप्त हो जाने के कारण ये चरण निष्पादित नहीं होंगे। प्रत्येक चरण चयनक वर्कफ़्लो में उस ब्लॉक का संदर्भ देता है जिसे मान परिवर्तन पर निष्पादित होना चाहिए..
* आउटपुट

</details>

<details>

<summary>उदाहरण JSON परिभाषा</summary>

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/delta_filter@v1",
	    "image": "<block_does_not_provide_example>",
	    "value": "$steps.line_counter.count_in",
	    "next_steps": "$steps.write_to_csv"
	}
```

</details>
