MediaPipe ऑब्जेक्ट डिटेक्टर टास्क की मदद से, इमेज या वीडियो में कई तरह के ऑब्जेक्ट की मौजूदगी और जगह का पता लगाया जा सकता है. उदाहरण के लिए, ऑब्जेक्ट डिटेक्टर किसी इमेज में कुत्तों का पता लगा सकता है. यह टास्क, मशीन लर्निंग (एमएल) मॉडल की मदद से इमेज डेटा पर काम करता है. यह इनपुट के तौर पर स्टैटिक डेटा या लगातार चलने वाली वीडियो स्ट्रीम को स्वीकार करता है और पहचान के नतीजों की सूची दिखाता है. पहचाने गए हर ऑब्जेक्ट का नतीजा, इमेज या वीडियो में दिखने वाले ऑब्जेक्ट को दिखाता है.
शुरू करें
इस टास्क का इस्तेमाल शुरू करने के लिए, जिस प्लैटफ़ॉर्म पर काम किया जा रहा है उसके लिए, लागू करने से जुड़ी इनमें से किसी एक गाइड का पालन करें:
- Android - कोड का उदाहरण - गाइड
- Python - कोड का उदाहरण - गाइड
- वेब - कोड का उदाहरण - गाइड
- iOS - कोड का उदाहरण - गाइड
प्लैटफ़ॉर्म के हिसाब से बनाई गई ये गाइड, इस टास्क को लागू करने का बुनियादी तरीका बताती हैं. इनमें सुझाया गया मॉडल और सुझाए गए कॉन्फ़िगरेशन विकल्पों के साथ कोड का उदाहरण शामिल है.
टास्क की जानकारी
इस सेक्शन में, इस टास्क की सुविधाओं, इनपुट, और आउटपुट के बारे में बताया गया है.
सुविधाएं
- इनपुट इमेज प्रोसेसिंग - प्रोसेसिंग में इमेज को घुमाना, उसका साइज़ बदलना, सामान्य करना, और कलर स्पेस कन्वर्ज़न शामिल है.
- मैप के लिए स्थानीय भाषा का लेबल - डिसप्ले नेम के लिए इस्तेमाल की जाने वाली भाषा सेट करें
- स्कोर थ्रेशोल्ड - अनुमान के स्कोर के आधार पर नतीजे फ़िल्टर करें.
- सबसे ज़्यादा मिलते-जुलते नतीजे - नंबर का पता लगाने की सुविधा के नतीजों को फ़िल्टर करें.
- अनुमति वाली सूची और ब्लॉकलिस्ट को लेबल करना - पता लगाई गई कैटगरी बताएं.
टास्क के इनपुट | टास्क के आउटपुट |
---|---|
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 मॉडल (सुझाया गया)
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 मिलीसेकंड |