एक छवि या एक वीडियो स्ट्रीम को देखते हुए, एक वस्तु का पता लगाने वाला मॉडल यह पहचान सकता है कि वस्तुओं का कौन सा ज्ञात सेट मौजूद हो सकता है और छवि के भीतर उनकी स्थिति के बारे में जानकारी प्रदान कर सकता है।
उदाहरण के लिए, उदाहरण एप्लिकेशन का यह स्क्रीनशॉट दिखाता है कि कैसे दो वस्तुओं को पहचाना गया है और उनकी स्थिति को एनोटेट किया गया है:
शुरू हो जाओ
मोबाइल ऐप में ऑब्जेक्ट डिटेक्शन का उपयोग करने का तरीका जानने के लिए, उदाहरण एप्लिकेशन और गाइड देखें ।
यदि आप Android या iOS के अलावा किसी अन्य प्लेटफ़ॉर्म का उपयोग कर रहे हैं, या यदि आप पहले से ही TensorFlow Lite APIs से परिचित हैं, तो आप हमारे स्टार्टर ऑब्जेक्ट डिटेक्शन मॉडल और उससे जुड़े लेबल डाउनलोड कर सकते हैं।
मेटाडेटा के साथ स्टार्टर मॉडल डाउनलोड करें
मेटाडेटा और संबद्ध फ़ील्ड के बारे में अधिक जानकारी के लिए (जैसे: labels.txt
) मॉडल से मेटाडेटा पढ़ें देखें
यदि आप अपने स्वयं के कार्य के लिए एक कस्टम पहचान मॉडल को प्रशिक्षित करना चाहते हैं, तो मॉडल अनुकूलन देखें।
निम्नलिखित उपयोग के मामलों के लिए, आपको एक अलग प्रकार के मॉडल का उपयोग करना चाहिए:
- यह भविष्यवाणी करना कि छवि किस एकल लेबल का सबसे अधिक प्रतिनिधित्व करती है ( छवि वर्गीकरण देखें)
- एक छवि की संरचना की भविष्यवाणी करना, उदाहरण के लिए विषय बनाम पृष्ठभूमि ( विभाजन देखें)
उदाहरण एप्लिकेशन और गाइड
यदि आप TensorFlow Lite के लिए नए हैं और Android या iOS के साथ काम कर रहे हैं, तो हम निम्नलिखित उदाहरण अनुप्रयोगों की खोज करने की अनुशंसा करते हैं जो आरंभ करने में आपकी सहायता कर सकते हैं।
एंड्रॉयड
आप कोड की कुछ पंक्तियों में ऑब्जेक्ट डिटेक्शन मॉडल को एकीकृत करने के लिए TensorFlow लाइट टास्क लाइब्रेरी से आउट-ऑफ-बॉक्स API का लाभ उठा सकते हैं। आप TensorFlow Lite Interpreter Java API का उपयोग करके अपनी खुद की कस्टम इंट्रेंस पाइपलाइन भी बना सकते हैं।
नीचे दिया गया Android उदाहरण दोनों विधियों के कार्यान्वयन को क्रमशः lib_task_api और lib_interpreter के रूप में प्रदर्शित करता है।
आईओएस
आप TensorFlow Lite Interpreter Swift API का उपयोग करके मॉडल को एकीकृत कर सकते हैं। नीचे आईओएस उदाहरण देखें।
मॉडल वर्णन
यह खंड TensorFlow ऑब्जेक्ट डिटेक्शन एपीआई से TensorFlow Lite में परिवर्तित सिंगल-शॉट डिटेक्टर मॉडल के लिए हस्ताक्षर का वर्णन करता है।
ऑब्जेक्ट डिटेक्शन मॉडल को ऑब्जेक्ट के कई वर्गों की उपस्थिति और स्थान का पता लगाने के लिए प्रशिक्षित किया जाता है। उदाहरण के लिए, एक मॉडल को उन छवियों के साथ प्रशिक्षित किया जा सकता है जिनमें फलों के विभिन्न टुकड़े होते हैं, साथ ही एक लेबल जो उनके द्वारा प्रतिनिधित्व किए जाने वाले फलों के वर्ग को निर्दिष्ट करता है (उदाहरण के लिए एक सेब, एक केला, या एक स्ट्रॉबेरी), और डेटा निर्दिष्ट करता है कि प्रत्येक वस्तु कहां दिखाई देती है छवि।
जब एक छवि बाद में मॉडल को प्रदान की जाती है, तो यह उन वस्तुओं की एक सूची को आउटपुट करेगा जो इसे पता लगाते हैं, एक बाउंडिंग बॉक्स का स्थान जिसमें प्रत्येक ऑब्जेक्ट होता है, और एक स्कोर जो इस विश्वास को इंगित करता है कि पता लगाना सही था।
इनपुट हस्ताक्षर
मॉडल इनपुट के रूप में एक छवि लेता है।
आइए मान लें कि अपेक्षित छवि 300x300 पिक्सेल है, जिसमें प्रति पिक्सेल तीन चैनल (लाल, नीला और हरा) है। इसे मॉडल को 270,000 बाइट मान (300x300x3) के चपटे बफर के रूप में फीड किया जाना चाहिए। यदि मॉडल को परिमाणित किया जाता है, तो प्रत्येक मान एक एकल बाइट होना चाहिए जो 0 और 255 के बीच के मान का प्रतिनिधित्व करता है।
एंड्रॉइड पर यह प्री-प्रोसेसिंग कैसे करें, यह समझने के लिए आप हमारे उदाहरण ऐप कोड पर एक नज़र डाल सकते हैं।
आउटपुट हस्ताक्षर
मॉडल चार सरणियों को आउटपुट करता है, जिसे सूचकांक 0-4 में मैप किया जाता है। Arrays 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%) की कट-ऑफ आराम से झूठी सकारात्मक को बाहर कर देगी।
स्थान
प्रत्येक खोजी गई वस्तु के लिए, मॉडल चार संख्याओं की एक सरणी लौटाएगा जो एक बाउंडिंग आयत का प्रतिनिधित्व करती है जो उसकी स्थिति को घेरती है। प्रदान किए गए स्टार्टर मॉडल के लिए, संख्याओं को निम्नानुसार क्रमबद्ध किया गया है:
[ | ऊपर, | बाएं, | नीचे, | सही | ] |
शीर्ष मान पिक्सेल में, छवि के शीर्ष से आयत के शीर्ष किनारे की दूरी का प्रतिनिधित्व करता है। बायां मान इनपुट छवि के बाईं ओर से बाएं किनारे की दूरी का प्रतिनिधित्व करता है। अन्य मान समान तरीके से नीचे और दाएं किनारों का प्रतिनिधित्व करते हैं।
प्रदर्शन बेंचमार्क
हमारे स्टार्टर मॉडल के लिए प्रदर्शन बेंचमार्क नंबर यहां वर्णित टूल के साथ जेनरेट किए गए हैं।
मॉडल नाम | मॉडल का आकार | उपकरण | जीपीयू | सी पी यू |
---|---|---|---|---|
कोको एसएसडी मोबाइलनेट v1 | 27 एमबी | पिक्सेल 3 (एंड्रॉइड 10) | 22ms | 46ms* |
पिक्सेल 4 (एंड्रॉइड 10) | 20ms | 29ms* | ||
आईफोन एक्सएस (आईओएस 12.4.1) | 7.6ms | 11ms** |
* 4 धागे का इस्तेमाल किया।
** सर्वश्रेष्ठ प्रदर्शन परिणाम के लिए iPhone पर उपयोग किए जाने वाले 2 धागे।
मॉडल अनुकूलन
पूर्व प्रशिक्षित मॉडल
डिटेक्शन ज़ू में विभिन्न प्रकार के विलंबता और सटीक विशेषताओं वाले मोबाइल-अनुकूलित डिटेक्शन मॉडल पाए जा सकते हैं। उनमें से प्रत्येक निम्नलिखित अनुभागों में वर्णित इनपुट और आउटपुट हस्ताक्षरों का अनुसरण करता है।
अधिकांश डाउनलोड ज़िप में एक model.tflite
फ़ाइल होती है। यदि कोई नहीं है, तो इन निर्देशों का उपयोग करके एक TensorFlow Lite फ्लैटबफ़र उत्पन्न किया जा सकता है। TF2 ऑब्जेक्ट डिटेक्शन चिड़ियाघर के SSD मॉडल को यहां दिए गए निर्देशों का उपयोग करके TensorFlow Lite में भी बदला जा सकता है। यह ध्यान रखना महत्वपूर्ण है कि डिटेक्शन मॉडल को सीधे TensorFlow लाइट कन्वर्टर का उपयोग करके परिवर्तित नहीं किया जा सकता है, क्योंकि उन्हें मोबाइल के अनुकूल स्रोत मॉडल बनाने के लिए एक मध्यवर्ती चरण की आवश्यकता होती है। ऊपर लिंक की गई स्क्रिप्ट इस चरण को पूरा करती हैं।
TF1 और TF2 दोनों निर्यात स्क्रिप्ट में ऐसे पैरामीटर होते हैं जो बड़ी संख्या में आउटपुट ऑब्जेक्ट या धीमी, अधिक सटीक पोस्ट प्रोसेसिंग को सक्षम कर सकते हैं। समर्थित तर्कों की विस्तृत सूची देखने के लिए कृपया स्क्रिप्ट के साथ --help
का उपयोग करें।
वर्तमान में, ऑन-डिवाइस अनुमान केवल एसएसडी मॉडल के साथ अनुकूलित है। सेंटरनेट और एफिशिएंटडेट जैसे अन्य आर्किटेक्चर के लिए बेहतर समर्थन की जांच की जा रही है।
अनुकूलित करने के लिए एक मॉडल कैसे चुनें?
प्रत्येक मॉडल अपनी सटीकता (एमएपी मूल्य द्वारा निर्धारित) और विलंबता विशेषताओं के साथ आता है। आपको एक ऐसा मॉडल चुनना चाहिए जो आपके उपयोग के मामले और इच्छित हार्डवेयर के लिए सबसे अच्छा काम करे। उदाहरण के लिए, एज टीपीयू मॉडल पिक्सेल 4 पर Google के एज टीपीयू पर अनुमान के लिए आदर्श हैं।
आप मॉडलों का मूल्यांकन करने और उपलब्ध सबसे कुशल विकल्प चुनने के लिए हमारे बेंचमार्क टूल का उपयोग कर सकते हैं।
कस्टम डेटा पर फ़ाइन-ट्यूनिंग मॉडल
हमारे द्वारा प्रदान किए जाने वाले पूर्व-प्रशिक्षित मॉडल वस्तुओं के 90 वर्गों का पता लगाने के लिए प्रशिक्षित होते हैं। कक्षाओं की पूरी सूची के लिए, मॉडल मेटाडेटा में लेबल फ़ाइल देखें।
आप मूल सेट में नहीं कक्षाओं को पहचानने के लिए एक मॉडल को फिर से प्रशिक्षित करने के लिए ट्रांसफर लर्निंग नामक तकनीक का उपयोग कर सकते हैं। उदाहरण के लिए, मूल प्रशिक्षण डेटा में केवल एक सब्जी होने के बावजूद, आप कई प्रकार की सब्जियों का पता लगाने के लिए मॉडल को फिर से प्रशिक्षित कर सकते हैं। ऐसा करने के लिए, आपको प्रत्येक नए लेबल के लिए प्रशिक्षण छवियों के एक सेट की आवश्यकता होगी जिसे आप प्रशिक्षित करना चाहते हैं। अनुशंसित तरीका TensorFlow Lite Model Maker लाइब्रेरी का उपयोग करना है जो कोड की कुछ पंक्तियों के साथ कस्टम डेटासेट का उपयोग करके TensorFlow Lite मॉडल को प्रशिक्षित करने की प्रक्रिया को सरल बनाता है। यह आवश्यक प्रशिक्षण डेटा और समय की मात्रा को कम करने के लिए स्थानांतरण सीखने का उपयोग करता है। आप कुछ उदाहरणों के साथ पूर्व-प्रशिक्षित मॉडल को फ़ाइन-ट्यूनिंग के उदाहरण के रूप में फ़्यू-शॉट डिटेक्शन कोलाब से भी सीख सकते हैं।
बड़े डेटासेट के साथ फ़ाइन-ट्यूनिंग के लिए, TensorFlow ऑब्जेक्ट डिटेक्शन API: TF1 , TF2 के साथ अपने स्वयं के मॉडल को प्रशिक्षित करने के लिए इन गाइडों पर एक नज़र डालें। एक बार प्रशिक्षित होने के बाद, उन्हें यहां दिए गए निर्देशों के साथ TFlite के अनुकूल प्रारूप में परिवर्तित किया जा सकता है: TF1 , TF2