ऑब्जेक्ट का पता लगाने के लिए टास्क गाइड

एक बिल्ली और एक कुत्ता, जिन्हें बॉउंडिंग बॉक्स के साथ हाइलाइट किया गया है और सही तरीके से लेबल किया गया है

MediaPipe ऑब्जेक्ट डिटेक्टर टास्क की मदद से, इमेज या वीडियो में कई तरह के ऑब्जेक्ट की मौजूदगी और जगह का पता लगाया जा सकता है. उदाहरण के लिए, ऑब्जेक्ट डिटेक्टर किसी इमेज में कुत्तों का पता लगा सकता है. यह टास्क, मशीन लर्निंग (एमएल) मॉडल की मदद से इमेज डेटा पर काम करता है. यह इनपुट के तौर पर स्टैटिक डेटा या लगातार चलने वाली वीडियो स्ट्रीम को स्वीकार करता है और पहचान के नतीजों की सूची दिखाता है. पहचाने गए हर ऑब्जेक्ट का नतीजा, इमेज या वीडियो में दिखने वाले ऑब्जेक्ट को दिखाता है.

इसे आज़माएं!

शुरू करें

इस टास्क का इस्तेमाल शुरू करने के लिए, जिस प्लैटफ़ॉर्म पर काम किया जा रहा है उसके लिए, लागू करने से जुड़ी इनमें से किसी एक गाइड का पालन करें:

प्लैटफ़ॉर्म के हिसाब से बनाई गई ये गाइड, इस टास्क को लागू करने का बुनियादी तरीका बताती हैं. इनमें सुझाया गया मॉडल और सुझाए गए कॉन्फ़िगरेशन विकल्पों के साथ कोड का उदाहरण शामिल है.

टास्क की जानकारी

इस सेक्शन में, इस टास्क की सुविधाओं, इनपुट, और आउटपुट के बारे में बताया गया है.

सुविधाएं

  • इनपुट इमेज प्रोसेसिंग - प्रोसेसिंग में इमेज को घुमाना, उसका साइज़ बदलना, सामान्य करना, और कलर स्पेस कन्वर्ज़न शामिल है.
  • मैप के लिए स्थानीय भाषा का लेबल - डिसप्ले नेम के लिए इस्तेमाल की जाने वाली भाषा सेट करें
  • स्कोर थ्रेशोल्ड - अनुमान के स्कोर के आधार पर नतीजे फ़िल्टर करें.
  • सबसे ज़्यादा मिलते-जुलते नतीजे - नंबर का पता लगाने की सुविधा के नतीजों को फ़िल्टर करें.
  • अनुमति वाली सूची और ब्लॉकलिस्ट को लेबल करना - पता लगाई गई कैटगरी बताएं.
टास्क के इनपुट टास्क के आउटपुट
Object Detector API, इनमें से किसी एक डेटा टाइप का इनपुट स्वीकार करता है:
  • स्टिल इमेज
  • डिकोड किए गए वीडियो फ़्रेम
  • लाइव वीडियो फ़ीड
ऑब्जेक्ट डिटेक्टर एपीआई, पहचाने गए ऑब्जेक्ट के लिए ये नतीजे दिखाता है:
  • ऑब्जेक्ट की कैटगरी
  • संभावना का स्कोर
  • बाउंडिंग बॉक्स के निर्देशांक

कॉन्फ़िगरेशन के विकल्प

इस टास्क के लिए, कॉन्फ़िगरेशन के ये विकल्प उपलब्ध हैं:

विकल्प का नाम ब्यौरा वैल्यू की रेंज डिफ़ॉल्ट मान
running_mode टास्क के लिए रनिंग मोड सेट करता है. इसके तीन मोड हैं:

IMAGE: एक इमेज इनपुट के लिए मोड.

वीडियो: किसी वीडियो के डिकोड किए गए फ़्रेम के लिए मोड.

LIVE_STREAM: कैमरे से मिले इनपुट डेटा की लाइव स्ट्रीम के लिए मोड. इस मोड में, नतीजे असींक्रोनस तरीके से पाने के लिए, एक listener सेट अप करने के लिए, resultListener को कॉल करना होगा.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
display_names टास्क के मॉडल के मेटाडेटा में दिए गए डिसप्ले नेम के लिए, लेबल की भाषा सेट करता है. हालांकि, ऐसा तब ही किया जाता है, जब वह भाषा उपलब्ध हो. अंग्रेज़ी के लिए, डिफ़ॉल्ट तौर पर en होता है. TensorFlow Lite मेटाडेटा राइटर एपीआई का इस्तेमाल करके, कस्टम मॉडल के मेटाडेटा में स्थानीय भाषा के लेबल जोड़े जा सकते हैं स्थानीय भाषा का कोड en
max_results सबसे ज़्यादा स्कोर वाले पहचान के नतीजों की ज़्यादा से ज़्यादा संख्या सेट करता है, ताकि उन्हें दिखाया जा सके. हालांकि, ऐसा करना ज़रूरी नहीं है. कोई भी पॉज़िटिव संख्या -1 (सभी नतीजे दिखाए जाते हैं)
score_threshold अनुमान के स्कोर का थ्रेशोल्ड सेट करता है. यह थ्रेशोल्ड, मॉडल के मेटाडेटा में दिए गए थ्रेशोल्ड (अगर कोई है) को बदल देता है. इस वैल्यू से कम के नतीजे अस्वीकार कर दिए जाते हैं. कोई भी फ़्लोट सेट नहीं है
category_allowlist कैटगरी के लिए इस्तेमाल किए जा सकने वाले नामों की वैकल्पिक सूची सेट करता है. अगर यह सेट नहीं है, तो कैटगरी के नाम के आधार पर, पहचान के उन नतीजों को फ़िल्टर कर दिया जाएगा जो इस सेट में शामिल नहीं हैं. डुप्लीकेट या अज्ञात कैटगरी के नामों को अनदेखा कर दिया जाता है. यह विकल्प, category_denylist के साथ इस्तेमाल नहीं किया जा सकता. दोनों का इस्तेमाल करने पर गड़बड़ी का मैसेज दिखता है. कोई भी स्ट्रिंग सेट नहीं है
category_denylist कैटगरी के उन नामों की वैकल्पिक सूची सेट करता है जिनका इस्तेमाल नहीं किया जा सकता. अगर यह सेट खाली नहीं है, तो जिन कैटगरी के नाम इस सेट में शामिल हैं उनके लिए, कॉन्टेंट की पहचान करने की सुविधा से मिले नतीजे फ़िल्टर कर दिए जाएंगे. डुप्लीकेट या अज्ञात कैटगरी के नामों को अनदेखा कर दिया जाता है. यह विकल्प, category_allowlist के साथ इस्तेमाल नहीं किया जा सकता. दोनों का इस्तेमाल करने पर गड़बड़ी होती है. कोई भी स्ट्रिंग सेट नहीं है

मॉडल

Object Detector API को ऑब्जेक्ट पहचानने वाले मॉडल को डाउनलोड करके, अपनी प्रोजेक्ट डायरेक्ट्री में सेव करना होगा. अगर आपके पास पहले से कोई मॉडल नहीं है, तो डिफ़ॉल्ट तौर पर सुझाए गए मॉडल से शुरू करें. इस सेक्शन में दिखाए गए अन्य मॉडल, इंतज़ार के समय और सटीक होने के बीच समझौता करते हैं.

EfficientDet-Lite0 मॉडल, 320x320 के इनपुट साइज़ और BiFPN फ़ीचर नेटवर्क के साथ, EfficientNet-Lite0 बैकबोन का इस्तेमाल करता है. इस मॉडल को COCO डेटासेट की मदद से ट्रेन किया गया था.यह ऑब्जेक्ट डिटेक्शन का एक बड़ा डेटासेट है, जिसमें 15 लाख ऑब्जेक्ट इंस्टेंस और 80 ऑब्जेक्ट लेबल मौजूद हैं. इस्तेमाल किए जा सकने वाले लेबल की पूरी सूची देखें. EfficientDet-Lite0, int8, float16 या float32 के तौर पर उपलब्ध है. इस मॉडल का सुझाव इसलिए दिया जाता है, क्योंकि यह इंतज़ार के समय और सटीक नतीजों के बीच संतुलन बनाता है. यह कई कामों के लिए सटीक और आसान है.

मॉडल का नाम इनपुट का आकार क्वांटाइज़ेशन का टाइप वर्शन
EfficientDet-Lite0 (int8) 320 x 320 int8 हाल ही के अपडेट
EfficientDet-Lite0 (फ़्लोट 16) 320 x 320 फ़्लोट 16 हाल ही के अपडेट
EfficientDet-Lite0 (फ़्लोट 32) 320 x 320 कोई नहीं (float32) हाल ही के अपडेट

EfficientDet-Lite2 मॉडल

EfficientDet-Lite2 मॉडल, 448x448 के इनपुट साइज़ और BiFPN फ़ीचर नेटवर्क के साथ, EfficientNet-Lite2 बैकबोन का इस्तेमाल करता है. इस मॉडल को COCO डेटासेट की मदद से ट्रेन किया गया था.यह ऑब्जेक्ट डिटेक्शन का एक बड़ा डेटासेट है, जिसमें 15 लाख ऑब्जेक्ट इंस्टेंस और 80 ऑब्जेक्ट लेबल मौजूद हैं. इस्तेमाल किए जा सकने वाले लेबल की पूरी सूची देखें. EfficientDet-Lite2, int8, float16 या float32 मॉडल के तौर पर उपलब्ध है. आम तौर पर, यह मॉडल EfficientDet-Lite0 के मुकाबले ज़्यादा सटीक होता है. हालांकि, यह धीमा और ज़्यादा मेमोरी का इस्तेमाल करता है. यह मॉडल उन मामलों में इस्तेमाल करने के लिए सही है जहां स्पीड और साइज़ के मुकाबले सटीक नतीजे ज़्यादा अहम हैं.

मॉडल का नाम इनपुट का आकार क्वांटाइज़ेशन का टाइप वर्शन
EfficientDet-Lite2 (int8) 448 x 448 int8 हाल ही के अपडेट
EfficientDet-Lite2 (फ़्लोट 16) 448 x 448 फ़्लोट 16 हाल ही के अपडेट
EfficientDet-Lite2 (फ़्लोट 32) 448 x 448 कोई नहीं (float32) हाल ही के अपडेट

SSD MobileNetV2 मॉडल

SSD MobileNetV2 मॉडल, 256x256 इनपुट साइज़ और SSD फ़ीचर नेटवर्क के साथ MobileNetV2 बैकबोन का इस्तेमाल करता है. इस मॉडल को COCO डेटासेट की मदद से ट्रेन किया गया था.यह ऑब्जेक्ट डिटेक्शन का एक बड़ा डेटासेट है, जिसमें 15 लाख ऑब्जेक्ट इंस्टेंस और 80 ऑब्जेक्ट लेबल मौजूद हैं. इस्तेमाल किए जा सकने वाले लेबल की पूरी सूची देखें. SSD MobileNetV2, int8 और float 32 मॉडल के तौर पर उपलब्ध है. यह मॉडल, EfficientDet-Lite0 की तुलना में तेज़ और हल्का है. हालांकि, आम तौर पर यह उतना सटीक नहीं होता. यह मॉडल, उन इस्तेमाल के उदाहरणों के लिए सही है जिनमें तेज़ और हल्का मॉडल की ज़रूरत होती है. हालांकि, इस मॉडल की सटीकता कुछ कम होती है.

मॉडल का नाम इनपुट का आकार क्वांटाइज़ेशन का टाइप वर्शन
SSDMobileNet-V2 (int8) 256 x 256 int8 हाल ही के अपडेट
SSDMobileNet-V2 (फ़्लोट 32) 256 x 256 कोई नहीं (float32) हाल ही के अपडेट

मॉडल से जुड़ी ज़रूरी शर्तें और मेटाडेटा

अगर आपको इस टास्क के साथ इस्तेमाल करने के लिए कोई मॉडल बनाना है, तो इस सेक्शन में कस्टम मॉडल से जुड़ी ज़रूरी शर्तों के बारे में बताया गया है. कस्टम मॉडल, TensorFlow Lite फ़ॉर्मैट में होने चाहिए. साथ ही, इनमें मॉडल के ऑपरेटिंग पैरामीटर के बारे में बताने वाला metadata शामिल होना चाहिए.

डिज़ाइन से जुड़ी ज़रूरी शर्तें

इनपुट आकार ब्यौरा
इनपुट इमेज Float32 टेंसर, जिसका डाइमेंशन [1, height, width, 3] है नॉर्मलाइज़ की गई इनपुट इमेज.
आउटपुट आकार ब्यौरा
detection_boxes [1, num_boxes, 4] आकार का Float32 टेंसर पहचाने गए हर ऑब्जेक्ट की बॉक्स की जगह.
detection_classes [1, num_boxes] आकार का Float32 टेंसर पहचाने गए हर ऑब्जेक्ट के लिए, क्लास के नामों के इंडेक्स.
detection_scores [1, num_boxes] आकार का float32 टेंसर पहचाने गए हर ऑब्जेक्ट के लिए, अनुमान के स्कोर.
num_boxes साइज़ 1 का Float32 टेंसर पहचाने गए बॉक्स की संख्या.

मेटाडेटा से जुड़ी ज़रूरी शर्तें

पैरामीटर ब्यौरा ब्यौरा
input_norm_mean इनपुट टेंसर को सामान्य बनाने के लिए इस्तेमाल की जाने वाली औसत वैल्यू. नॉर्मलाइज़ की गई इनपुट इमेज.
input_norm_std इनपुट टेंसर को सामान्य बनाने के लिए इस्तेमाल किया जाने वाला फ़ील्ड नॉर्म. पहचाने गए हर ऑब्जेक्ट की बॉक्स की जगह.
label_file_paths कैटगरी टेंसर लेबल फ़ाइलों के पाथ. अगर मॉडल में कोई लेबल फ़ाइल नहीं है, तो खाली सूची पास करें. पहचाने गए हर ऑब्जेक्ट के लिए, क्लास के नामों के इंडेक्स.
score_calibration_md क्लासिफ़िकेशन टेंसर में स्कोर कैलिब्रेशन ऑपरेशन के बारे में जानकारी. अगर मॉडल में स्कोर
कैलिब्रेशन का इस्तेमाल नहीं किया जाता है, तो इस पैरामीटर की ज़रूरत नहीं होती.
पहचाने गए हर ऑब्जेक्ट के लिए, अनुमान के स्कोर.
num_boxes साइज़ 1 का Float32 टेंसर पहचाने गए बॉक्स की संख्या.

टास्क के मानदंड

यहां ऊपर दिए गए, पहले से ट्रेन किए गए मॉडल के लिए टास्क के मानदंड दिए गए हैं. इंतज़ार का समय, सीपीयू / जीपीयू का इस्तेमाल करके Pixel 6 पर औसत इंतज़ार का समय होता है.

मॉडल का नाम सीपीयू के इंतज़ार का समय जीपीयू में इंतज़ार का समय
EfficientDet-Lite0 float32 मॉडल 61.30 मिलीसेकंड 27.83 मिलीसेकंड
EfficientDet-Lite0 float16 मॉडल 53.97 मिलीसेकंड 27.97 मिलीसेकंड
EfficientDet-Lite0 int8 मॉडल 29.31 मिलीसेकंड -
EfficientDet-Lite2 float32 मॉडल 197.98 मिलीसेकंड 41.15 मिलीसेकंड
EfficientDet-Lite2 float16 मॉडल 198.77 मिलीसेकंड 47.31 मिलीसेकंड
EfficientDet-Lite2 int8 मॉडल 70.91 मिलीसेकंड -
SSD MobileNetV2 float32 मॉडल 36.30 मिलीसेकंड 24.01 मिलीसेकंड
SSD MobileNetV2 float16 मॉडल 37.35 मिलीसेकंड 28.16 मिलीसेकंड