एक जटिल कंप्यूटर विज़न उत्पाद कैसे विकसित किया जाता है इसका 'पर्दे के पीछे' विवरण:
● कमजोर हार्डवेयर पर ऑब्जेक्ट डिटेक्शन मॉडल चलाने की समस्या का समाधान
● गलत सकारात्मक परिणामों और असंतुलित डेटासेट से निपटना
● एक मशीन को लगभग एक जैसी दिखने वाली पक्षी प्रजातियों में अंतर करना सिखाना
कंप्यूटर विज़न ने दुनिया भर के उद्यमियों की रुचि को आकर्षित किया है, और अच्छे कारण से: आधुनिक एआई तकनीक की क्षमताएं पहले से असंभव विचारों को वास्तविक उत्पादों में बदल देती हैं।
फ़ोटो और वीडियो में वस्तुओं का पता लगाने और वर्गीकृत करने का कई अलग-अलग क्षेत्रों और सैकड़ों प्रणालियों में अनुप्रयोग पाया गया है - अंतर्निहित चेहरे की पहचान वाले सुरक्षा कैमरों से लेकर एक्स-रे स्कैन के आधार पर बीमारियों का पता लगाने से लेकर सरल मोबाइल ऐप तक।
लेकिन परिचय के साथ, इस लेख में मैं 'पर्दे के पीछे' साझा करना चाहता था कि कंप्यूटर विज़न उत्पाद कैसे विकसित किया जाता है, विशेष रूप से एक जटिल उत्पाद।
मुझे बर्डसी पर काम करने का अवसर मिला है - एक पक्षी पहचान ऐप उन लोगों के लिए जो यह देखना चाहते हैं कि उनके पिछवाड़े में कौन आता है जबकि वे नहीं देख रहे हैं।
बर्डसी वास्तविक समय में वस्तु का पता लगाने और वर्गीकरण के साथ एक जटिल, एआई-संचालित ऐप है जिसे कमजोर हार्डवेयर पर चलाने, उच्च सटीकता के साथ पक्षियों के प्रकार और लिंग का पता लगाने में सक्षम होना चाहिए।
यह सब देखते हुए, शुरुआती विचार से लेकर ऐप स्टोर में ऐप प्रकाशित करने तक का रास्ता जटिल था - और एक ही समय में लुभावना भी।
हमने कई बाधाओं का सामना किया है - व्यवसाय और विकास दोनों ही दृष्टिकोण से - जिन्हें मैंने एक ही स्थान पर साझा करने का निर्णय लिया है ताकि उन उद्यमियों और एआई डेवलपर्स की मदद की जा सके जो एक ही परियोजना का सामना कर रहे हों।
हाथ में काम
शिकारियों और इस मामले में, पक्षी पर नजर रखने वालों से बचने के लिए पक्षियों को अपने पर्यावरण के साथ पूरी तरह से घुलमिल जाने के लिए लाखों वर्षों का विकास करना पड़ा है, जिससे उनके लिए वन्य जीवन की प्रशंसा करना कठिन हो गया है।
जबकि कुछ पक्षी प्रजातियों को आमने-सामने देखना... चोंच समस्याग्रस्त हो सकती है, अपने घर के आराम से एक वीडियो कैमरे के माध्यम से उनकी निगरानी करना हमारे पंख वाले दोस्तों का आनंद लेने का एक सुंदर तरीका है, खासकर अगर एआई घंटों के वीडियो फुटेज को देखने की आवश्यकता को हटा देता है और भेजता है जब कोई पक्षी कैमरे के दृश्य में प्रवेश करता है, तो आप स्वचालित रूप से पता लगा लेते हैं कि यह किस प्रजाति का पक्षी है।
बर्डसी के दो भाग हैं:
वस्तु का पता लगाना - एक तंत्रिका नेटवर्क जो किसी पक्षी या स्तनपायी की उपस्थिति का पता लगाने के लिए जिम्मेदार है
वस्तु वर्गीकरण - एक तंत्रिका नेटवर्क जो यह निर्धारित करता है कि किस पक्षी या स्तनपायी प्रजाति को पकड़ा गया है
वस्तु का पता लगाने के लिए निम्न गुणवत्ता वाले कैमरे
सेवा को अधिक सुलभ और उपयोग में आसान बनाने के लिए, पक्षियों को देखने के लिए किसी भी कैमरे का उपयोग किया जा सकता है। यहीं पर हमें पहली समस्या का सामना करना पड़ा: निम्न-गुणवत्ता वाले कैमरे, क्योंकि वे सबसे किफायती और सबसे व्यापक हैं।
जबकि 'कोई कैमरा सीमा नहीं' उपयोगकर्ताओं के लिए बहुत अच्छी है, इसने हमारे लिए एक चुनौती पेश की, क्योंकि ऑब्जेक्ट डिटेक्शन मॉडल कैमरा चिपसेट का उपयोग करके चलता है।
जहां किसी को अच्छा सौदा मिलता है, वहीं दूसरों को थोड़ी देर मिलती है, इस मामले में 'अन्य' हमारे सीवी डेवलपर्स हैं। सस्ते कैमरे के साथ काम करने का मतलब सस्ते चिपसेट के साथ काम करना है जिससे डिफ़ॉल्ट न्यूरल नेटवर्क आर्किटेक्चर का उपयोग करना असंभव हो जाता है।
कंप्यूटर विज़न वीडियो कैमरों (NVIDIA जेटसन नैनो) के शीर्ष-स्तरीय, स्वर्ण मानक की तुलना में, जो डिफ़ॉल्ट YOLO v4 की लगभग 120 परतों का उपयोग करने की अनुमति देता है, जिन कैमरों के साथ हमें काम करना था, वे केवल 22 परतों के लिए अनुमति देते थे।
जहां एक पूर्ण YOLO v4 न्यूरल नेटवर्क बेहतरीन पहचान परिणाम प्रदान करता है, वहीं एक स्ट्रिप्ड-डाउन संस्करण खराब प्रदर्शन करता है। हमने दोनों का परीक्षण किया है और सस्ते चिपसेट का उपयोग करके चलाने पर मॉडल की गहराई कितनी कम थी, इससे हमें अप्रिय आश्चर्य हुआ।
डिफ़ॉल्ट YOLO v4 बनाम रिड्यूस्ड का परीक्षण
हमने डिफ़ॉल्ट YOLO v4 मॉडल को प्रशिक्षित करने और ग्राहक के डेटासेट पर इसका परीक्षण करने के साथ शुरुआत की। हमने जो परिणाम प्राप्त किए वे संतोषजनक थे - 95% एमएपी, जो कंप्यूटर विज़न की दुनिया में उत्पादन में एक मोड लॉन्च करने के लिए पर्याप्त से अधिक है।
कैमरे के मापदंडों को फिट करने के लिए मॉडल को फिर से प्रशिक्षित करने के बाद, पहचान की गुणवत्ता में काफी गिरावट आई। लेकिन जहां मशीनें विफल हो जाती हैं वहां इंसान आगे बढ़ता है।
हमने परीक्षण डेटा पर तंत्रिका नेटवर्क का परीक्षण किया है और गलत सकारात्मक और गलत नकारात्मक का मूल्यांकन किया है। इससे इस बात पर प्रकाश पड़ा कि नेटवर्क में कहां ज्ञान की कमी थी और कहां उसने सबसे ज्यादा गलतियां कीं।
हम स्तनधारियों या झूठी सकारात्मकताओं के अलावा और कुछ नहीं हैं
नेटवर्क लोगों को, विशेष रूप से लोगों के हाथों को जानवर के रूप में पहचानने के लिए उत्सुक था (और हम इसे दोष नहीं देते हैं, मनुष्य आख़िर जानवर ही हैं)। हालांकि, जैविक दृष्टिकोण से, यह सही है, अंतिम उपयोगकर्ता अपने पड़ोसियों की तुलना में पक्षियों को देखने में अधिक रुचि रखते हैं, इसलिए हमें लोगों को अनदेखा करने और इसके बजाय पक्षियों और स्तनधारियों पर ध्यान केंद्रित करने के लिए नेटवर्क को सिखाने पर काम करना पड़ा।
ऐसा करने के लिए, हमने नकारात्मक उदाहरण जोड़े हैं, जिनमें विभिन्न कोणों पर लोगों की तस्वीरों के साथ-साथ मानव हाथ भी शामिल हैं।
अँधेरे में क्या छिपा है
कैमरे के दो मोड हैं: नियमित दिन का मोड जो पूर्ण-रंगीन छवियां बनाता है, और रात का इन्फ्रारेड मोड, जो काले और सफेद छवियों का उत्पादन करता है। जब कैमरा इन्फ्रारेड में बदल गया, तो मॉडल ने बहुत सारी झूठी सकारात्मकताएँ उत्पन्न कीं:
पेड़ के पत्ते हवा में हिल रहे हैं
पतंगे जैसे कीड़े, जो गर्म कैमरे से आकर्षित होते हैं
फव्वारे
उपयोगकर्ताओं को अधिसूचना से जागने पर खुशी नहीं होगी, वे उल्लू या लोमड़ी को देखने के लिए उत्साहित होंगे, लेकिन अंत में कैमरे के लेंस के खिलाफ अपने शरीर को पीटते हुए एक पतंगे की रिकॉर्डिंग को देखेंगे।
नींद की रुकावटों को कम से कम करने के लिए, हमने रात की सेटिंग में झूठी सकारात्मकता के उदाहरण एकत्र किए और उन्हें हाथ से चिह्नित किया।
इंस्टाग्राम बनाम हकीकत
क्या आपने कभी सोशल मीडिया को 'हाइलाइट रील' कहे जाने के बारे में सुना है जहां लोग अपना सर्वश्रेष्ठ संस्करण प्रस्तुत करते हैं? कौन जानता था कि जंगली जानवरों के लिए भी यही सच हो सकता है।
पक्षियों की तस्वीरें जो Google Images और Youtube वीडियो जैसे खुले स्रोतों से प्राप्त की जा सकती हैं, आमतौर पर उच्च गुणवत्ता वाली, बहुत तेज होती हैं, और नमूनों को कैमरे की ओर देखते हुए या कम से कम सामने की ओर रखते हुए, पक्षी के बीच में कुछ भी नहीं होने पर, उनके सर्वोत्तम रूप में चित्रित करती हैं। और कैमरा दृश्य में बाधा डाल रहा है।
वास्तविकता हमेशा उतनी सुंदर नहीं होती. कैमरे निम्न-गुणवत्ता वाली छवियां उत्पन्न करते हैं जिससे यह समझना मुश्किल हो जाता है कि मानव आंख के लिए भी क्या हो रहा है, बारिश, बर्फ या धूल जैसी खराब मौसम की स्थिति दृश्य में बाधा डाल सकती है, और हमें यकीन है कि पक्षी तब समझ जाते हैं जब कोई उन्हें कैद करना चाहता है और स्वयं को यथासंभव हास्यास्पद तरीके से रखें।
क्लाइंट द्वारा प्रदान किया गया डेटासेट (इंटरनेट पर पाई गई छोटी छवियों से युक्त) इस प्रोजेक्ट के लिए बहुत उपयोगी नहीं था।
हमें ग्राहक के कैमरे का उपयोग करके वास्तविक परिस्थितियों में पक्षियों की छवियों का एक सेट एकत्र करने की आवश्यकता थी ताकि मॉडल को दिखाया जा सके कि पक्षी वास्तव में कैसे दिखते हैं, न कि उन्हें सोशल मीडिया पर कैसे प्रस्तुत किया जाता है।
अब हमारे पास क्या है
तो, उपरोक्त सभी करने के बाद:
प्रत्येक उदाहरण को मैन्युअल रूप से जांचना जहां नेटवर्क गलत था
नेटवर्क को लोगों को नज़रअंदाज करना और उन्हें पक्षी या स्तनधारी के रूप में न पहचानना सिखाना
श्वेत-श्याम छवियों और झूठी सकारात्मकताओं के साथ काम करना
वास्तविक जीवन की परिस्थितियों, विभिन्न कोणों और विभिन्न मौसम स्थितियों में पक्षियों का डेटासेट एकत्र करना
हम ऑब्जेक्ट डिटेक्शन के लिए 97,5% एमएपी हासिल करने में कामयाब रहे हैं। कंप्यूटर विज़न मॉडल के लिए यह एक बहुत ही उच्च परिणाम है क्योंकि उत्पादन में जाने वाले किसी भी सीवी मॉडल के लिए अलिखित नियम 94% से अधिक एमएपी होना है।
पूर्णता प्राप्त करना (लगभग)
हालाँकि अब हमने जो परिणाम प्राप्त किए हैं वे अंतिम उत्पाद में उपयोग किए जाने के लिए पर्याप्त से अधिक हैं, फिर भी सुधार की गुंजाइश है।
नेटवर्क फूलों को पक्षी समझ लेता है
पीछे से पक्षियों का दृश्य अभी भी कभी-कभी एक रहस्य है
पक्षी आंशिक रूप से यादृच्छिक वस्तुओं से ढके हुए हैं
पक्षी कैमरे के करीब
प्रत्येक समूह के लिए पर्याप्त छवियां एकत्र होने के बाद, हम उम्मीद करते हैं कि एमएपी बढ़कर 98,5% तक पहुंच जाएगा।
छवि वर्गीकरण मॉडल
अपने पिछवाड़े के आगंतुकों को जानने के लिए अगला कदम एक पक्षी के साथ छवि को एक वस्तु वर्गीकरण मॉडल में पास करना है। इसका लक्ष्य पक्षी की प्रजाति और उसके लिंग को पहचानना है।
चूँकि कुछ पक्षी प्रजातियाँ विशेष रूप से कुछ महाद्वीपों पर रहती हैं, इसलिए हमने दो मॉडल बनाने का निर्णय लिया है - एक उन लोगों के लिए जो उत्तरी अमेरिका में रहते हैं, और एक उन लोगों के लिए जो यूरोप में रहते हैं।
एक समय में एक कदम: मल्टीस्टेज तंत्रिका नेटवर्क में एक सबक
प्रारंभ में, वस्तु वर्गीकरण की समस्या को 'हेड-ऑन' दृष्टिकोण का उपयोग करके हल किया गया था: नेटवर्क को सभी विभिन्न प्रजातियों, नर और मादा दोनों की तस्वीरें दिखाई गईं, जिससे यह जानने की कोशिश की गई कि वे कैसे दिखते हैं और वे प्रत्येक से कैसे भिन्न हैं अन्य।
इसके परिणामस्वरूप बहुत खराब सटीकता स्कोर प्राप्त हुए, दूसरे शब्दों में, पक्षी और स्तनपायी प्रजातियों की पहचान करते समय नेटवर्क ने बहुत सारी गलतियाँ कीं।
नेटवर्क एक ही समय में बहुत सारे पहलुओं को जानने का प्रयास कर रहा था। कई पक्षी प्रजातियाँ एक-दूसरे से बहुत मिलती-जुलती दिखती हैं और अलग-अलग रंग के पंखों के एक टुकड़े या अलग-अलग आकार की चोंच के कारण एक-दूसरे से भिन्न होती हैं।
एक ही प्रजाति के विभिन्न लिंग कैसे दिखते हैं, इसके साथ-साथ यह सारी जानकारी बनाए रखना, दी गई परिस्थितियों में बहुत मुश्किल है। अधिक व्यापक पक्षी प्रकार का सही निर्धारण करते समय नेटवर्क अक्सर पक्षी प्रजातियों को मिला देता है।
उदाहरण के लिए, काले पंखों के एक टुकड़े में हुड वाले वार्बलर और केंटुकी वार्बलर के बीच का अंतर:
नेटवर्क एक हुड वाले वार्बलर को केंटुकी वार्बलर के रूप में लेबल करेगा, जो एक गलत परिणाम देगा, लेकिन आम तौर पर सही होगा: दोनों वार्बलर हैं। समय की खातिर, ग्राहक ने फैसला किया कि उसकी विशेष प्रजाति के बजाय समग्र पक्षी प्रकार का पता लगाना अधिक महत्वपूर्ण है, इसलिए हमने वहीं से शुरुआत की।
मॉडल मूल्यांकन के बाद, हमने एक बहुस्तरीय दृष्टिकोण लागू करने का निर्णय लिया है:
सभी पक्षी प्रजातियों को अधिक सामान्य श्रेणियों में बांटा गया: चील, गौरैया, कौवे, कबूतर, आदि।
नेटवर्क सबसे पहले समग्र पक्षी प्रकार का निर्धारण करेगा
दूसरा चरण यह पता लगाना है कि यह कौन सी प्रजाति है
अंतिम चरण में यह निर्धारित करना होगा कि पक्षी नर है या मादा
पक्षी प्रजातियों को समूहीकृत करके, हम वर्गों की संख्या को 98 से घटाकर 49 करने में कामयाब रहे, जिससे सटीकता स्कोर में काफी सुधार हुआ क्योंकि नेटवर्क के पास चुनने के लिए उतने वर्ग नहीं थे।
अभ्यास मशीनों को भी परिपूर्ण बनाता है
जब आपके सामने कोई नई अवधारणा आती है, तो आप उसे समझने के लिए किताबें पढ़ते हैं या शैक्षिक वीडियो देखते हैं। यदि आप असफल होते हैं, तो आप अपने मित्र से इसे समझाने के लिए कहते हैं या आप इस विषय पर एक सेमिनार में जाते हैं। दूसरे शब्दों में, आप इसे बेहतर ढंग से समझने के लिए इसके बारे में अधिक जानकारी जमा करने का प्रयास करते हैं।
यही बात तंत्रिका नेटवर्क के लिए भी लागू होती है। जितना बेहतर आपको यह समझने की आवश्यकता होगी कि एक योद्धा कैसा दिखता है, आपको उसे दिखाने के लिए उतने ही अधिक योद्धाओं की छवियों की आवश्यकता होगी। यह जितना अधिक डेटा देखेगा, सटीकता स्कोर उतना ही बेहतर होगा।
हमने जो मल्टीस्टेज दृष्टिकोण चुना है, उसने न केवल ऑब्जेक्ट वर्गीकरण मॉडल की सटीकता में सुधार किया है, बल्कि डेटासेट का विश्लेषण करना और यह निर्धारित करना भी संभव बना दिया है कि नेटवर्क में सीखने के डेटा की कमी कहां है।
बदसूरत बत्तख की समस्या
ऑब्जेक्ट वर्गीकरण मॉडल लॉन्च होने के बाद, हमें ऐसे परिणाम प्राप्त होने पर आश्चर्य हुआ जो परीक्षणों द्वारा हमें दिखाए गए परिणामों से कहीं अधिक खराब थे: मॉडल पक्षी प्रजातियों या प्रकार को सही ढंग से निर्धारित नहीं कर सका।
समस्या इससे भी अधिक गहरी है: पूरे प्रोजेक्ट के प्रभारी हमारे कंप्यूटर विज़न डेवलपर, जिन्होंने इस पर काम करते समय स्वयं सभी पक्षी प्रजातियों के बारे में सीखा है, वह यह निर्धारित करने में भी विफल रहे कि जब उन्हें नेटवर्क द्वारा गलत तरीके से लेबल की गई छवियां मिलीं तो वे कौन से पक्षी थे। .
यह पता चला कि जुलाई पक्षी वर्गीकरण मॉडल लॉन्च करने का सबसे अच्छा समय नहीं है क्योंकि यह वह समय है जब किशोर पक्षी उड़ना सीखते हैं और अपने घोंसले छोड़ना सीखते हैं।
बदसूरत बत्तख के बच्चे की कहानी याद है? खैर, यह अधिकांश पक्षियों के लिए सच है, नवजात शिशु वयस्क पक्षियों की तरह नहीं दिखते हैं, और यदि यह अभी भी युवा है तो यह जानना मुश्किल है कि आप किस पक्षी को देख रहे हैं।
हमने गर्मियों के दौरान युवा पक्षियों की तस्वीरें एकत्र की हैं और अलग-अलग उम्र में विभिन्न पक्षी प्रजातियों का निर्धारण करने के लिए वर्गीकरण नेटवर्क को प्रशिक्षित करने की योजना बनाई है।
टीमवर्क नेटवर्क को कार्यशील बनाता है
पक्षी देखने वाले एक उत्साही समूह हैं, वे जानते हैं कि किसी पक्षी को उसके एक पंख के आकार से कैसे पहचाना जाए। उनके पास वह ज्ञान है जिसे पाने का हमारा वर्गीकरण नेटवर्क सपना देखता है, तो क्यों न दोनों को एक साथ लाया जाए और एक ऐसा पक्षी-प्रेमी गठबंधन बनाया जाए जिसे दुनिया ने पहले कभी नहीं देखा हो?
वर्तमान में, वर्गीकरण नेटवर्क उपयोगकर्ता को केवल पक्षी प्रजाति नहीं बताता है, यह अन्य अनुमानों के साथ-साथ आत्मविश्वास की डिग्री भी दिखाता है।
उपयोगकर्ता नेटवर्क के अनुमान की पुष्टि कर सकता है या उसे सही कर सकता है, इस प्रकार हमें इसे प्रशिक्षित करने में मदद मिलती है - एक समय में एक पक्षी। 3 महीने तक उपयोगकर्ता प्रतिक्रिया प्रणाली चलाने के बाद, हमने 20 हजार से अधिक छवियां एकत्र की हैं। यह डेटा हमारे लिए अमूल्य है क्योंकि तस्वीरें वास्तविक जीवन की स्थितियों (खराब मौसम की स्थिति, रात में, आदि) में ली गई हैं और विशेषज्ञों द्वारा चिह्नित की गई हैं।
जब आप रसातल में देखते हैं, तो रसातल वापस आपकी ओर चहचहाता है
गौरतलब है कि इस प्रोजेक्ट के दौरान हम खुद ही पक्षी विशेषज्ञ बन गए हैं. पूरे दिन पक्षियों को देखना, जबकि एक आभासी बच्चे को विभिन्न प्रकार की गौरैया के बीच सभी छोटे अंतरों पर अनिवार्य रूप से शिक्षित करना, उसे पक्षी देखने वाले समुदाय का तत्काल प्लैटिनम सदस्य बना देता है।
यदि बाकी सब विफल हो जाता है, तो हमारी सीवी टीम के सदस्य आसानी से खुद को पक्षीविज्ञान में पा सकते हैं।
एक गंभीर नोट पर, पक्षियों की हजारों छवियों को देखते हुए, चाहे वह डेटासेट मार्कअप के लिए हो या यह विश्लेषण करने के लिए कि नेटवर्क सबसे अधिक गलतियाँ कहाँ करता है, हमने इस परियोजना में गहराई से प्रवेश किया है और दूसरे सिरे से न केवल पक्षियों के बारे में ज्ञान प्राप्त किया है बल्कि जटिल छवि पहचान और वर्गीकरण प्रणालियाँ कैसे काम करती हैं, उन्हें सर्वोत्तम तरीके से कैसे लागू किया जाए, बड़े डेटासेट का विश्लेषण कैसे किया जाए और उसके कमजोर बिंदुओं का पता कैसे लगाया जाए, इसकी बेहतर समझ।
नवीनतम कंप्यूटर विज़न प्रौद्योगिकियों के साथ शोध करने और काम करने, वास्तविक समय की ग्राहक प्रतिक्रिया के साथ काम करने और पुराने कोड के साथ काम करते समय हमारे समस्या-समाधान कौशल को निखारने के अवसर के रूप में यह परियोजना हमारे लिए अमूल्य थी।