वस्तु का पता लगाना

किसी छवि या वीडियो स्ट्रीम को देखते हुए, एक ऑब्जेक्ट डिटेक्शन मॉडल यह पहचान सकता है कि वस्तुओं का कौन सा ज्ञात सेट मौजूद हो सकता है और छवि के भीतर उनकी स्थिति के बारे में जानकारी प्रदान कर सकता है।

उदाहरण के लिए, उदाहरण एप्लिकेशन का यह स्क्रीनशॉट दिखाता है कि कैसे दो वस्तुओं को पहचाना गया है और उनकी स्थिति को एनोटेट किया गया है:

Android उदाहरण का स्क्रीनशॉट

शुरू हो जाओ

मोबाइल ऐप में ऑब्जेक्ट डिटेक्शन का उपयोग कैसे करें, यह जानने के लिए उदाहरण एप्लिकेशन और गाइड देखें।

यदि आप एंड्रॉइड या आईओएस के अलावा किसी अन्य प्लेटफॉर्म का उपयोग कर रहे हैं, या यदि आप पहले से ही टेन्सरफ्लो लाइट एपीआई से परिचित हैं, तो आप हमारे स्टार्टर ऑब्जेक्ट डिटेक्शन मॉडल और संबंधित लेबल डाउनलोड कर सकते हैं।

मेटाडेटा के साथ स्टार्टर मॉडल डाउनलोड करें

मेटाडेटा और संबंधित फ़ील्ड के बारे में अधिक जानकारी के लिए (जैसे: labels.txt ) मॉडल से मेटाडेटा पढ़ें देखें

यदि आप अपने स्वयं के कार्य के लिए एक कस्टम डिटेक्शन मॉडल को प्रशिक्षित करना चाहते हैं, तो मॉडल अनुकूलन देखें।

निम्नलिखित उपयोग के मामलों के लिए, आपको एक अलग प्रकार के मॉडल का उपयोग करना चाहिए:

  • यह अनुमान लगाना कि छवि किस एकल लेबल का सबसे अधिक प्रतिनिधित्व करती है ( छवि वर्गीकरण देखें)
  • किसी छवि की संरचना का पूर्वानुमान लगाना, उदाहरण के लिए विषय बनाम पृष्ठभूमि ( विभाजन देखें)

उदाहरण अनुप्रयोग और मार्गदर्शिकाएँ

यदि आप TensorFlow Lite में नए हैं और Android या iOS के साथ काम कर रहे हैं, तो हम निम्नलिखित उदाहरण अनुप्रयोगों की खोज करने की सलाह देते हैं जो आरंभ करने में आपकी सहायता कर सकते हैं।

एंड्रॉयड

आप कोड की कुछ पंक्तियों में ऑब्जेक्ट डिटेक्शन मॉडल को एकीकृत करने के लिए टेन्सरफ्लो लाइट टास्क लाइब्रेरी से आउट-ऑफ-बॉक्स एपीआई का लाभ उठा सकते हैं। आप TensorFlow Lite Interpreter Java API का उपयोग करके अपनी स्वयं की कस्टम अनुमान पाइपलाइन भी बना सकते हैं।

नीचे दिया गया एंड्रॉइड उदाहरण क्रमशः टास्क लाइब्रेरी और इंटरप्रेटर एपीआई का उपयोग करके दोनों तरीकों के कार्यान्वयन को दर्शाता है।

एंड्रॉइड उदाहरण देखें

आईओएस

आप TensorFlow Lite इंटरप्रेटर स्विफ्ट एपीआई का उपयोग करके मॉडल को एकीकृत कर सकते हैं। नीचे iOS उदाहरण देखें.

आईओएस उदाहरण देखें

मॉडल वर्णन

यह अनुभाग TensorFlow ऑब्जेक्ट डिटेक्शन API से TensorFlow लाइट में परिवर्तित सिंगल-शॉट डिटेक्टर मॉडल के लिए हस्ताक्षर का वर्णन करता है।

एक ऑब्जेक्ट डिटेक्शन मॉडल को कई वर्गों की वस्तुओं की उपस्थिति और स्थान का पता लगाने के लिए प्रशिक्षित किया जाता है। उदाहरण के लिए, एक मॉडल को उन छवियों के साथ प्रशिक्षित किया जा सकता है जिनमें फलों के विभिन्न टुकड़े होते हैं, साथ ही एक लेबल होता है जो फल के वर्ग को निर्दिष्ट करता है (उदाहरण के लिए एक सेब, एक केला, या एक स्ट्रॉबेरी), और डेटा निर्दिष्ट करता है कि प्रत्येक वस्तु कहां दिखाई देती है छवि।

जब बाद में मॉडल को एक छवि प्रदान की जाती है, तो यह उन वस्तुओं की एक सूची आउटपुट करेगा, जिनका वह पता लगाता है, एक बाउंडिंग बॉक्स का स्थान जिसमें प्रत्येक ऑब्जेक्ट होता है, और एक स्कोर जो इस विश्वास को इंगित करता है कि पहचान सही थी।

इनपुट हस्ताक्षर

मॉडल इनपुट के रूप में एक छवि लेता है।

आइए मान लें कि अपेक्षित छवि 300x300 पिक्सेल है, जिसमें प्रति पिक्सेल तीन चैनल (लाल, नीला और हरा) हैं। इसे मॉडल में 270,000 बाइट मान (300x300x3) के चपटे बफर के रूप में फीड किया जाना चाहिए। यदि मॉडल को परिमाणित किया गया है, तो प्रत्येक मान 0 और 255 के बीच मान का प्रतिनिधित्व करने वाला एक बाइट होना चाहिए।

एंड्रॉइड पर यह प्री-प्रोसेसिंग कैसे करें यह समझने के लिए आप हमारे उदाहरण ऐप कोड पर एक नज़र डाल सकते हैं।

आउटपुट हस्ताक्षर

मॉडल चार सरणियों को आउटपुट करता है, जिन्हें सूचकांक 0-4 पर मैप किया जाता है। सारणी 0, 1, और 2 N ज्ञात वस्तुओं का वर्णन करती हैं, प्रत्येक वस्तु के अनुरूप प्रत्येक सरणी में एक तत्व होता है।

अनुक्रमणिका नाम विवरण
0 स्थानों [एन] [4] 0 और 1 के बीच फ़्लोटिंग पॉइंट मानों की बहुआयामी सरणी, आंतरिक सरणी फॉर्म में बाउंडिंग बॉक्स का प्रतिनिधित्व करती है [ऊपर, बाएं, नीचे, दाएं]
1 कक्षाओं एन पूर्णांकों की सारणी (फ़्लोटिंग पॉइंट मानों के रूप में आउटपुट) प्रत्येक लेबल फ़ाइल से क्लास लेबल के सूचकांक को इंगित करती है
2 स्कोर 0 और 1 के बीच एन फ़्लोटिंग पॉइंट मानों की सरणी इस संभावना को दर्शाती है कि एक वर्ग का पता लगाया गया था
3 पता लगाने की संख्या N का पूर्णांक मान

उदाहरण के लिए, कल्पना करें कि एक मॉडल को सेब, केले और स्ट्रॉबेरी का पता लगाने के लिए प्रशिक्षित किया गया है। जब एक छवि प्रदान की जाती है, तो यह पता लगाने के परिणामों की एक निर्धारित संख्या को आउटपुट करेगा - इस उदाहरण में, 5।

कक्षा अंक जगह
सेब 0.92 [18, 21, 57, 63]
केला 0.88 [100, 30, 180, 150]
स्ट्रॉबेरी 0.87 [7, 82, 89, 163]
केला 0.23 [42, 66, 57, 83]
सेब 0.11 [6, 42, 31, 58]

आत्मविश्वास स्कोर

इन परिणामों की व्याख्या करने के लिए, हम प्रत्येक खोजी गई वस्तु के स्कोर और स्थान को देख सकते हैं। स्कोर 0 और 1 के बीच की एक संख्या है जो इस विश्वास को इंगित करता है कि वस्तु का वास्तव में पता लगाया गया था। संख्या 1 के जितनी करीब होगी, मॉडल उतना ही अधिक आश्वस्त होगा।

आपके आवेदन के आधार पर, आप एक कट-ऑफ सीमा तय कर सकते हैं जिसके नीचे आप पहचान परिणामों को छोड़ देंगे। वर्तमान उदाहरण के लिए, एक समझदार कट-ऑफ 0.5 का स्कोर है (मतलब 50% संभावना है कि पता लगाना वैध है)। उस स्थिति में, सरणी में अंतिम दो वस्तुओं को नजरअंदाज कर दिया जाएगा क्योंकि वे आत्मविश्वास स्कोर 0.5 से नीचे हैं:

कक्षा अंक जगह
सेब 0.92 [18, 21, 57, 63]
केला 0.88 [100, 30, 180, 150]
स्ट्रॉबेरी 0.87 [7, 82, 89, 163]
केला 0.23 [42, 66, 57, 83]
सेब 0.11 [6, 42, 31, 58]

आपके द्वारा उपयोग किया जाने वाला कट-ऑफ इस पर आधारित होना चाहिए कि क्या आप झूठी सकारात्मकता (ऐसी वस्तुएं जो गलत तरीके से पहचानी जाती हैं, या छवि के क्षेत्र जो गलती से वस्तुओं के रूप में पहचाने जाते हैं जबकि वे नहीं हैं) के साथ अधिक सहज हैं, या गलत नकारात्मक (वास्तविक वस्तुएं जो हैं) चूक गए क्योंकि उनका आत्मविश्वास कम था)।

उदाहरण के लिए, निम्नलिखित छवि में, एक नाशपाती (जो एक ऐसी वस्तु नहीं है जिसे पहचानने के लिए मॉडल को प्रशिक्षित किया गया था) को "व्यक्ति" के रूप में गलत पहचाना गया था। यह एक गलत सकारात्मकता का उदाहरण है जिसे उचित कट-ऑफ का चयन करके अनदेखा किया जा सकता है। इस मामले में, 0.6 (या 60%) का कट-ऑफ आराम से झूठी सकारात्मकता को बाहर कर देगा।

एंड्रॉइड उदाहरण का स्क्रीनशॉट गलत सकारात्मक दिखा रहा है

जगह

प्रत्येक खोजी गई वस्तु के लिए, मॉडल चार संख्याओं की एक सरणी लौटाएगा जो एक बाउंडिंग आयत का प्रतिनिधित्व करती है जो उसकी स्थिति को घेरती है। प्रदान किए गए स्टार्टर मॉडल के लिए, संख्याओं को निम्नानुसार क्रमबद्ध किया गया है:

[ शीर्ष, बाएं, तल, सही ]

शीर्ष मान, छवि के शीर्ष से आयत के शीर्ष किनारे की दूरी को पिक्सेल में दर्शाता है। बायां मान इनपुट छवि के बाईं ओर से बाएं किनारे की दूरी को दर्शाता है। अन्य मान समान तरीके से नीचे और दाएं किनारों का प्रतिनिधित्व करते हैं।

प्रदर्शन मानदंड

हमारे स्टार्टर मॉडल के लिए प्रदर्शन बेंचमार्क नंबर यहां वर्णित टूल से उत्पन्न होते हैं।

मॉडल नाम मॉडल का आकार उपकरण जीपीयू CPU
कोको एसएसडी मोबाइलनेट v1 27 एमबी पिक्सेल 3 (एंड्रॉइड 10) 22ms 46ms*
पिक्सेल 4 (एंड्रॉइड 10) 20ms 29 एमएस*
आईफोन एक्सएस (आईओएस 12.4.1) 7.6ms 11 एमएस**

* 4 धागों का प्रयोग किया गया।

** सर्वोत्तम प्रदर्शन परिणाम के लिए iPhone पर 2 थ्रेड का उपयोग किया जाता है।

मॉडल अनुकूलन

पूर्व-प्रशिक्षित मॉडल

विभिन्न प्रकार की विलंबता और सटीक विशेषताओं वाले मोबाइल-अनुकूलित डिटेक्शन मॉडल डिटेक्शन चिड़ियाघर में पाए जा सकते हैं। उनमें से प्रत्येक निम्नलिखित अनुभागों में वर्णित इनपुट और आउटपुट हस्ताक्षरों का अनुसरण करता है।

अधिकांश डाउनलोड ज़िप में एक model.tflite फ़ाइल होती है। यदि कोई नहीं है, तो इन निर्देशों का उपयोग करके एक TensorFlow Lite फ़्लैटबफ़र तैयार किया जा सकता है। TF2 ऑब्जेक्ट डिटेक्शन ज़ू से SSD मॉडल को यहां दिए गए निर्देशों का उपयोग करके TensorFlow Lite में भी परिवर्तित किया जा सकता है। यह ध्यान रखना महत्वपूर्ण है कि डिटेक्शन मॉडल को सीधे TensorFlow Lite कनवर्टर का उपयोग करके परिवर्तित नहीं किया जा सकता है, क्योंकि उन्हें मोबाइल-अनुकूल स्रोत मॉडल बनाने के मध्यवर्ती चरण की आवश्यकता होती है। ऊपर लिंक की गई स्क्रिप्ट यह चरण निष्पादित करती हैं।

TF1 और TF2 दोनों निर्यात स्क्रिप्ट में ऐसे पैरामीटर हैं जो बड़ी संख्या में आउटपुट ऑब्जेक्ट या धीमी, अधिक सटीक पोस्ट प्रोसेसिंग को सक्षम कर सकते हैं। समर्थित तर्कों की विस्तृत सूची देखने के लिए कृपया स्क्रिप्ट के साथ --help उपयोग करें।

वर्तमान में, ऑन-डिवाइस अनुमान केवल SSD मॉडल के साथ अनुकूलित है। सेंटरनेट और एफिशिएंटडेट जैसे अन्य आर्किटेक्चर के लिए बेहतर समर्थन की जांच की जा रही है।

अनुकूलित करने के लिए मॉडल कैसे चुनें?

प्रत्येक मॉडल अपनी सटीकता (एमएपी मान द्वारा परिमाणित) और विलंबता विशेषताओं के साथ आता है। आपको ऐसा मॉडल चुनना चाहिए जो आपके उपयोग-मामले और इच्छित हार्डवेयर के लिए सबसे अच्छा काम करता हो। उदाहरण के लिए, एज टीपीयू मॉडल पिक्सेल 4 पर Google के एज टीपीयू पर अनुमान लगाने के लिए आदर्श हैं।

आप मॉडलों का मूल्यांकन करने और उपलब्ध सबसे कुशल विकल्प चुनने के लिए हमारे बेंचमार्क टूल का उपयोग कर सकते हैं।

कस्टम डेटा पर फाइन-ट्यूनिंग मॉडल

हमारे द्वारा प्रदान किए गए पूर्व-प्रशिक्षित मॉडल 90 वर्गों की वस्तुओं का पता लगाने के लिए प्रशिक्षित हैं। कक्षाओं की पूरी सूची के लिए, मॉडल मेटाडेटा में लेबल फ़ाइल देखें।

आप किसी मॉडल को मूल सेट में नहीं मौजूद कक्षाओं को पहचानने के लिए फिर से प्रशिक्षित करने के लिए ट्रांसफर लर्निंग नामक तकनीक का उपयोग कर सकते हैं। उदाहरण के लिए, मूल प्रशिक्षण डेटा में केवल एक सब्जी होने के बावजूद, आप कई प्रकार की सब्जियों का पता लगाने के लिए मॉडल को फिर से प्रशिक्षित कर सकते हैं। ऐसा करने के लिए, आपको उन प्रत्येक नए लेबल के लिए प्रशिक्षण छवियों के एक सेट की आवश्यकता होगी जिन्हें आप प्रशिक्षित करना चाहते हैं। अनुशंसित तरीका TensorFlow Lite मॉडल मेकर लाइब्रेरी का उपयोग करना है जो कोड की कुछ पंक्तियों के साथ कस्टम डेटासेट का उपयोग करके TensorFlow Lite मॉडल को प्रशिक्षित करने की प्रक्रिया को सरल बनाता है। यह आवश्यक प्रशिक्षण डेटा और समय की मात्रा को कम करने के लिए ट्रांसफर लर्निंग का उपयोग करता है। आप कुछ उदाहरणों के साथ पूर्व-प्रशिक्षित मॉडल को फाइन-ट्यूनिंग के उदाहरण के रूप में फ्यू-शॉट डिटेक्शन कोलाब से भी सीख सकते हैं।

बड़े डेटासेट के साथ फ़ाइन-ट्यूनिंग के लिए, TensorFlow ऑब्जेक्ट डिटेक्शन एपीआई के साथ अपने स्वयं के मॉडल को प्रशिक्षित करने के लिए इन गाइडों पर एक नज़र डालें: TF1 , TF2 । एक बार प्रशिक्षित होने के बाद, उन्हें यहां दिए गए निर्देशों के साथ टीएफलाइट-अनुकूल प्रारूप में परिवर्तित किया जा सकता है: टीएफ1 , टीएफ2