संगणक दृष्टी प्रकल्प

प्रकल्पाचे GitHub भांडार

परिचय

हे भांडार शरद ऋतूतील 2020 सत्रादरम्यान Colorado School of Mines येथे CSCI437 मध्ये नोंदणी केलेल्या Mehmet आणि Jean यांनी केलेले सर्व कोडिंग प्रकल्प (प्रयोगशाळा) प्रदर्शित करते. या कालावधीत 28 ऑगस्ट 2020 ते 14 डिसेंबर 2020 यांचा समावेश होतो. या प्रयोगशाळांनी Python, OpenCV आणि संगणक दृष्टीच्या मूलभूत संकल्पना शिकण्यासाठी एक सर्वसमावेशक व्यासपीठ उपलब्ध करून दिले.

वर्गाबद्दल

मी शरद ऋतूतील 2020 सत्रादरम्यान Introduction To Computer Vision (CSCI437) हा अभ्यासक्रम घेतला. या काळात Dr. William Hoff आणि Dr. 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 मध्ये Python सह OpenCV वापरण्याच्या मूलभूत बाबींवर लक्ष केंद्रित केले आहे. सहभागींकडून असा Python प्रोग्राम लिहिण्याची अपेक्षा आहे, जो व्हिडिओ फाइल वाचतो, व्हिडिओच्या प्रत्येक फ्रेमवर चौकोन तयार करणारे चार बिंदू प्रक्षेपित करतो आणि प्रत्येक बिंदूचा Z निर्देशांक क्रमाक्रमाने समायोजित करून चौकोन दूर जात असल्याचे अनुकरण करतो. याव्यतिरिक्त, प्रत्येक फ्रेमवर फ्रेम क्रमांक प्रदर्शित करायचा आहे आणि ग्राफिक आच्छादनांसह अंतिम व्हिडिओ मूल्यांकनासाठी अपलोड करायचा आहे.

प्रयोगशाळा 2

प्रयोगशाळा 2 मध्ये प्रतिमा रूपांतरणांचा अभ्यास केला जातो, विशेषतः “XYZ fixed angles” परंपरेचा वापर करून X, Y आणि Z अक्षांभोवती फिरवण्यावर लक्ष केंद्रित केले जाते. विद्यार्थ्यांना फिरवण्याचे मॅट्रिसेस मोजणे, कॅमेऱ्याच्या स्थितींसाठी समजातीय रूपांतरण मॅट्रिसेसची गणना करणे, कॅलिब्रेशन मॅट्रिक्स तयार करणे आणि OpenCV च्या line फंक्शनचा वापर करून परिचित वस्तू तयार करण्यासाठी प्रतिमेवर बिंदू प्रक्षेपित करणे अशी कामे दिली जातात. ही प्रयोगशाळा संगणक दृष्टीमधील कॅमेरा भूमिती आणि रूपांतरण मॅट्रिसेसचे आकलन करण्यावर भर देते.

प्रयोगशाळा 3

प्रयोगशाळा 3 मध्ये टेम्पलेट जुळवणीचा अभ्यास केला जातो. यात normalized cross correlation वापरून चित्रपट फाइलच्या प्रत्येक फ्रेममधून टेम्पलेट उप-प्रतिमेचा मागोवा घेण्याचे काम विद्यार्थ्यांना दिले जाते. या कामामध्ये चित्रपटाच्या पहिल्या प्रतिमेतून वापरकर्त्याला टेम्पलेट निवडण्याची परवानगी देणे, त्यानंतरच्या प्रतिमांमध्ये या टेम्पलेटचा मागोवा घेणे, प्रत्येक प्रतिमेवर टेम्पलेटचे स्थान दर्शविण्यासाठी आयत काढणे आणि ही स्थाने दर्शविणारी आउटपुट चित्रपट फाइल तयार करणे यांचा समावेश आहे. कोणती टेम्पलेट सर्वोत्तम मागोवा घेण्यास अनुमती देते आणि का, हे समजून घेण्यासाठी विद्यार्थ्यांना वेगवेगळ्या टेम्पलेट्ससह प्रयोग करण्यास तसेच जुळण्या योग्यरीत्या ओळखल्या गेल्यावर दिसणाऱ्या सहसंबंध गुणांवर चर्चा करण्यास प्रोत्साहित केले जाते.

प्रयोगशाळा 4

प्रयोगशाळा 4 मध्ये HSV रंग अवकाशाचा वापर करून रंग विभाजनावर लक्ष केंद्रित केले आहे. रंगीत प्रतिमा हाताळण्यासाठी ही पद्धत प्रभावी असल्यामुळे व्याख्यानांमध्ये तिची चर्चा करण्यात आली होती. Python/OpenCV प्रोग्रामचा वापर करून दिलेल्या प्रतिमांमधून थांबा चिन्हाचे पिक्सेल वेगळे करण्यासाठी threshold क्रिया लागू करण्याचे काम विद्यार्थ्यांना दिले जाते. या कामासाठी थांबा चिन्हाचे पिक्सेल सर्वोत्तमरीत्या शोधणारी threshold मूल्ये शोधणे, परिणाम स्वच्छ करण्यासाठी morphological क्रिया करणे आणि विभाजित प्रतिमा Python प्रोग्रामसह तसेच वापरलेल्या threshold आणि morphological क्रियांच्या मापदंडांसह सादर करणे आवश्यक आहे.

प्रयोगशाळा 5

प्रयोगशाळा 5 मध्ये विद्यमान प्रतिमेतील विशिष्ट क्षेत्रात नवीन प्रतिमा पोत अशा प्रकारे समाविष्ट करण्याचे काम आहे की प्रक्षेपण योग्य दिसेल. plane replacement म्हणून ओळखल्या जाणाऱ्या या प्रक्रियेत विद्यार्थ्यांनी विद्यमान प्रतिमेच्या समतलीय क्षेत्रावर नवीन प्रतिमा नकाशित करण्यासाठी projective transform (homography) तंत्रांचा वापर करणे आवश्यक आहे. दृष्टीकोनाची अचूकता कायम ठेवून प्रतिमेतील आशय बदलण्यासाठी homography च्या व्यावहारिक वापरावर ही प्रयोगशाळा भर देते. प्रयोगशाळेच्या सादरीकरणाचा भाग म्हणून विद्यार्थ्यांनी मूळ प्रतिमा, बदललेल्या पोतासह प्रतिमा, संयुक्त प्रतिमा आणि त्यांचा Python प्रोग्राम सादर करणे अपेक्षित आहे.

प्रयोगशाळा 6

प्रयोगशाळा 6 मध्ये प्रतिमेतील पाच विरोधाभासी एककेंद्री वर्तुळांनी (CCCs) बनलेल्या लक्ष्याचा शोध घेणे आणि त्याची स्थिती मोजणे शिकवले जाते. या कामामध्ये OpenCV वापरून CCC लक्ष्ये शोधणे, त्यांना योग्य क्रमाने लावणे, OpenCV च्या solvePnP() फंक्शनचा वापर करून स्थिती मोजणे आणि प्रतिमेवर निर्देशांक अक्ष व स्थिती काढणे यांचा समावेश आहे. लक्ष्य शोध, स्थितीचा अंदाज आणि संगणक दृष्टीमधील दृश्य आउटपुट स्वरूपन यांसारख्या संकल्पनांच्या वापरावर ही प्रयोगशाळा भर देते.

प्रयोगशाळा 7

प्रयोगशाळा 7 मध्ये प्रतिमांमधील SIFT वैशिष्ट्यांचा शोध आणि जुळवणी यांवर केंद्रित आहे. एका प्रतिमेतील SIFT वैशिष्ट्यांची दुसऱ्या प्रतिमेतील योग्य जुळणी ओळखणे आणि या जुळण्यांच्या अचूकतेचे विश्लेषण करणे हे उद्दिष्ट आहे. या प्रयोगशाळेत दिलेला Python कोड आणि डेटासेटमधील प्रतिमा वापरणे, जुळणी शोध अनुकूल करण्यासाठी अल्गोरिदमचे मापदंड समायोजित करणे आणि वैशिष्ट्य जुळवणी प्रक्रियेच्या कामगिरीचे मूल्यमापन करण्यासाठी precision आणि recall मेट्रिक्सची गणना करणे यांचा समावेश आहे. वेगवेगळ्या मापदंड-संचांसाठी विद्यार्थ्यांनी त्यांचा Python प्रोग्राम तसेच गणना केलेली precision आणि recall मूल्ये सादर करणे आवश्यक आहे.

प्रयोगशाळा 8

प्रयोगशाळा 8 मध्ये वैशिष्ट्य जुळवणी आणि affine transformation fitting वापरून प्रशिक्षण प्रतिमेतील वस्तू शोधणे व त्या चौकशी प्रतिमेवर आच्छादित करणे यावर लक्ष केंद्रित केले आहे. या प्रयोगशाळेत वेगवेगळ्या परिस्थितींमध्ये वस्तू शोधणे, चुकीची सकारात्मक उत्तरे कमी करण्यासाठी inlier जुळण्यांची संख्या असलेली threshold समायोजित करणे आणि वस्तू शोध प्रणालीच्या कामगिरीचे मूल्यमापन करण्यासाठी precision, recall आणि accuracy मेट्रिक्सची गणना करणे यांचा समावेश आहे. विद्यार्थ्यांनी दिलेला Python कोड बदलून चालवणे, वेगवेगळ्या परिस्थितींमध्ये प्रणालीच्या कामगिरीचे विश्लेषण करणे आणि त्यांचे निष्कर्ष व बदललेला कोड सादर करणे अपेक्षित आहे.

प्रयोगशाळा 9

प्रयोगशाळा 9 मध्ये प्रशिक्षण प्रतिमेतील वस्तूवर annotation बिंदू ठेवणे आणि त्यानंतरच्या चौकशी प्रतिमांमध्ये हे बिंदू वस्तूवर योग्यरीत्या आपोआप दाखवणे यांचा समावेश आहे. ही प्रयोगशाळा वैशिष्ट्य निष्कर्षण, संदिग्ध जुळण्या दूर करण्यासाठी ratio test वापरून जुळवणी, बाह्य बिंदू दूर करण्यासाठी RANSAC वापरून 2D affine transformation बसवणे आणि प्रशिक्षण प्रतिमेतील annotation बिंदू चौकशी प्रतिमांवर नकाशित करण्यासाठी रूपांतरण लागू करणे यांवर भर देते. खोटी सकारात्मक आणि नकारात्मक उत्तरे यांच्यात संतुलन साधण्यासाठी inlier जुळण्यांची threshold संख्या समायोजित करणे, तसेच प्रतिमांचे योग्य वर्गीकरण करण्यासाठी सर्वोच्च अचूकता मिळवणे, हे महत्त्वाचे काम आहे.

प्रयोगशाळा 10

प्रयोगशाळा 10 मध्ये रेषाखंड शोधण्यासाठी आणि प्रतिमेतील समांतर रेषांचे संच ओळखण्यासाठी Hough transform वापरण्यासाठी समर्पित आहे. टोकबिंदूंनी दर्शविलेले रेषाखंड शोधण्यासाठी OpenCV च्या cv2.HoughLinesP() फंक्शनद्वारे probabilistic Hough Transform वापरला जातो. या प्रयोगशाळेत रेषाखंडांच्या दिशादर्शक सदिशांचे विश्लेषण करून vanishing points ओळखणे देखील समाविष्ट आहे. याचा उद्देश 3D अवकाशातील समांतर रेषा 2D प्रतिमा पटलावर दिसताना त्यांचा अभिमुखता समजून घेणे हा आहे. समांतर रेषाखंड शोधण्यासाठी विद्यार्थ्यांना चाचणी प्रतिमांवर प्रक्रिया करणे, शोध अनुकूल करण्यासाठी मापदंडांसह प्रयोग करणे आणि Python प्रोग्रामसह त्यांचे परिणाम सादर करणे अशी कामे दिली जातात.

नोंदी

  • या स्क्रिप्ट्स/प्रयोगशाळा चालवण्यासाठी तुम्हाला पुढील तृतीय-पक्ष python पॅकेजेस आवश्यक असतील: cv2 आणि numpy.
  • यांपैकी काही प्रयोगशाळांसाठी cv2 ची विशिष्ट आवृत्ती वापरणे आवश्यक असू शकते. दुर्दैवाने, आवश्यकता दस्तऐवजीकृत केलेल्या नव्हत्या, त्यामुळे हे तुम्हाला स्वतः शोधावे लागेल. तुम्हाला हे समजले किंवा तुम्ही अडचणीत असाल, तर कृपया issues form वर त्याची नोंद करा.