डिटेक्शन स्थिरीकारक
वीडियो फ्रेम्स के across शोर और झिलमिलाहट कम करने के लिए smoothing algorithm लागू करें।
वीडियो फ़्रेमों में ट्रैक किए गए डिटेक्शनों में शोर और फ़्लिकरिंग कम करने के लिए स्मूदिंग एल्गोरिदम लागू करें, जिसमें वस्तु वेग की भविष्यवाणी के लिए Kalman filtering, बाउंडिंग बॉक्स स्थितियों को स्मूद करने के लिए exponential moving average, और अस्थायी रूप से अनुपस्थित डिटेक्शनों को पुनर्स्थापित करने के लिए gap filling का उपयोग किया जाता है, ताकि ट्रैकिंग स्थिरता और अधिक स्मूद विज़ुअलाइज़ेशन वर्कफ़्लो बेहतर हों।
यह ब्लॉक कैसे काम करता है
यह ब्लॉक ट्रैक किए गए डिटेक्शनों को जिटर कम करके, स्थितियों को स्मूद करके, और जब वस्तुएँ डिटेक्शन से अस्थायी रूप से गायब हो जाती हैं, तब गैप भरकर स्थिर करता है। यह ब्लॉक:
अद्वितीय ट्रैकर IDs और एम्बेडेड वीडियो मेटाडेटा वाली एक छवि के साथ ट्रैक की गई डिटेक्शन भविष्यवाणियाँ प्राप्त करता है
छवि से वीडियो मेटाडेटा निकालता है:
video_identifier प्राप्त करने के लिए video_metadata तक पहुँचता है
विभिन्न वीडियो के लिए अलग स्थिरीकरण स्थिति बनाए रखने हेतु video_identifier का उपयोग करता है
सत्यापित करता है कि डिटेक्शनों में ट्रैकर IDs हैं (फ़्रेमों के बीच ऑब्जेक्ट गति को ट्रैक करने के लिए आवश्यक)
वीडियो के लिए स्थिरीकरण स्थिति को आरंभ करता है या प्राप्त करता है:
प्रत्येक video में प्रत्येक tracker_id के लिए अंतिम ज्ञात डिटेक्शनों का एक कैश बनाए रखता है
प्रत्येक video के लिए वेग पूर्वानुमान हेतु Kalman filter बनाता है या प्राप्त करता है
video_identifier का उपयोग करके प्रत्येक video के लिए अलग स्थिति संग्रहीत करता है
मौजूदा ट्रैकों के लिए वस्तु वेग मापता है:
वर्तमान फ़्रेम के बाउंडिंग बॉक्स केंद्रों की पिछले फ़्रेम के केंद्रों से तुलना करके वेग की गणना करता है
वर्तमान और पिछले दोनों फ़्रेमों में मौजूद वस्तुओं के लिए विस्थापन (स्थिति में परिवर्तन) की गणना करता है
वेग मापों का उपयोग Kalman filter को अद्यतन करने के लिए किया जाता है
वेग मापों के साथ Kalman filter को अद्यतन करता है:
ऐतिहासिक मापों के आधार पर स्मूद वेगों की भविष्यवाणी करने के लिए Kalman filtering का उपयोग करता है
वेग मापों की एक sliding window बनाए रखता है (smoothing_window_size द्वारा नियंत्रित)
वेग अनुमानों को स्मूद करने के लिए Kalman filter के भीतर exponential moving average लागू करता है
डिटेक्शन की अशुद्धियों और फ़्रेम-दर-फ़्रेम भिन्नताओं से उत्पन्न शोर को फ़िल्टर करता है
वर्तमान फ़्रेम में मौजूद वस्तुओं के लिए बाउंडिंग बॉक्स को स्मूद करता है:
बाउंडिंग बॉक्स निर्देशांकों पर exponential moving average smoothing लागू करता है
bbox_smoothing_coefficient का उपयोग करके पिछले फ़्रेम की स्थिति को वर्तमान फ़्रेम की स्थिति के साथ संयोजित करता है
सूत्र: smoothed_bbox = alpha * current_bbox + (1 - alpha) * previous_bbox
डिटेक्शन भिन्नताओं से होने वाले जिटर और फ़्लिकरिंग को कम करता है
गायब डिटेक्शनों के लिए स्थितियों का पूर्वानुमान करता है:
गायब हो चुकी वस्तुओं की स्थितियों का अनुमान लगाने के लिए Kalman filter द्वारा पूर्वानुमानित वेगों का उपयोग करता है
पूर्वानुमानित वेग को अंतिम ज्ञात बाउंडिंग बॉक्स स्थिति पर लागू करता है
वर्तमान फ़्रेम से अस्थायी रूप से गायब रहे डिटेक्शनों को पुनर्स्थापित करके गैप भरता है
पूर्वानुमानित स्थितियों को exponential moving average का उपयोग करके स्मूद करता है
ट्रैकिंग स्थिति का प्रबंधन करता है:
अगले फ़्रेम की गणनाओं के लिए वर्तमान फ़्रेम डिटेक्शनों के साथ कैश को अद्यतन करता है
जो वस्तुएँ smoothing_window_size फ़्रेम से अधिक समय तक गायब रही हैं, उनके लिए ट्रैकिंग प्रविष्टियाँ हटाता है
प्रत्येक video_identifier के लिए अलग स्थिति बनाए रखता है
स्थिर किए गए डिटेक्शनों को मर्ज करके लौटाता है:
स्मूद किए गए डिटेक्शन (वर्तमान फ़्रेम से) और पूर्वानुमानित डिटेक्शन (गायब वस्तुओं के लिए) को संयोजित करता है
शोर कम किए गए और गैप भरे गए स्थिर डिटेक्शन ऑब्जेक्ट्स आउटपुट करता है
सुसंगत ट्रैकिंग के लिए सभी डिटेक्शन अपने tracker IDs बनाए रखते हैं
यह ब्लॉक दो पूरक smoothing तकनीकों का उपयोग करता है: Kalman filtering वेग पूर्वानुमान के लिए (यह अनुमान लगाने हेतु कि वस्तुएँ कितनी तेज़ी से चल रही हैं) और exponential moving average स्थिति smoothing के लिए (बाउंडिंग बॉक्स जिटर कम करने हेतु)। Kalman filter वेग मापों का इतिहास बनाए रखता है और भविष्य के वेगों का पूर्वानुमान लगाने के लिए सांख्यिकीय अनुमान का उपयोग करता है, साथ ही शोर को फ़िल्टर करता है। exponential moving average वर्तमान और पिछले स्थितियों को मिलाकर बाउंडिंग बॉक्स निर्देशांकों को स्मूद करता है। Gap filling अस्थायी रूप से गायब होने वाले डिटेक्शनों को पुनर्स्थापित करने के लिए पूर्वानुमानित वेगों का उपयोग करता है, जिससे track continuity बनाए रखने में मदद मिलती है। नोट: यह ब्लॉक अस्थिर trackers के लिए अल्पकालिक बाउंडिंग बॉक्स उत्पन्न कर सकता है, क्योंकि यह उन स्थितियों में भी गैप भरने का प्रयास करता है जब वस्तुएँ असंगत रूप से डिटेक्ट होती हैं।
सामान्य उपयोग के मामले
वीडियो विज़ुअलाइज़ेशन: अधिक स्मूद विज़ुअलाइज़ेशन के लिए वीडियो एनोटेशन में फ़्लिकरिंग और जिटर कम करें (उदाहरण: बाउंडिंग बॉक्स की चाल को स्मूद करें, annotation noise कम करें, वीडियो विज़ुअलाइज़ेशन की गुणवत्ता सुधारें), जिससे स्थिर वीडियो विज़ुअलाइज़ेशन वर्कफ़्लो सक्षम हों
ट्रैकिंग स्थिरता: जब डिटेक्शन शोरयुक्त या असंगत हों, तब ट्रैकिंग स्थिरता में सुधार करें (उदाहरण: शोरयुक्त डिटेक्शनों को स्थिर करें, ट्रैकिंग जिटर कम करें, tracking continuity बेहतर करें), जिससे स्थिर tracking वर्कफ़्लो सक्षम हों
अस्थायी अवरोधन हैंडलिंग: जब वस्तुएँ अस्थायी रूप से अवरुद्ध हों या डिटेक्शन से गायब हों, तब गैप भरें (उदाहरण: संक्षिप्त occlusions के दौरान ट्रैक बनाए रखें, detection gaps भरें, tracking continuity संरक्षित करें), जिससे occlusion handling वर्कफ़्लो सक्षम हों
रीयल-टाइम मॉनिटरिंग: वास्तविक-समय मॉनिटरिंग अनुप्रयोगों में दृश्य गुणवत्ता में सुधार करें (उदाहरण: लाइव वीडियो एनोटेशन को स्मूद करें, मॉनिटरिंग डिस्प्ले में फ़्लिकरिंग कम करें, real-time visualization बेहतर करें), जिससे स्थिर real-time monitoring वर्कफ़्लो सक्षम हों
एनालिटिक्स सटीकता: स्थिर डिटेक्शन स्थितियों पर निर्भर एनालिटिक्स गणनाओं में शोर कम करें (उदाहरण: स्थिति-आधारित एनालिटिक्स सुधारें, मापों में शोर कम करें, movement calculations स्थिर करें), जिससे सटीक एनालिटिक्स वर्कफ़्लो सक्षम हों
गुणवत्ता नियंत्रण: डाउनस्ट्रीम प्रोसेसिंग के लिए डिटेक्शन गुणवत्ता में सुधार करें (उदाहरण: विश्लेषण से पहले डिटेक्शनों को स्मूद करें, बेहतर प्रोसेसिंग के लिए शोर कम करें, अन्य ब्लॉकों के लिए इनपुट स्थिर करें), जिससे गुणवत्ता-सुधार वर्कफ़्लो सक्षम हों
अन्य ब्लॉक्स से कनेक्ट करना
यह ब्लॉक ट्रैक किए गए डिटेक्शन और एक छवि प्राप्त करता है, और स्थिर किए गए tracked_detections उत्पन्न करता है:
Byte Tracker ब्लॉक्स के बाद ट्रैक किए गए डिटेक्शनों को स्थिर करने के लिए (उदाहरण: ट्रैक किए गए वस्तु स्थितियों को स्मूद करें, ट्रैकिंग जिटर कम करें, tracking gaps भरें), जिससे tracking-stabilization वर्कफ़्लो सक्षम हों
ऑब्जेक्ट डिटेक्शन या इंस्टेंस सेगमेंटेशन ब्लॉक्स के बाद tracking सक्षम के साथ डिटेक्शनों को स्थिर करने के लिए (उदाहरण: डिटेक्शन स्थितियों को स्मूद करें, डिटेक्शन शोर कम करें, ट्रैकिंग स्थिरता सुधारें), जिससे detection-stabilization वर्कफ़्लो सक्षम हों
विज़ुअलाइज़ेशन ब्लॉकों से पहले स्थिर डिटेक्शनों को प्रदर्शित करने के लिए (उदाहरण: स्मूद बाउंडिंग बॉक्स विज़ुअलाइज़ करें, स्थिर एनोटेशन दिखाएँ, गैप-भरे डिटेक्शन दिखाएँ), जिससे स्थिर visualization वर्कफ़्लो सक्षम हों
विश्लेषण ब्लॉकों से पहले विश्लेषण के लिए स्थिर इनपुट प्रदान करने के लिए (उदाहरण: स्थिर स्थितियों का विश्लेषण करें, स्मूद मूवमेंट डेटा प्रोसेस करें, gap-filled detections के साथ काम करें), जिससे स्थिर analytics वर्कफ़्लो सक्षम हों
वेग या path analysis ब्लॉकों से पहले मापन सटीकता में सुधार करने के लिए (उदाहरण: स्थिर स्थितियों से वेगों की गणना करें, स्मूद trajectories से paths का विश्लेषण करें, gap-filled detections से मापन करें), जिससे सटीक मापन वर्कफ़्लो सक्षम हों
वीडियो प्रोसेसिंग पाइपलाइनों में जहाँ डाउनस्ट्रीम प्रोसेसिंग के लिए डिटेक्शन स्थिरता आवश्यक है (उदाहरण: प्रोसेसिंग चेन में डिटेक्शनों को स्थिर करें, विश्लेषण के लिए गुणवत्ता सुधारें, pipelines में शोर कम करें), जिससे स्थिर वीडियो प्रोसेसिंग वर्कफ़्लो सक्षम हों
आवश्यकताएँ
इस ब्लॉक को tracker_id जानकारी के साथ ट्रैक किए गए डिटेक्शन की आवश्यकता होती है (डिटेक्शन Byte Tracker जैसे tracking block से आने चाहिए)। विभिन्न वीडियो के लिए अलग स्थिरीकरण स्थिति बनाए रखने हेतु छवि के video_metadata में video_identifier शामिल होना चाहिए। यह ब्लॉक प्रत्येक वीडियो के लिए फ़्रेमों के बीच स्थायी स्थिरीकरण स्थिति बनाए रखता है, इसलिए इसे ऐसे वीडियो वर्कफ़्लो में उपयोग करना चाहिए जहाँ फ़्रेम क्रम से प्रोसेस किए जाते हैं। सर्वोत्तम स्थिरीकरण के लिए, मान्य tracker IDs के साथ डिटेक्शन फ़्रेमों के बीच लगातार प्रदान किए जाने चाहिए। smoothing_window_size यह नियंत्रित करता है कि Kalman filtering के लिए कितने ऐतिहासिक वेग माप उपयोग होंगे और गायब डिटेक्शन कितने समय तक रखे जाएंगे। bbox_smoothing_coefficient (0-1) वर्तमान और पिछले स्थितियों के बीच संतुलन नियंत्रित करता है - कम मान अधिक smoothing लेकिन परिवर्तनों पर धीमी प्रतिक्रिया देते हैं, अधिक मान कम smoothing लेकिन तेज़ प्रतिक्रिया देते हैं। नोट: यह ब्लॉक अस्थिर trackers के लिए अल्पकालिक बाउंडिंग बॉक्स उत्पन्न कर सकता है क्योंकि यह उन स्थितियों में भी गैप भरने का प्रयास करता है जब वस्तुएँ असंगत रूप से डिटेक्ट होती हैं।
प्रकार पहचानकर्ता
स्टेप में निम्नलिखित पहचानकर्ता का उपयोग करें "type" फ़ील्ड: roboflow_core/stabilize_detections@v1 अपने वर्कफ़्लो में ब्लॉक को एक स्टेप के रूप में जोड़ने के लिए।
गुण
नाम
प्रकार
विवरण
संदर्भ
name
str
इस स्टेप के लिए एक विशिष्ट पहचानकर्ता दर्ज करें..
❌
smoothing_window_size
int
Kalman filter में वेग smoothing के लिए sliding window का आकार, जो यह नियंत्रित करता है कि कितने ऐतिहासिक वेग माप उपयोग होंगे। यह यह भी निर्धारित करता है कि हटाए जाने से पहले गायब डिटेक्शन कितने समय तक रखे जाएंगे। बड़े मान अधिक smoothing प्रदान करते हैं लेकिन परिवर्तनों के प्रति धीमी अनुकूलन क्षमता देते हैं। छोटे मान कम smoothing देते हैं लेकिन तेज़ अनुकूलन क्षमता देते हैं। इस संख्या के फ़्रेमों से अधिक समय तक गायब रहने वाले डिटेक्शन ट्रैकिंग स्थिति से हटा दिए जाते हैं। सामान्य सीमा: 3-10 फ़्रेम..
✅
bbox_smoothing_coefficient
float
बाउंडिंग बॉक्स स्थिति smoothing के लिए exponential moving average coefficient (alpha), सीमा 0.0-1.0। वर्तमान और पिछले बाउंडिंग बॉक्स स्थितियों के बीच मिश्रण को नियंत्रित करता है: smoothed_bbox = alpha * current + (1-alpha) * previous. कम मान (0 के अधिक निकट) अधिक smoothing प्रदान करते हैं - परिवर्तनों पर धीमी प्रतिक्रिया, कम जिटर। अधिक मान (1 के अधिक निकट) कम smoothing प्रदान करते हैं - परिवर्तनों पर तेज़ प्रतिक्रिया, अधिक जिटर। डिफ़ॉल्ट 0.2 smoothness और responsiveness के बीच संतुलन बनाता है। सामान्य सीमा: 0.1-0.5..
✅
यह संदर्भ स्तंभ यह इंगित करता है कि संपत्ति को वर्कफ़्लो रनटाइम में उपलब्ध गतिशील मानों के साथ पैरामीटराइज़ किया जा सकता है वर्कफ़्लो रनटाइम। देखें बाइंडिंग्स अधिक जानकारी के लिए।
रनटाइम संगतता
सॉफ्ट - रनटाइम hosted_serverless, dedicated_deployment; निष्पादन दूरस्थ; इनपुट वीडियो : ब्लॉक प्रति-वीडियो स्थिति को प्रक्रिया मेमोरी में बनाए रखता है (video_metadata.video_identifier द्वारा कुंजीबद्ध)। स्टेटलेस या मल्टी-रिप्लिका HTTP रनटाइम्स पर दूरस्थ स्टेप निष्पादन के साथ, क्रमिक अनुरोधों को अलग-अलग वर्कर प्रक्रियाएँ सर्व कर सकती हैं, इसलिए कॉल्स के बीच स्थिति रीसेट हो जाती है और आउटपुट ट्रैकिंग / काउंटिंग / एग्रीगेशन के लिए अर्थहीन हो जाता है। स्थिर फ़्रेम-से-फ़्रेम परिणामों के लिए एक स्थायी WebRTC सत्र में स्थानीय स्टेप निष्पादन का उपयोग करें।
सॉफ्ट - इनपुट छवि : ब्लॉक वीडियो या दोहराए गए-फ़्रेम वर्कफ़्लो से समयगत संदर्भ पर निर्भर करता है। एक स्थिर छवि/फ़ोटो के साथ, ट्रैक करने, तुलना करने, समेकित करने या दृश्यीकृत करने के लिए कोई अर्थपूर्ण इतिहास नहीं होता, इसलिए ब्लॉक बहुत कम या कोई लाभ नहीं देता।
इनपुट और आउटपुट बाइंडिंग्स
उपलब्ध कनेक्शन उसके बाइंडिंग प्रकारों पर निर्भर करते हैं। देखें कि कौन-से बाइंडिंग प्रकार डिटेक्शन्स स्थिरीकारक संस्करण v1 है।
इनपुट और आउटपुट बाइंडिंग्स
इनपुट
छवि(छवि): एम्बेडेड वीडियो मेटाडेटा वाली छवि। video_metadata में विभिन्न वीडियो के लिए अलग स्थिरीकरण स्थिति बनाए रखने हेतु video_identifier होता है। फ़्रेमों के बीच स्थायी state management के लिए आवश्यक..detections(Union[object_detection_prediction,instance_segmentation_prediction]): tracker_id जानकारी के साथ ट्रैक की गई वस्तु डिटेक्शन या instance segmentation भविष्यवाणियाँ। इसमें tracking block से tracker_id जानकारी शामिल होनी चाहिए। यह ब्लॉक वेग पूर्वानुमान के लिए Kalman filtering, स्थिति smoothing के लिए exponential moving average, और गायब डिटेक्शनों के लिए gap filling लागू करता है। आउटपुट डिटेक्शन कम शोर और जिटर के साथ स्थिर होते हैं..smoothing_window_size(पूर्णांक): Kalman filter में वेग smoothing के लिए sliding window का आकार, जो यह नियंत्रित करता है कि कितने ऐतिहासिक वेग माप उपयोग होंगे। यह यह भी निर्धारित करता है कि हटाए जाने से पहले गायब डिटेक्शन कितने समय तक रखे जाएंगे। बड़े मान अधिक smoothing प्रदान करते हैं लेकिन परिवर्तनों के प्रति धीमी अनुकूलन क्षमता देते हैं। छोटे मान कम smoothing देते हैं लेकिन तेज़ अनुकूलन क्षमता देते हैं। इस संख्या के फ़्रेमों से अधिक समय तक गायब रहने वाले डिटेक्शन ट्रैकिंग स्थिति से हटा दिए जाते हैं। सामान्य सीमा: 3-10 फ़्रेम..bbox_smoothing_coefficient(float_zero_to_one): बाउंडिंग बॉक्स स्थिति smoothing के लिए exponential moving average coefficient (alpha), सीमा 0.0-1.0। वर्तमान और पिछले बाउंडिंग बॉक्स स्थितियों के बीच मिश्रण को नियंत्रित करता है: smoothed_bbox = alpha * current + (1-alpha) * previous. कम मान (0 के अधिक निकट) अधिक smoothing प्रदान करते हैं - परिवर्तनों पर धीमी प्रतिक्रिया, कम जिटर। अधिक मान (1 के अधिक निकट) कम smoothing प्रदान करते हैं - परिवर्तनों पर तेज़ प्रतिक्रिया, अधिक जिटर। डिफ़ॉल्ट 0.2 smoothness और responsiveness के बीच संतुलन बनाता है। सामान्य सीमा: 0.1-0.5..
आउटपुट
tracked_detections(Union[object_detection_prediction,instance_segmentation_prediction]): यदि sv.Detections(...) ऑब्जेक्ट के रूप में पहचाने गए बाउंडिंग बॉक्स वाली प्रेडिक्शनobject_detection_predictionया यदि sv.Detections(...) ऑब्जेक्ट के रूप में पहचाने गए बाउंडिंग बॉक्स और सेगमेंटेशन मास्क वाली प्रेडिक्शनinstance_segmentation_prediction.
अंतिम अपडेट
क्या यह उपयोगी था?