कंप्यूटर विज़न प्रोजेक्ट्स
के बारे में
यह रेपो सभी कोडिंग प्रोजेक्ट्स (लैब) Mehmet और Jean द्वारा किए गए को दिखाता है जो उन्होंने CSCI437 में फॉल 2020 सेमेस्टर के दौरान Colorado School of Mines में दाखिला लेते समय किया, अवधि August 28, 2020 से December 14, 2020 तक को कवर करता है। ये लैब्स, जो Python, OpenCV, और बुनियादी कंप्यूटर विज़न अवधारणाओं को सीखने के लिए एक व्यापक मंच प्रदान करती हैं।
क्लास के बारे में
मैंने फॉल 2020 सेमेस्टर के दौरान Introduction To Computer Vision (CSCI437) लिया। इस दौरान, डॉ. William Hoff और डॉ. Tom Williams ने क्लास पढ़ाई। CSCI437। यहाँ CSCI437 का आधिकारिक क्लास विवरण है:
(I) Computer vision is the process of using computers to acquire images, transform images, and extract symbolic descriptions from images. This course provides an introduction to this field, covering topics in image formation, feature extraction, location estimation, and object recognition. Design ability and hands-on projects will be emphasized, using popular software tools. The course will be of interest both to those who want to learn more about the subject and to those who just want to use computer imaging techniques. Must be Senior level standing. 3 hours lecture; 3 semester hours. Prerequisite: (MATH201 or MATH334 or EENG311),and,MATH332,and,(CSCI200 or CSCI261).
श्रेय
CSCI437 क्लास द्वारा लेक्चर, स्लाइड्स, या Canvas के माध्यम से प्रदान किए गए Python स्क्रिप्ट्स और/या कोड के हिस्से हैं। CSCI437 क्लास Colorado School of Mines में प्रदान की जाती है। ये लैब्स निम्नलिखित साझेदारों के साथ किए गए:
- Jean Duong
- Mehmet Yilmaz
लैब विवरण
लैब 1
लैब 1 OpenCV को Python के साथ उपयोग करने की बुनियादी बातों पर केंद्रित है। प्रतिभागियों से अपेक्षा की जाती है कि वे एक Python प्रोग्राम लिखें जो एक वीडियो फ़ाइल पढ़े, वीडियो के प्रत्येक फ्रेम पर एक वर्ग बनाते हुए चार बिंदुओं को प्रोजेक्ट करे, और प्रत्येक बिंदु के Z निर्देशांक को क्रमिक रूप से समायोजित करके वर्ग को दूरी में पीछे हटता हुआ सिमुलेट करे। अतिरिक्त रूप से, फ्रेम संख्या प्रत्येक फ्रेम पर प्रदर्शित की जानी चाहिए, और ग्राफिक ओवरले के साथ अंतिम वीडियो को मूल्यांकन के लिए अपलोड किया जाना चाहिए।
लैब 2
लैब 2 इमेज ट्रांसफ़ॉर्मेशन से संबंधित है, विशेष रूप से “XYZ fixed angles” सम्मेलन का उपयोग करके X, Y, और Z अक्षों के चारों ओर घूर्णन पर केंद्रित है। छात्रों को घूर्णन मैट्रिक्स की गणना, कैमरा पोज़ के लिए होमोजीनियस ट्रांसफ़ॉर्मेशन मैट्रिक्स की गणना, कैलिब्रेशन मैट्रिक्स बनाना, और OpenCV की line फ़ंक्शन का उपयोग करके बिंदुओं को इमेज पर प्रोजेक्ट करके एक परिचित वस्तु बनाना कार्य सौंपा गया है। यह लैब कंप्यूटर विज़न में कैमरा ज्योमेट्री और ट्रांसफ़ॉर्मेशन मैट्रिक्स की समझ पर ज़ोर देती है।
लैब 3
लैब 3 टेम्प्लेट मैचिंग के बारे में है, जहाँ छात्रों को सामान्यीकृत क्रॉस कोरिलेशन का उपयोग करके मूवी फ़ाइल के प्रत्येक फ्रेम में एक टेम्प्लेट उप-इमेज को ट्रैक करने का कार्य दिया गया है। असाइनमेंट में उपयोगकर्ता को मूवी की पहली इमेज से एक टेम्प्लेट चुनने की अनुमति देना, इस टेम्प्लेट को बाद की इमेजों में ट्रैक करना, प्रत्येक इमेज पर टेम्प्लेट के स्थान को दर्शाने के लिए आयतें बनाना, और इन स्थानों को दिखाने के लिए एक आउटपुट मूवी फ़ाइल बनाना शामिल है। छात्रों को विभिन्न टेम्प्लेट के साथ प्रयोग करने के लिए प्रोत्साहित किया जाता है ताकि समझ सकें कि कौन सा सबसे अच्छा ट्रैकिंग प्रदान करता है और क्यों, और जब मैच सही ढंग से पहचाने जाते हैं तो देखे गए कोरिलेशन स्कोर पर चर्चा करें।
लैब 4
लैब 4 HSV कलर स्पेस का उपयोग करके रंग विभाजन पर केंद्रित है, एक तकनीक जो लेक्चर में इसके रंग इमेजों को संभालने की प्रभावशीलता के कारण चर्चा की गई थी। छात्रों को एक Python/OpenCV प्रोग्राम का उपयोग करके प्रदान की गई इमेजों से स्टॉप साइन पिक्सेल को विभाजित करने के लिए थ्रेशोल्ड ऑपरेशन्स लागू करने का कार्य दिया गया है। असाइनमेंट में सबसे अच्छे ढंग से स्टॉप साइन पिक्सेल का पता लगाने वाले थ्रेशोल्ड मान खोजने, परिणाम को साफ़ करने के लिए मोर्फ़ोलॉजिकल ऑपरेशन्स करने, और विभाजित इमेजों को Python प्रोग्राम और उपयोग किए गए थ्रेशोल्ड और मोर्फ़ोलॉजिकल ऑपरेशन पैरामीटरों के साथ सबमिट करने की आवश्यकता है।
लैब 5
लैब 5 में एक नई इमेज टेक्सचर को मौजूदा इमेज के एक विशिष्ट क्षेत्र में इस तरह डालने का कार्य शामिल है कि प्रोजेक्शन सही दिखे। इस प्रक्रिया को प्लेन रिप्लेसमेंट कहा जाता है, जिसके लिए छात्रों को प्रोजेक्टिव ट्रांसफ़ॉर्म (होमोग्राफी) तकनीकों का उपयोग करके नई इमेज को मौजूदा इमेज के समतल क्षेत्र पर मैप करना आवश्यक है। यह लैब होमोग्राफी के व्यावहारिक उपयोग पर ज़ोर देती है ताकि इमेज सामग्री को बदलते हुए परिप्रेक्ष्य की शुद्धता बनी रहे। छात्रों से अपेक्षा की जाती है कि वे मूल इमेज, प्रतिस्थापन टेक्सचर वाली इमेज, संयुक्त इमेज, और अपना Python प्रोग्राम लैब सबमिशन के हिस्से के रूप में सबमिट करें।
लैब 6
लैब 6 छात्रों को एक इमेज में पाँच विरोधी केंद्रित वृत्तों (CCCs) से बने लक्ष्य का पता लगाने और उसका पोज़ गणना करने का निर्देश देता है। कार्य में OpenCV का उपयोग करके CCC लक्ष्य का पता लगाना, उन्हें सही क्रम में व्यवस्थित करना, OpenCV की solvePnP() फ़ंक्शन से पोज़ गणना करना, और इमेज पर कोऑर्डिनेट एक्सिस और पोज़ ड्रॉ करना शामिल है। यह लैब लक्ष्य पहचान, पोज़ अनुमान, और कंप्यूटर विज़न में विज़ुअल आउटपुट फ़ॉर्मेटिंग जैसी अवधारणाओं के अनुप्रयोग पर ज़ोर देती है।
लैब 7
लैब 7 इमेजों के बीच SIFT फीचर की पहचान और मिलान पर केंद्रित है। उद्देश्य एक इमेज से दूसरी इमेज तक SIFT फीचर के सही मिलान की पहचान करना और इन मिलानों की सटीकता का विश्लेषण करना है। लैब में दिए गए Python कोड और डेटासेट की इमेजों का उपयोग, एल्गोरिदम पैरामीटर को समायोजित करके मिलान पहचान को अनुकूलित करना, और फीचर मिलान प्रक्रिया के प्रदर्शन का मूल्यांकन करने के लिए प्रिसीजन और रिकॉल मीट्रिक की गणना शामिल है। छात्रों को अपना Python प्रोग्राम और विभिन्न पैरामीटर सेटिंग्स के लिए गणना किए गए प्रिसीजन और रिकॉल मान सबमिट करने की आवश्यकता है।
लैब 8
लैब 8 फीचर मिलान और अफाइन ट्रांसफ़ॉर्मेशन फिटिंग का उपयोग करके ऑब्जेक्ट डिटेक्शन पर केंद्रित है, जिससे प्रशिक्षण इमेज से ऑब्जेक्ट को क्वेरी इमेज पर डिटेक्ट और ओवरले किया जाता है। लैब में विभिन्न परिदृश्यों में ऑब्जेक्ट का पता लगाना, फॉल्स पॉज़िटिव को कम करने के लिए इनलायर मिलान थ्रेशोल्ड की संख्या समायोजित करना, और ऑब्जेक्ट डिटेक्शन सिस्टम के प्रदर्शन का मूल्यांकन करने के लिए प्रिसीजन, रिकॉल, और एक्यूरेसी मीट्रिक की गणना शामिल है। छात्रों से अपेक्षा की जाती है कि वे प्रदान किए गए Python कोड को संशोधित और चलाएँ, विभिन्न स्थितियों में सिस्टम के प्रदर्शन का विश्लेषण करें, और अपने निष्कर्ष और संशोधित कोड सबमिट करें।
लैब 9
लैब 9 प्रशिक्षण इमेज में एक ऑब्जेक्ट पर एनोटेशन पॉइंट्स रखने और बाद की क्वेरी इमेजों में उस ऑब्जेक्ट पर उन पॉइंट्स को स्वचालित रूप से सही दिखाने में शामिल है। यह लैब फीचर एक्सट्रैक्शन, अस्पष्ट मिलानों को हटाने के लिए रेशियो टेस्ट का उपयोग करके मिलान, आउट्लायर को हटाने के लिए RANSAC का उपयोग करके 2D अफाइन ट्रांसफ़ॉर्मेशन फिट करने, और प्रशिक्षण से क्वेरी इमेजों में एनोटेशन पॉइंट्स को मैप करने के लिए ट्रांसफ़ॉर्मेशन लागू करने पर ज़ोर देती है। महत्वपूर्ण कार्य इनलायर मिलान की थ्रेशोल्ड संख्या को समायोजित करके फॉल्स पॉज़िटिव और नेगेटिव के बीच संतुलन बनाना है, जिससे इमेजों को सही वर्गीकृत करने में सबसे अधिक सटीकता प्राप्त हो।
लैब 10
लैब 10 Hough ट्रांसफ़ॉर्म का उपयोग करके इमेज में लाइन सेगमेंट खोजने और समानांतर लाइनों के सेट की पहचान करने के लिए समर्पित है। यह OpenCV की cv2.HoughLinesP() फ़ंक्शन के माध्यम से प्रॉबेबिलिस्टिक Hough ट्रांसफ़ॉर्म का उपयोग करके उनके एंडपॉइंट्स द्वारा प्रतिनिधित्व किए गए लाइन सेगमेंट का पता लगाता है। लैब में इन लाइन सेगमेंट के दिशा वेक्टर का विश्लेषण करके वैनिशिंग पॉइंट्स की पहचान भी शामिल है, जिसका उद्देश्य 2D इमेज प्लेन में दिखाई देने वाले 3D स्पेस में समानांतर लाइनों की अभिविन्यास को समझना है। छात्रों को टेस्ट इमेजों को प्रोसेस करके समानांतर लाइन सेगमेंट खोजने, पैरामीटर के साथ प्रयोग करके पहचान को अनुकूलित करने, और अपने परिणामों को Python प्रोग्राम के साथ सबमिट करने का कार्य दिया गया है।
नोट्स
- इन स्क्रिप्ट्स/लैब्स को चलाने के लिए आपको निम्नलिखित तृतीय पक्ष python पैकेजों की आवश्यकता होगी: cv2 & numpy.
- इनमें से कुछ लैब्स को cv2 के एक विशिष्ट संस्करण का उपयोग करने की आवश्यकता हो सकती है। दुर्भाग्यवश, आवश्यकताएँ दस्तावेज़ित नहीं थीं, इसलिए आपको इसे स्वयं पता करना होगा। यदि आप इसे पता लगा लेते हैं या फँस जाते हैं, तो कृपया इसे issues फ़ॉर्म पर रिपोर्ट करें।