इस लेख में, मैं सड़क पर संभावित खतरों का पता लगाने और टक्करों को रोकने के लिए एक उन्नत कंप्यूटर दृष्टि एल्गोरिदम के साथ साइकिल चालकों के लिए एक स्मार्ट कैमरा विकसित करने का अपना अनुभव साझा करना चाहता हूं। मैंने नीचे स्क्रैच से एकत्रित प्रोटोटाइप और वीडियो डेटा की पूरी प्रक्रिया का संक्षेप में वर्णन किया है। यह एंबेडेड और मशीन लर्निंग इंजीनियरों दोनों के लिए दिलचस्प हो सकता है। आरंभ करने से पहले थोड़ा स्पॉइलर: एकत्रित डेटासेट बाद में ओपन-सोर्स था।
मैं 30 वर्षों के अनुभव के साथ एक उत्साही साइकिल चालक हूं, उनमें से 20 सार्वजनिक सड़कों पर हैं। एक बार मैं सड़क पर एक यातायात दुर्घटना में फंस गया: एक कार ने मेरी बाइक को साइड से कुचल दिया। सौभाग्य से, मैं हल्की चोट और मोच से बच गया। इसलिए, मैं सार्वजनिक सड़कों पर साइकिल चलाने वालों की सुरक्षा समस्याओं को विशेष रूप से समझता हूं।
समस्या के समाधान में से एक घटनाओं को कैप्चर करने के लिए बाइक कैमरों का उपयोग करना है। सड़क पर साइकिल चलाना, जैसा कि हम जानते हैं, सुरक्षित हो जाता है जब एक कैमरा आपके दृष्टिकोण को कैप्चर करता है। ड्राइवर के साथ विवाद में, फ़ुटेज होना एक अतिरिक्त सुरक्षात्मक परत के रूप में काम कर सकता है। सबूत के बिना, एक अनैतिक चालक जिम्मेदारी से इनकार कर सकता है, लेकिन साइकिल चालकों के लिए एक कैमरा ऐसी स्थिति में जीवन रक्षक के रूप में काम कर सकता है। यूके में, यहां तक कि नेक्स्टबेस नाम की एक वेबसाइट भी है जो पुलिस को एक्शन कैमरा फुटेज जमा करने की सुविधा देती है, प्रक्रिया को सुव्यवस्थित करती है और जटिलताओं को कम करती है।
दूसरे शब्दों में, आप दुर्घटना को कैमरे में कैद कर सकते हैं, लेकिन आपको यह स्वीकार करना होगा कि खतरनाक स्थिति से बचना हमेशा बेहतर होता है। जब मैंने परियोजना शुरू की तो सड़कों पर खतरनाक स्थितियों को रोकने के लिए कोई सक्रिय समाधान नहीं था। इसलिए मैंने कैमरे के साथ अपनी स्मार्ट साइकिल बैकलाइट बनाने का फैसला किया। परियोजना का मिशन साइकिल चालकों के बीच मृत्यु और चोटों को कम करना था।
मूल रूप से, डिवाइस को एक उन्नत कंप्यूटर दृष्टि एल्गोरिदम के साथ सेट करने की योजना बनाई गई थी, जिसे अक्सर मीडिया में "कृत्रिम बुद्धि" कहा जाता है, जो साइकिल चालकों के लिए सड़क पर संभावित खतरों का पता लगा सकता है। मुझे सरल शब्दों में अवधारणा की व्याख्या करने दें: यदि सॉफ़्टवेयर खतरे का पता लगाता है, तो डिवाइस चालकों का ध्यान आकर्षित करने के लिए एक चमकती रोशनी का उत्सर्जन करता है। इसके अतिरिक्त, सुरक्षा प्रणाली टक्कर से पहले पीछे चल रहे वाहन को तेज़ आवाज़ देती है, जिससे उसे रोकने में मदद मिलती है।
मेरे ऑब्जेक्ट डिटेक्शन न्यूरल नेटवर्क (कंप्यूटर विज़न एल्गोरिथम का हिस्सा, धारणा के लिए उपयोग किया जाता है) को प्रशिक्षित करने के लिए, मुझे रियर-व्यू कैमरों द्वारा कैप्चर की गई सार्वजनिक सड़कों से विभिन्न परिदृश्यों का एक बड़ा डेटासेट खोजने की आवश्यकता थी। दुर्भाग्य से, ऐसे ओपन-सोर्स डेटासेट वेब पर उपलब्ध नहीं थे जब मैंने शुरुआत की थी।
ड्राइविंग व्यवहार का संपूर्ण अध्ययन परिवहन इंजीनियरिंग में बेहद उपयोगी है, जो सांख्यिकीय विश्लेषण के लिए डेटा संग्रह, ड्राइविंग मॉडल की पहचान और मॉडलिंग मापदंडों के अनुमान जैसे विभिन्न उद्देश्यों की पूर्ति करता है। डेटा और मॉडल कई क्षेत्रों में लागू किए जा सकते हैं, जिनमें सड़क सुरक्षा विश्लेषण, ट्रैफ़िक सिमुलेशन के लिए सूक्ष्म मॉडल, पूर्वानुमान और नियंत्रण, और उन्नत ड्राइविंग सहायता प्रणालियों के लिए नियंत्रण तर्क शामिल हैं।
आगे बढ़ते हुए, यह कहा जाना चाहिए कि इस परियोजना पर काम करते हुए मैंने 2021 में पहले एमवीपी उपयोगकर्ताओं के रियर-व्यू कैमरों द्वारा कैप्चर किए गए यूक्रेनी सार्वजनिक सड़कों से डेटासेट बनाया है।\
सार्वजनिक डोमेन में ऐसे डेटासेट होने के सार्वजनिक और सामाजिक महत्व को पूरी तरह से समझते हुए, मैंने अपने काम के परिणाम यहां अपलोड किए हैं।
दुर्घटनाओं की भविष्यवाणी करने वाले तंत्रिका नेटवर्क को सिखाने के लिए मुझे बहुत सारा डेटा इकट्ठा करना पड़ा। इस मामले में, मुझे अपने पहले बीटा परीक्षकों को उनकी सवारी रिकॉर्ड करने के लिए देने के लिए कैमरा प्रोटोटाइप विकसित करने की आवश्यकता थी। सौभाग्य से, मेरे साइक्लिंग समुदाय नेटवर्क में बहुत सारे सुरक्षा सड़क कार्यकर्ता शामिल हैं। केवल एक चीज बची थी कि कुछ उपकरणों को इकट्ठा करके उन्हें मेरे पहले उपयोगकर्ताओं को सौंप दिया जाए।
मुझे विकासशील प्रक्रिया का संक्षेप में वर्णन करने दें और नीचे विशिष्ट तकनीकी समाधान चुनने के तर्क की व्याख्या करें।
हार्डवेयर कॉन्फ़िगरेशन: केस 3डी-प्रिंटेड था। Raspberry Pi 3B+ कंप्यूटर मॉड्यूल को प्लेटफॉर्म के रूप में चुना गया था, और केस को कॉम्पैक्ट और हल्का रखने के लिए कस्टम पीसीबी बनाए गए थे।
मैंने कैमरे के लिए एक मानक रास्पबेरी पाई IMX219 सेंसर का इस्तेमाल किया, लेकिन मैंने 120 डिग्री लेंस लगाया। सड़क पर बेहतर दृश्यता के लिए उच्च-शक्ति वाली एलईडी रोशनी और एक लाल रंग का लेंस (3डी-मुद्रित भी) जोड़ा गया था।
मैंने डिवाइस पर न्यूरल नेटवर्क चलाने के लिए Google कोरल एज टीपीयू (फोटो शामिल), एक कम लागत और शक्तिशाली 4 टीओपी तंत्रिका त्वरक का उपयोग किया। TPU USB के माध्यम से जुड़ा हुआ था। \
इन सभी इलेक्ट्रॉनिक्स ने अधिकतम लोड (वीडियो रिकॉर्डिंग, रीयल-टाइम न्यूरल नेटवर्क ऑपरेशन और एलईडी फ्लैशिंग) पर 7-8W की खपत की। 4-5 घंटे के संचालन को सुनिश्चित करने के लिए एक 8Ah ली-आयन बैटरी (आवरण के अंदर की तस्वीरें शामिल हैं) का उपयोग किया गया था।
ओएस के लिए, मैंने मानक रास्पियन का उपयोग किया क्योंकि यह बेहतर समर्थित है और मुझे आवश्यक सभी ड्राइवरों को बिना किसी समस्या के आसानी से स्थापित किया गया था। ओएस बूट करने के बाद मैंने जो मुख्य कोड लिखने का फैसला किया वह सी ++ में था।
मैं इसके साथ शुरू करने की अनुशंसा नहीं करता - प्रयोग उद्देश्यों के लिए, मुझे विश्वास है कि पाइथन शुरुआती लोगों के लिए बेहतर विकल्प हो सकता है। हालाँकि, यदि आप अधिकतम हार्डवेयर क्षमताओं के साथ रास्पबेरी पाई पर सभी सीमित संसाधनों को प्रभावी ढंग से और सटीक रूप से नियंत्रित करना चाहते हैं, तो यह C/C++ में लिखने लायक है।
इस परियोजना में मेरे द्वारा किए गए सबसे दिलचस्प समाधानों में से एक ओटीए (ओवर-द-एयर अपडेट) तंत्र और उपकरणों से वीडियो रिकॉर्डिंग एकत्र करने का तंत्र है।
यह प्रक्रिया कुछ इस तरह दिखाई देती थी: जब कोई उपयोगकर्ता सवारी पूरी करके घर आता है, तो वे एक यूएसबी वाईफाई एडेप्टर डालते हैं, जो घर के वाई-फाई से जुड़ जाता है, और डिवाइस सिंक्रोनाइज़ेशन शुरू कर देता है।
सभी वीडियो Google ड्राइव के माध्यम से सिंक्रनाइज़ किए गए थे - मैंने प्रत्येक डिवाइस के लिए एक अलग Google खाता बनाया था। मेरे मामले में Google ड्राइव के बहुत सारे फायदे हैं: मैं Google ड्राइव वेब इंटरफ़ेस के माध्यम से तुरंत वीडियो देखने में सक्षम था, नई फ़ाइलों को मैन्युअल रूप से हटाना या जोड़ना आसान है, और, अंतिम लेकिन कम से कम, यह मेरे प्रयोगों के लिए मुफ़्त था ( प्रत्येक खाते के लिए 20 जीबी तक)। ( Google , कृपया, बुरा मत बनो, मेरे नवजात स्टार्टअप में केवल चार एमवीपी थे)।
H.264 वीडियो एन्कोडिंग का उपयोग करने से क्षमता समाप्त हुए बिना एक Google डिस्क पर सैकड़ों वीडियो रखने में सहायता मिलती है.
मुझे ओटीए प्रक्रिया का वर्णन करने दें: एक नया फर्मवेयर संकलित करने के बाद, मैं इसे Google ड्राइव पर अपलोड करता हूं। अगली बार Google ड्राइव के साथ सिंक्रनाइज़ करने के दौरान, डिवाइस नया फ़र्मवेयर संस्करण डाउनलोड करता है और पुराने फ़र्मवेयर को बदल देता है।
मैंने इसके लिए एक साधारण gdrive उपयोगिता का उपयोग किया। यहाँ वह कोड है जिसका उपयोग मैं एक नई फ़र्मवेयर फ़ाइल अपलोड करने के लिए करता हूँ:
gdrive upload -p “gdrive folder id” “file”
नीचे मैं डिवाइस पर नया फर्मवेयर लोड करने के लिए कोड की एक पंक्ति देता हूं:
gdrive update “id” “file”
फ़र्मवेयर संस्करण की जाँच करने के बाद, वीडियो सिंक्रनाइज़ेशन होता है और सभी नई रिकॉर्डिंग Google ड्राइव पर अपलोड हो जाती हैं।
डिवाइस से डिस्क पर वीडियो इस तरह डाउनलोड होते हैं:
gdrive sync upload “local folder” “gdrive folder id”
दिन में एक बार, मैंने अपने स्थानीय फ़ोल्डरों के साथ सभी Google ड्राइव को सिंक्रनाइज़ करने और सभी नए वीडियो डाउनलोड करने के लिए अपने सर्वर पर एक स्क्रिप्ट चलाई।
gdrive sync download “gdrive folder id” “local folder”
इस प्रकार, कई महीनों के काम के बाद, मेरे उपकरणों ने लेबलिंग के लिए तैयार 200+ वीडियो एकत्र किए हैं।
वीडियो एकत्र करने के बाद, मैंने इसे संसाधित किया, इसे फ़िल्टर किया और डेटासेट बनाया। फिर मैंने हस्तचालित लेबलिंग के लिए एक छोटी टीम इकट्ठी की। टीम में 4 लोग शामिल थे जिन्होंने हर एक फोटो को लेबल किया।
आखिरकार, जैसा कि पहले उल्लेख किया गया था, मैंने डेटासेट को स्रोत खोलने के लिए दिया था। आप इसे लिंक के माध्यम से पा सकते हैं: GitHub लिंक।
मेरा मानना है कि खुले स्रोत वाले डेटासेट अनुसंधान समुदाय के लिए एक मूल्यवान संसाधन हैं, और वे सड़क सुरक्षा के क्षेत्र में नए एल्गोरिदम और मॉडल के विकास में बहुत योगदान दे सकते हैं।