MediaPipe Object Detector टास्क से, आपको इमेज या वीडियो में ऑब्जेक्ट की कई क्लास की मौजूदगी और जगह का पता लगाने में मदद मिलती है. उदाहरण के लिए, ऑब्जेक्ट का पता लगाने वाला टूल, इमेज में मौजूद कुत्तों की पहचान कर सकता है. यह टास्क, मशीन लर्निंग (एमएल) मॉडल वाली इमेज डेटा पर काम करता है. इसमें इनपुट के तौर पर स्टैटिक डेटा या लगातार वीडियो स्ट्रीम को स्वीकार किया जाता है. साथ ही, पहचान के नतीजों की सूची दी जाती है. जांच के हर नतीजे में, एक ऐसी चीज़ दिखती है जो इमेज या वीडियो में दिखती है.
शुरू करें
आप जिस प्लैटफ़ॉर्म पर काम कर रहे हैं उसके लिए, इनमें से कोई एक गाइड फ़ॉलो करके इस टास्क का इस्तेमाल शुरू करें:
- Android - कोड का उदाहरण - गाइड
- Python - कोड का उदाहरण - गाइड
- वेब - कोड का उदाहरण - गाइड
- iOS - कोड का उदाहरण - गाइड
इन प्लैटफ़ॉर्म की गाइड से इस काम को लागू करने के बुनियादी तरीके की जानकारी मिलती है. इसमें एक सुझाया गया मॉडल और सुझाए गए कॉन्फ़िगरेशन विकल्पों के साथ कोड के उदाहरण भी शामिल हैं.
टास्क की जानकारी
इस सेक्शन में इस टास्क की क्षमताओं, इनपुट, और आउटपुट के बारे में बताया गया है.
सुविधाएं
- इनपुट इमेज प्रोसेसिंग - प्रोसेसिंग में, इमेज को घुमाना, उसका साइज़ बदलना, नॉर्मलाइज़ेशन, और कलर स्पेस में बदलाव करना शामिल है.
- लेबल मैप की स्थान-भाषा - डिसप्ले नेम के लिए इस्तेमाल की गई भाषा सेट करें
- स्कोर थ्रेशोल्ड - अनुमान के स्कोर के आधार पर नतीजों को फ़िल्टर करें.
- टॉप-k पहचान - संख्या का पता लगाने के नतीजों को फ़िल्टर करें.
- लेबल की अनुमति वाली सूची और ब्लॉकलिस्ट - उन कैटगरी की जानकारी दें जिनका पता लगाया गया है.
टास्क के इनपुट | टास्क के आउटपुट |
---|---|
ऑब्जेक्ट डिटेक्टर एपीआई, इनमें से किसी एक तरह के डेटा के इनपुट को स्वीकार करता है:
|
ऑब्जेक्ट डिटेक्टर एपीआई, पता लगाए गए ऑब्जेक्ट के लिए ये नतीजे देता है:
|
कॉन्फ़िगरेशन के विकल्प
इस टास्क में कॉन्फ़िगरेशन के ये विकल्प हैं:
विकल्प का नाम | ब्यौरा | वैल्यू रेंज | डिफ़ॉल्ट मान |
---|---|---|---|
running_mode |
टास्क के लिए, रनिंग मोड सेट करता है. इसके तीन मोड होते हैं: इमेज: सिंगल इमेज इनपुट के लिए मोड. वीडियो: वीडियो के डिकोड किए गए फ़्रेम का मोड. LIVE_STREAM: इनपुट डेटा की लाइव स्ट्रीम का मोड, जैसे कि कैमरे से स्ट्रीम किया जाने वाला मोड. इस मोड में, रिज़ल्ट पहचानकर्ता को लिसनर को सेट अप करने के लिए कॉल किया जाना चाहिए, ताकि वह एसिंक्रोनस तरीके से नतीजे पा सके. |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
display_names |
अगर यह उपलब्ध हो, तो टास्क के मॉडल के मेटाडेटा में दिए गए डिसप्ले नेम के लिए, लेबल की भाषा सेट करता है. अंग्रेज़ी के लिए डिफ़ॉल्ट रूप से en
है. TensorFlow Lite Metadata Writer API का इस्तेमाल करके, कस्टम मॉडल के मेटाडेटा में
स्थानीय भाषा के हिसाब से लेबल जोड़े जा सकते हैं
|
स्थान-भाषा का कोड | en |
max_results |
वापस लौटाने के लिए, टॉप-स्कोर किए गए पहचान के नतीजों की ज़्यादा से ज़्यादा वैकल्पिक संख्या सेट करता है. | कोई भी पॉज़िटिव नंबर | -1 (सभी नतीजे दिखाए जाते हैं) |
score_threshold |
अनुमान के स्कोर का थ्रेशोल्ड सेट करता है, जो मॉडल मेटाडेटा (अगर कोई है) में दिए गए स्कोर को बदलता है. इस वैल्यू से कम के नतीजे अस्वीकार कर दिए गए हैं. | कोई भी फ़्लोट | सेट नहीं किया गया है |
category_allowlist |
अनुमति वाली कैटगरी के नामों की वैकल्पिक सूची सेट करता है. अगर यह खाली नहीं है, तो
जिन कैटगरी का नाम इस सेट में नहीं होगा उन्हें
फ़िल्टर कर दिया जाएगा. श्रेणी के डुप्लीकेट या अज्ञात नामों पर ध्यान नहीं दिया जाता है.
यह विकल्प category_denylist के साथ म्यूचुअली एक्सक्लूसिव है और दोनों नतीजों का इस्तेमाल करने में गड़बड़ी है. |
कोई भी स्ट्रिंग | सेट नहीं किया गया है |
category_denylist |
उन कैटगरी के नामों की वैकल्पिक सूची सेट करता है जिनकी अनुमति नहीं है. अगर यह खाली नहीं है, तो पहचान के जिन नतीजों की कैटगरी का नाम इस सेट में होगा उन्हें फ़िल्टर करके बाहर
कर दिया जाएगा. श्रेणी के डुप्लीकेट या अज्ञात नामों पर ध्यान नहीं दिया जाता है. यह विकल्प category_allowlist के साथ म्यूचुअली एक्सक्लूसिव है और इसका इस्तेमाल करने पर दोनों में गड़बड़ी होगी. |
कोई भी स्ट्रिंग | सेट नहीं किया गया है |
मॉडल
ऑब्जेक्ट डिटेक्टर एपीआई को डाउनलोड करने और आपकी प्रोजेक्ट डायरेक्ट्री में सेव किए जाने के लिए, ऑब्जेक्ट की पहचान करने वाले मॉडल की ज़रूरत होती है. अगर आपके पास पहले से कोई मॉडल नहीं है, तो डिफ़ॉल्ट रूप से सुझाए गए मॉडल से शुरुआत करें. इस सेक्शन में दिए गए दूसरे मॉडल, इंतज़ार के समय और सटीक होने के बीच का अंतर तय करते हैं.
efficiencyDet-Lite0 मॉडल (सुझाया गया)
AutomatedDet-Lite0 मॉडल, 320x320 इनपुट साइज़ और BiFPN सुविधा नेटवर्क के साथ, capableNet-Lite0 बैकबोन का इस्तेमाल करता है. इस मॉडल को COCO डेटासेट की मदद से ट्रेनिंग दी गई. यह ऑब्जेक्ट का पता लगाने वाला ऐसा डेटासेट है जो बड़े स्तर पर ऑब्जेक्ट का पता लगाता है. इसमें 15 लाख ऑब्जेक्ट इंस्टेंस और 80 ऑब्जेक्ट लेबल शामिल हैं. इस्तेमाल किए जा सकने वाले लेबल की पूरी सूची देखें. efficiencyDet-Lite0, int8, फ्लोट16 या फ़्लोट 32 के रूप में उपलब्ध है. इस मॉडल का सुझाव इसलिए दिया जाता है, क्योंकि यह इंतज़ार के समय और सटीक होने के बीच संतुलन बनाता है. यह सटीक और हल्का है, इसलिए कई तरह के कामों में इस्तेमाल किया जा सकता है.
मॉडल का नाम | इनपुट का आकार | क्वांटाइज़ेशन का टाइप | वर्शन |
---|---|---|---|
efficiencyDet-Lite0 (int8) | 320 x 320 | int8 | नए |
PerformanceDet-Lite0 (फ़्लोट 16) | 320 x 320 | फ़्लोट 16 | नए |
PerformanceDet-Lite0 (फ़्लोट 32) | 320 x 320 | कोई नहीं (फ़्लोट32) | नए |
efficiencyDet-Lite2 मॉडल
efficiencyDet-Lite2 मॉडल में 448x448 इनपुट साइज़ और BiFPN सुविधा नेटवर्क के साथ, capableNet-Lite2 बैकबोन का इस्तेमाल किया जाता है. इस मॉडल को COCO डेटासेट की मदद से ट्रेनिंग दी गई. यह ऑब्जेक्ट का पता लगाने वाला ऐसा डेटासेट है जो बड़े स्तर पर ऑब्जेक्ट का पता लगाता है. इसमें 15 लाख ऑब्जेक्ट इंस्टेंस और 80 ऑब्जेक्ट लेबल शामिल हैं. इस्तेमाल किए जा सकने वाले लेबल की पूरी सूची देखें. efficiencyDet-Lite2, int8, फ्लोट16 या फ़्लोट32 मॉडल के रूप में उपलब्ध है. आम तौर पर, यह मॉडल ShoppingDet-Lite0 से ज़्यादा सटीक होता है, लेकिन यह धीमा भी होता है और इसमें ज़्यादा मेमोरी की ज़रूरत भी होती है. यह मॉडल उन मामलों में इस्तेमाल के लिए सही है जहां रफ़्तार और साइज़ की जगह सटीक जानकारी को ज़्यादा प्राथमिकता दी जाती है.
मॉडल का नाम | इनपुट का आकार | क्वांटाइज़ेशन का टाइप | वर्शन |
---|---|---|---|
PerformanceDet-Lite2 (int8) | 448 x 448 | int8 | नए |
PerformanceDet-Lite2 (फ़्लोट 16) | 448 x 448 | फ़्लोट 16 | नए |
AccessibilityDet-Lite2 (फ़्लोट 32) | 448 x 448 | कोई नहीं (फ़्लोट32) | नए |
SSD MobileNetV2 मॉडल
SSD MobileNetV2 मॉडल, 256x256 इनपुट साइज़ और एसएसडी सुविधा नेटवर्क के साथ, MobileNetV2 बैकबोन का इस्तेमाल करता है. इस मॉडल को COCO डेटासेट की मदद से ट्रेनिंग दी गई. यह ऑब्जेक्ट का पता लगाने वाला ऐसा डेटासेट है जो बड़े स्तर पर ऑब्जेक्ट का पता लगाता है. इसमें 15 लाख ऑब्जेक्ट इंस्टेंस और 80 ऑब्जेक्ट लेबल शामिल हैं. इस्तेमाल किए जा सकने वाले लेबल की पूरी सूची देखें. एसएसडी MobileNetV2, int8 और फ़्लोट 32 मॉडल के तौर पर उपलब्ध है. यह मॉडल enablingDet-Lite0 से ज़्यादा तेज़ और हल्का है. हालांकि, आम तौर पर यह मॉडल कम सटीक होता है. यह मॉडल, इस्तेमाल के ऐसे मामलों के लिए सही है जिनमें तेज़ और कम वज़न वाले मॉडल की ज़रूरत होती है. हालांकि, इस मॉडल में कुछ सटीक नतीजे नहीं मिलते.
मॉडल का नाम | इनपुट का आकार | क्वांटाइज़ेशन का टाइप | वर्शन |
---|---|---|---|
SSDMobileNet-V2 (int8) | 256 x 256 | int8 | नए |
SSDMobileNet-V2 (फ़्लोट 32) | 256 x 256 | कोई नहीं (फ़्लोट32) | नए |
मॉडल की ज़रूरी शर्तें और मेटाडेटा
अगर इस टास्क के साथ इस्तेमाल करने के लिए कोई मॉडल बनाया जाता है, तो इस सेक्शन में कस्टम मॉडल की ज़रूरी शर्तों के बारे में बताया गया है. कस्टम मॉडल TensorFlow Lite फ़ॉर्मैट में होने चाहिए. साथ ही, मॉडल के ऑपरेटिंग पैरामीटर के बारे में जानकारी देने वाला मेटाडेटा होना चाहिए.
डिज़ाइन से जुड़ी ज़रूरी शर्तें
इनपुट | आकार | ब्यौरा |
---|---|---|
इनपुट इमेज | फ़्लोट 32 टेंसर ऑफ़ शेप[1, ऊंचाई, चौड़ाई, 3] | सामान्य इनपुट इमेज. |
आउटपुट | आकार | ब्यौरा |
---|---|---|
detection_boxes |
फ़्लोट 32 के आकार का टेंसर [1, num_boxes, 4] | पता लगाए गए हर ऑब्जेक्ट के बॉक्स की जगह. |
detection_classes |
फ़्लोट 32 आकार का टेन्सर [1, num_boxes] | पता लगाए गए हर ऑब्जेक्ट के लिए क्लास के नामों का इंडेक्स. |
detection_scores |
आकार का फ्लोट32 टेंसर [1, num_boxes] | पता लगाए गए हर ऑब्जेक्ट के लिए अनुमान का स्कोर. |
num_boxes |
1 का फ़्लोट 32 टेंसर | पता लगाए गए बॉक्स की संख्या. |
मेटाडेटा से जुड़ी ज़रूरी शर्तें
पैरामीटर | ब्यौरा | ब्यौरा |
---|---|---|
input_norm_mean |
इनपुट टेंसर नॉर्मलाइज़ेशन में इस्तेमाल किया गया मीन वैल्यू. | सामान्य इनपुट इमेज. |
input_norm_std |
इनपुट टेंसर नॉर्मलाइज़ेशन में इस्तेमाल किया गया फ़ील्ड स्टैंडर्ड. | पता लगाए गए हर ऑब्जेक्ट के बॉक्स की जगह. |
label_file_paths |
टेन्सर लेबल वाली कैटगरी की फ़ाइलों के पाथ. अगर मॉडल में कोई लेबल फ़ाइल नहीं है, तो एक खाली सूची पास करें. | पता लगाए गए हर ऑब्जेक्ट के लिए क्लास के नामों का इंडेक्स. |
score_calibration_md |
क्लासिफ़िकेशन टेंसर में स्कोर कैलिब्रेशन की कार्रवाई के बारे में जानकारी. अगर मॉडल, स्कोर कैलिब्रेशन का इस्तेमाल नहीं करता है, तो इस पैरामीटर की ज़रूरत नहीं है. |
पता लगाए गए हर ऑब्जेक्ट के लिए अनुमान का स्कोर. |
num_boxes |
1 का फ़्लोट 32 टेंसर | पता लगाए गए बॉक्स की संख्या. |
टास्क के मानदंड
पहले से ट्रेन किए गए ऊपर दिए गए मॉडल के टास्क मानदंड यहां दिए गए हैं. इंतज़ार के समय के नतीजे से यह पता चलता है कि Pixel 6 को सीपीयू / जीपीयू का इस्तेमाल करने पर, इंतज़ार का औसत समय क्या होता है.
मॉडल का नाम | सीपीयू (CPU) के इस्तेमाल में होने वाला समय | जीपीयू इंतज़ार का समय |
---|---|---|
efficiencyDet-Lite0 फ़्लोट32 मॉडल | 61.30 मि॰से॰ | 27.83 मि॰से॰ |
efficiencyDet-Lite0 फ़्लोट16 मॉडल | 53.97 मि॰से॰ | 27.97 मि॰से॰ |
efficiencyDet-Lite0 int8 मॉडल | 29.31 मि॰से॰ | - |
efficiencyDet-Lite2 फ़्लोट32 मॉडल | 197.98 मि॰से॰ | 41.15 मि॰से॰ |
efficiencyDet-Lite2 फ़्लोट16 मॉडल | 198.77 मि॰से॰ | 47.31 मि॰से॰ |
efficiencyDet-Lite2 int8 मॉडल | 70.91 मि॰से॰ | - |
एसएसडी MobileNetV2 फ़्लोट32 मॉडल | 36.30 मिलीसेकंड | 24.01 मि॰से॰ |
एसएसडी MobileNetV2 फ़्लोट16 मॉडल | 37.35 मि॰से॰ | 28.16 मि॰से॰ |