निकटतम पड़ोसी डिटेक्शन मिलान
pixel distance का उपयोग करके प्रत्येक query detection के लिए सबसे निकट लक्ष्य detection खोजें।
दो डिटेक्शन सेटों के बीच निकटतम-समुदाय (nearest-neighbor) स्थानिक जॉइन करें, जिसमें किसी क्वेरी सेट के प्रत्येक डिटेक्शन के लिए, कॉन्फ़िगर करने योग्य एंकर पॉइंट्स के बीच साधारण 2D यूक्लिडियन पिक्सेल दूरी का उपयोग करके लक्ष्य सेट में सबसे निकटतम डिटेक्शन (या टाई होने पर डिटेक्शन) खोजा जाता है।
यह ब्लॉक कैसे काम करता है
यह ब्लॉक क्वेरी सेट के प्रत्येक डिटेक्शन को टारगेट सेट में उसके निकटतम पड़ोसी(यों) से मिलाता है। यह ब्लॉक:
क्वेरी प्रेडिक्शन्स और टारगेट प्रेडिक्शन्स (ऑब्जेक्ट डिटेक्शन, इंस्टेंस सेगमेंटेशन, या कीपॉइंट डिटेक्शन) प्राप्त करता है - वही सेट क्वेरी और टारगेट दोनों के रूप में पास किया जा सकता है
चुने गए विकल्प के आधार पर, प्रत्येक सेट में हर डिटेक्शन के लिए एक एंकर पॉइंट निर्धारित करता है
query_pointऔरtarget_pointविकल्प: केंद्र, बॉन्डिंग बॉक्स के चारों कोनों में से एक, चारों किनारों के मध्य बिंदुओं में से एक, या एक नामित कीपॉइंट (इसके लिए कीपॉइंट डिटेक्शन प्रेडिक्शन्स औरquery_keypoint_name/target_keypoint_name)हर क्वेरी एंकर पॉइंट और हर टारगेट एंकर पॉइंट के बीच पूर्ण युग्म (pairwise) पिक्सेल-दूरी मैट्रिक्स की गणना करता है (ब्रूट-फोर्स, कोई स्थानिक ट्री नहीं - फ्रेम-दर-फ्रेम दर्जनों-डिटेक्शन्स वाले पैमाने के लिए उपयुक्त)
प्रत्येक क्वेरी डिटेक्शन के लिए, किसी भी ऐसे टारगेट डिटेक्शन को बाहर करता है जो उसके
detection_id(स्व-मैच बहिष्करण) को साझा करता है, इसलिए एक ही डिटेक्शन्स को क्वेरी और टारगेट दोनों के रूप में पास करने पर कोई डिटेक्शन स्वयं से नहीं मिलतायदि
max_distanceसेट किया गया हो, तो शेष किसी भी ऐसे उम्मीदवार टारगेट को हटा देता है जोmax_distanceपिक्सेल से अधिक दूर हो, रैंकिंग से पहले - सीमा से परे टारगेट को बाहर किए गए स्व-मैच के समान माना जाता हैहर क्वेरी डिटेक्शन के लिए न्यूनतम दूरी खोजता है, फिर हर शेष टारगेट डिटेक्शन को शामिल करता है जिसकी दूरी उस न्यूनतम से 1-पिक्सेल के निश्चित epsilon के भीतर हो, ताकि बिल्कुल समान या लगभग समान टाई होने पर मनमाने एकल विजेता के बजाय कई मैच बनें
सबसे नज़दीकी दूरी (पिक्सेल में) को हर क्वेरी डिटेक्शन के मेटाडेटा से जोड़ता है; जिन डिटेक्शनों के लिए कोई योग्य टारगेट नहीं है (खाली टारगेट सेट, हर टारगेट स्व-मैच के रूप में बाहर, या हर शेष टारगेट इससे अधिक दूर
max_distance) मिलता हैNoneतीन फ्लैट, संरेखित आउटपुट लौटाता है: समृद्ध क्वेरी प्रेडिक्शन्स, और समान-लंबाई/समान-क्रम वाले दो डिटेक्शन सेट -
matched_query_detectionsऔरmatched_target_detections- प्रत्येक क्वेरी-टारगेट पेयरिंग के लिए एक पंक्ति के साथ। टाई वाली क्वेरी डिटेक्शन हर टाई किए गए मैच के लिए एक बार दिखाई देती है (उसकी पंक्ति डुप्लिकेट होती है); बिना किसी वैध मैच वाली क्वेरी डिटेक्शन दोनों से हटा दी जाती है, और केवलquery_predictions(के साथnearest_target_distanceपर सेटNone)
दूरी हमेशा साधारण, अनकैलिब्रेटेड 2D यूक्लिडियन पिक्सेल दूरी होती है - Distance Measurement ब्लॉक के विपरीत, इसमें कोई वास्तविक-विश्व इकाई रूपांतरण नहीं होता। इससे यह ब्लॉक उन उपयोग मामलों के लिए सरल बना रहता है जिन्हें केवल सापेक्ष/पिक्सेल-स्थानिक निकटता चाहिए।
सामान्य उपयोग के मामले
ज़ोन/एंकर असाइनमेंट: प्रत्येक पहचानी गई वस्तु को उसके निकटतम संदर्भ बिंदु या एंकर डिटेक्शन को असाइन करें (जैसे लोगों को निकटतम निकास-चिह्न से मिलाना, वाहनों को निकटतम पार्किंग-स्थान मार्कर से मिलाना), जिससे निकटता-आधारित असाइनमेंट वर्कफ़्लोज़ सक्षम होते हैं
क्रॉस-क्लास एसोसिएशन: एक वर्ग के डिटेक्शनों को दूसरे वर्ग के निकटतम डिटेक्शन से संबद्ध करें (जैसे पहचाने गए हाथों को निकटतम पहचाने गए औज़ार से मिलाना, खिलाड़ियों को निकटतम गेंद डिटेक्शन से मिलाना), जिससे विभिन्न ऑब्जेक्ट प्रकारों के बीच संबंध विश्लेषण सक्षम होता है
डुप्लिकेट/ओवरलैप विश्लेषण: हर डिटेक्शन के सबसे नज़दीकी पड़ोसी को खोजने के लिए एक डिटेक्शन सेट की उसी सेट से तुलना करें (जैसे भीड़ में सबसे नज़दीकी अन्य व्यक्ति ढूँढना, सघन रूप से समूहित डिटेक्शनों की पहचान करना), जिससे घनत्व और क्लस्टरिंग विश्लेषण सक्षम होता है
ट्रैकिंग हैंडऑफ़: परिणामों को संयोजित करने के लिए उसी फ्रेम पर दो मॉडल आउटपुट्स के बीच डिटेक्शनों का मिलान करें (जैसे तेज़ सामान्य डिटेक्टर के आउटपुट को धीमे विशेषज्ञ मॉडल के आउटपुट से मिलाना), जिससे बहु-मॉडल फ्यूज़न वर्कफ़्लोज़ सक्षम होते हैं
अन्य ब्लॉक्स से कनेक्ट करना
यह ब्लॉक दो डिटेक्शन सेट प्राप्त करता है और समृद्ध क्वेरी प्रेडिक्शन्स के साथ-साथ दो फ्लैट, संरेखित डिटेक्शन सेट उत्पन्न करता है जो हर क्वेरी-टारगेट पेयरिंग का प्रतिनिधित्व करते हैं - किसी आयामी चाल या मध्यवर्ती मर्ज स्टेप की आवश्यकता नहीं होती, क्योंकि matched_query_detections और matched_target_detections सामान्य डिटेक्शन सेट होते हैं, उसी आकार के जो कोई भी डिटेक्शन-उत्पादक ब्लॉक लौटाता है:
ऑब्जेक्ट डिटेक्शन, इंस्टेंस सेगमेंटेशन, या कीपॉइंट डिटेक्शन मॉडल ब्लॉक्स के बाद क्वेरी और टारगेट सेट बनाने के लिए जिन्हें मिलाना है, जिससे डिटेक्शन-से-मैचिंग वर्कफ़्लोज़ सक्षम होते हैं
लॉजिक ब्लॉक्स से पहले जैसे Continue If या Detections Filter का उपयोग करके इस आधार पर निर्णय लेना कि
nearest_target_distance(जैसे, यदि निकटतम मैच किसी थ्रेशहोल्ड दूरी के भीतर है तो आगे बढ़ें) या फ़िल्टर करने के लिएmatched_query_detections/matched_target_detectionsसीधे, जिससे निकटता-आधारित निर्णय वर्कफ़्लोज़ सक्षम होते हैंविज़ुअलाइज़ेशन ब्लॉकों से पहले जैसे Label Visualization या Bounding Box Visualization का उपयोग करके समृद्ध
query_predictions, याmatched_query_detections/matched_target_detectionsको साथ-साथ प्रदर्शित करना ताकि मिलाए गए जोड़ों को खींचा जा सके, जिससे दूरी-एनोटेटेड विज़ुअलाइज़ेशन सक्षम होते हैंडेटा संग्रहण ब्लॉकों से पहले जैसे CSV Formatter का उपयोग करके हर क्वेरी-टारगेट पेयरिंग को एक पंक्ति के रूप में निर्यात करना, जिससे मिलान-जोड़ी लॉगिंग वर्कफ़्लोज़ सक्षम होते हैं
आवश्यकताएँ
यह ब्लॉक डिटेक्शन प्रेडिक्शन्स के दो सेट (ऑब्जेक्ट डिटेक्शन, इंस्टेंस सेगमेंटेशन, या कीपॉइंट डिटेक्शन) की आवश्यकता रखता है; वही सेट दोनों के लिए उपयोग किया जा सकता है query_predictions और target_predictions. का उपयोग करने के लिए KEYPOINT एंकर विकल्प के लिए किसी भी सेट पर, वह सेट कीपॉइंट डिटेक्शन प्रेडिक्शन्स होना चाहिए और संबंधित query_keypoint_name/target_keypoint_name प्रदान किया जाना चाहिए। स्व-मैच बहिष्करण detection_id के दोनों सेटों पर उपस्थित होने पर निर्भर करता है - यह सभी Roboflow ऑब्जेक्ट डिटेक्शन, इंस्टेंस सेगमेंटेशन, और कीपॉइंट डिटेक्शन मॉडल ब्लॉक्स के लिए स्वचालित रूप से भरा जाता है। max_distance वैकल्पिक है; इसे खाली छोड़ दें ताकि हर क्वेरी डिटेक्शन को दूरी की परवाह किए बिना उसके निकटतम टारगेट से मिलाया जा सके।
ध्यान दें कि query_predictions को इन-प्लेस समृद्ध किया जाता है - वही sv.Detections जो ऑब्जेक्ट पास किया गया है उसे संशोधित किया जाता है (एक नया nearest_target_distance फ़ील्ड उसके .dataमें जोड़ा जाता है) और लौटाया जाता है, वही परंपरा जो Velocity और Time in Zone जैसे ब्लॉक्स द्वारा उपयोग की जाती है। यदि वर्कफ़्लो की प्रत्येक शाखा को अपना, अपरिवर्तित nearest_target_distance.
प्रकार पहचानकर्ता
स्टेप में निम्नलिखित पहचानकर्ता का उपयोग करें "type" फ़ील्ड: roboflow_core/detections_nearest_neighbor@v1 अपने वर्कफ़्लो में ब्लॉक को एक स्टेप के रूप में जोड़ने के लिए।
गुण
नाम
प्रकार
विवरण
संदर्भ
name
str
इस स्टेप के लिए एक विशिष्ट पहचानकर्ता दर्ज करें..
❌
query_point
str
प्रत्येक क्वेरी डिटेक्शन के स्थान को दर्शाने के लिए उपयोग किया जाने वाला एंकर पॉइंट: CENTER, एक कोना (TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT), एक किनारा-मध्यबिंदु (TOP_CENTER, BOTTOM_CENTER, CENTER_LEFT, CENTER_RIGHT), या KEYPOINT (इसके लिए query_predictions का कीपॉइंट डिटेक्शन प्रेडिक्शन्स होना और query_keypoint_name का सेट होना आवश्यक है)..
✅
target_point
str
प्रत्येक टारगेट डिटेक्शन के स्थान को दर्शाने के लिए उपयोग किया जाने वाला एंकर पॉइंट। वही विकल्प जैसे query_point, अलग से सेट किया गया। नामित कीपॉइंट पर मैच करने के लिए KEYPOINT का उपयोग करें target_predictions (जिसके लिए target_predictions का कीपॉइंट डिटेक्शन प्रेडिक्शन्स होना और target_keypoint_name का सेट होना आवश्यक है)..
✅
query_keypoint_name
str
क्वेरी एंकर पॉइंट के रूप में उपयोग किए जाने वाले कीपॉइंट क्लास का नाम। केवल तब आवश्यक जब query_point को KEYPOINT पर सेट किया गया हो; query_predictions तब यह कीपॉइंट डिटेक्शन प्रेडिक्शन्स होना चाहिए..
✅
target_keypoint_name
str
टारगेट एंकर पॉइंट के रूप में उपयोग किए जाने वाले कीपॉइंट क्लास का नाम। केवल तब आवश्यक जब target_point को KEYPOINT पर सेट किया गया हो; target_predictions तब यह कीपॉइंट डिटेक्शन प्रेडिक्शन्स होना चाहिए..
✅
max_distance
int
क्वेरी डिटेक्शन और उम्मीदवार टारगेट के बीच पिक्सेल दूरी की अधिकतम अनुमत सीमा। इससे अधिक दूर के टारगेट रैंकिंग से पहले हटा दिए जाते हैं, ठीक वैसे ही जैसे स्व-मैच हटाए जाते हैं। किसी क्वेरी डिटेक्शन का सबसे निकट शेष टारगेट यदि अभी भी इससे अधिक दूर हो (या कोई शेष टारगेट बिल्कुल न हो) तो उसे nearest_target_distance = None मिलता है और उसे matched_query_detections/matched_target_detectionsसे हटा दिया जाता है। कोई सीमा नहीं के लिए खाली छोड़ दें..
✅
यह संदर्भ स्तंभ यह इंगित करता है कि संपत्ति को वर्कफ़्लो रनटाइम में उपलब्ध गतिशील मानों के साथ पैरामीटराइज़ किया जा सकता है वर्कफ़्लो रनटाइम। देखें बाइंडिंग्स अधिक जानकारी के लिए।
इनपुट और आउटपुट बाइंडिंग्स
उपलब्ध कनेक्शन उसके बाइंडिंग प्रकारों पर निर्भर करते हैं। देखें कि कौन-से बाइंडिंग प्रकार निकटतम पड़ोसी डिटेक्शन मिलान संस्करण v1 है।
इनपुट और आउटपुट बाइंडिंग्स
इनपुट
query_predictions(Union[object_detection_prediction,instance_segmentation_prediction,keypoint_detection_prediction]): निकटतम-पड़ोसी मैच खोजने के लिए डिटेक्शन्स। इस सेट का प्रत्येक डिटेक्शनtarget_predictions. के विरुद्ध मिलाया जाता है। वही चयनक दोनों के लिए उपयोग किया जा सकता हैquery_predictionsऔरtarget_predictions(जैसे, एक सेट के भीतर हर डिटेक्शन का सबसे नज़दीकी पड़ोसी खोजने के लिए) - किसी डिटेक्शन का कभी भी स्वयं से मिलान नहीं किया जाता..target_predictions(Union[object_detection_prediction,instance_segmentation_prediction,keypoint_detection_prediction]): हर डिटेक्शन के लिए, जिसके भीतर निकटतम मैच खोजा जाना है, ऐसे डिटेक्शन्स। यहquery_predictionsके समान चयनक हो सकता हैquery_predictions..query_point(string): प्रत्येक क्वेरी डिटेक्शन के स्थान को दर्शाने के लिए उपयोग किया जाने वाला एंकर पॉइंट: CENTER, एक कोना (TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT), एक किनारा-मध्यबिंदु (TOP_CENTER, BOTTOM_CENTER, CENTER_LEFT, CENTER_RIGHT), या KEYPOINT (इसके लिएquery_predictionsका कीपॉइंट डिटेक्शन प्रेडिक्शन्स होना औरquery_keypoint_nameका सेट होना आवश्यक है)..target_point(string): प्रत्येक टारगेट डिटेक्शन के स्थान को दर्शाने के लिए उपयोग किया जाने वाला एंकर पॉइंट। वही विकल्प जैसेquery_point, अलग से सेट किया गया। नामित कीपॉइंट पर मैच करने के लिए KEYPOINT का उपयोग करेंtarget_predictions(जिसके लिएtarget_predictionsका कीपॉइंट डिटेक्शन प्रेडिक्शन्स होना औरtarget_keypoint_nameका सेट होना आवश्यक है)..query_keypoint_name(string): क्वेरी एंकर पॉइंट के रूप में उपयोग किए जाने वाले कीपॉइंट क्लास का नाम। केवल तब आवश्यक जबquery_pointको KEYPOINT पर सेट किया गया हो;query_predictionsतब यह कीपॉइंट डिटेक्शन प्रेडिक्शन्स होना चाहिए..target_keypoint_name(string): टारगेट एंकर पॉइंट के रूप में उपयोग किए जाने वाले कीपॉइंट क्लास का नाम। केवल तब आवश्यक जबtarget_pointको KEYPOINT पर सेट किया गया हो;target_predictionsतब यह कीपॉइंट डिटेक्शन प्रेडिक्शन्स होना चाहिए..max_distance(पूर्णांक): क्वेरी डिटेक्शन और उम्मीदवार टारगेट के बीच पिक्सेल दूरी की अधिकतम अनुमत सीमा। इससे अधिक दूर के टारगेट रैंकिंग से पहले हटा दिए जाते हैं, ठीक वैसे ही जैसे स्व-मैच हटाए जाते हैं। किसी क्वेरी डिटेक्शन का सबसे निकट शेष टारगेट यदि अभी भी इससे अधिक दूर हो (या कोई शेष टारगेट बिल्कुल न हो) तो उसेnearest_target_distance = Noneमिलता है और उसेmatched_query_detections/matched_target_detectionsसे हटा दिया जाता है। कोई सीमा नहीं के लिए खाली छोड़ दें..
आउटपुट
query_predictions(Union[object_detection_prediction,instance_segmentation_prediction,keypoint_detection_prediction]): यदि sv.Detections(...) ऑब्जेक्ट के रूप में पहचाने गए बाउंडिंग बॉक्स वाली प्रेडिक्शनobject_detection_predictionया यदि sv.Detections(...) ऑब्जेक्ट के रूप में पहचाने गए बाउंडिंग बॉक्स और सेगमेंटेशन मास्क वाली प्रेडिक्शनinstance_segmentation_predictionया पहचाने गए बाउंडिंग बॉक्स और पहचाने गए कीपॉइंट्स वाली Prediction, sv.Detections(...) ऑब्जेक्ट के रूप में, यदिkeypoint_detection_prediction.matched_query_detections(Union[object_detection_prediction,instance_segmentation_prediction,keypoint_detection_prediction]): यदि sv.Detections(...) ऑब्जेक्ट के रूप में पहचाने गए बाउंडिंग बॉक्स वाली प्रेडिक्शनobject_detection_predictionया यदि sv.Detections(...) ऑब्जेक्ट के रूप में पहचाने गए बाउंडिंग बॉक्स और सेगमेंटेशन मास्क वाली प्रेडिक्शनinstance_segmentation_predictionया पहचाने गए बाउंडिंग बॉक्स और पहचाने गए कीपॉइंट्स वाली Prediction, sv.Detections(...) ऑब्जेक्ट के रूप में, यदिkeypoint_detection_prediction.matched_target_detections(Union[object_detection_prediction,instance_segmentation_prediction,keypoint_detection_prediction]): यदि sv.Detections(...) ऑब्जेक्ट के रूप में पहचाने गए बाउंडिंग बॉक्स वाली प्रेडिक्शनobject_detection_predictionया यदि sv.Detections(...) ऑब्जेक्ट के रूप में पहचाने गए बाउंडिंग बॉक्स और सेगमेंटेशन मास्क वाली प्रेडिक्शनinstance_segmentation_predictionया पहचाने गए बाउंडिंग बॉक्स और पहचाने गए कीपॉइंट्स वाली Prediction, sv.Detections(...) ऑब्जेक्ट के रूप में, यदिkeypoint_detection_prediction.
अंतिम अपडेट
क्या यह उपयोगी था?