کمپیوٹر وژن کے منصوبے
تعارف
یہ ذخیرہ ان تمام کوڈنگ منصوبوں (لیبارٹریز) کو پیش کرتا ہے جن پر Mehmet اور Jean نے CSCI437 میں خزاں 2020 کے سمسٹر کے دوران Colorado School of Mines میں داخل ہونے کی حالت میں کام کیا، جس میں 28 اگست 2020 سے 14 دسمبر 2020 تک کا عرصہ شامل ہے۔ یہ لیبارٹریز Python، OpenCV، اور کمپیوٹر وژن کے بنیادی تصورات سیکھنے کے لیے ایک جامع پلیٹ فارم فراہم کرتی تھیں۔
جماعت کے بارے میں
میں نے خزاں 2020 کے سمسٹر کے دوران کمپیوٹر وژن کا تعارف (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).
کریڈٹس
کچھ Python اسکرپٹس اور/یا کوڈ کے حصے CSCI437 کی جماعت کی جانب سے لیکچر کے دوران، سلائیڈز میں، یا Canvas کے ذریعے فراہم کیے گئے تھے۔ 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 استعمال کرتے ہوئے فلم فائل کے ہر فریم میں ایک ٹیمپلیٹ ذیلی تصویر کو ٹریک کرنے کا کام دیا گیا ہے۔ اس اسائنمنٹ میں صارف کو فلم کی پہلی تصویر سے ایک ٹیمپلیٹ منتخب کرنے کی اجازت دینا، اس ٹیمپلیٹ کو بعد کی تصاویر میں ٹریک کرنا، ہر تصویر پر ٹیمپلیٹ کے مقام کی نشاندہی کے لیے مستطیل بنانا، اور ان مقامات کو دکھانے کے لیے ایک آؤٹ پٹ فلم فائل بنانا شامل ہے۔ طلبہ کو مختلف ٹیمپلیٹس کے ساتھ تجربہ کرنے کی ترغیب دی جاتی ہے تاکہ سمجھ سکیں کہ کون سا ٹیمپلیٹ بہترین ٹریکنگ کی اجازت دیتا ہے اور کیوں، نیز ان correlation اسکورز پر گفتگو کریں جو میچ درست طور پر شناخت ہونے پر مشاہدہ کیے گئے۔
لیبارٹری 4
لیبارٹری 4 HSV رنگوں کی جگہ کا استعمال کرتے ہوئے رنگوں کی تقسیم پر مرکوز ہے، یہ ایک ایسی تکنیک ہے جس پر لیکچرز میں رنگین تصاویر سے نمٹنے کی مؤثریت کے باعث گفتگو کی گئی۔ طلبہ کو Python/OpenCV پروگرام استعمال کرتے ہوئے فراہم کردہ تصاویر سے stop sign کے پکسلز الگ کرنے کے لیے threshold آپریشنز لاگو کرنے کا کام دیا گیا ہے۔ اس اسائنمنٹ میں stop sign کے پکسلز کو بہترین طور پر شناخت کرنے والی threshold اقدار تلاش کرنا، نتیجے کو صاف کرنے کے لیے morphological آپریشنز انجام دینا، اور تقسیم شدہ تصاویر کو Python پروگرام اور استعمال شدہ threshold اور morphological آپریشن کے پیرامیٹرز کے ساتھ جمع کرانا شامل ہے۔
لیبارٹری 5
لیبارٹری 5 میں موجودہ تصویر کے ایک مخصوص حصے میں نئی تصویری texture اس طرح داخل کرنے کا کام شامل ہے کہ پروجیکشن درست دکھائی دے۔ یہ عمل، جسے plane replacement کہا جاتا ہے، طلبہ سے تقاضا کرتا ہے کہ وہ موجودہ تصویر کے کسی مستوی حصے پر نئی تصویر کو نقشہ بند کرنے کے لیے projective transform (homography) تکنیکیں استعمال کریں۔ یہ لیبارٹری نقطۂ نظر کی درستگی برقرار رکھتے ہوئے تصویری مواد میں ترمیم کے لیے homography کے عملی اطلاق پر زور دیتی ہے۔ طلبہ سے توقع کی جاتی ہے کہ وہ اپنی لیبارٹری جمع کرانے کے حصے کے طور پر اصل تصویر، replacement texture والی تصویر، مشترکہ تصویر، اور اپنا Python پروگرام جمع کرائیں۔
لیبارٹری 6
لیبارٹری 6 طلبہ کو ایک تصویر میں پانچ متضاد مرتکز دائروں (CCCs) پر مشتمل ہدف کی پوز معلوم کرنے اور حساب کرنے کی ہدایت دیتی ہے۔ اس کام میں CCC اہداف کو شناخت کرنے کے لیے OpenCV استعمال کرنا، انہیں درست ترتیب دینا، OpenCV کے solvePnP() فنکشن کے ذریعے پوز کا حساب لگانا، اور تصویر پر کوآرڈینیٹ محوروں اور پوز کو بنانا شامل ہے۔ یہ لیبارٹری کمپیوٹر وژن میں ہدف کی شناخت، پوز کے تخمینے، اور بصری آؤٹ پٹ کی فارمیٹنگ جیسے تصورات کے اطلاق پر زور دیتی ہے۔
لیبارٹری 7
لیبارٹری 7 تصاویر کے درمیان SIFT خصوصیات کی شناخت اور میچنگ کے گرد مرکوز ہے۔ مقصد ایک تصویر سے دوسری تصویر تک SIFT خصوصیات کے درست میچز کی شناخت کرنا اور ان میچز کی درستگی کا تجزیہ کرنا ہے۔ اس لیبارٹری میں فراہم کردہ Python کوڈ اور ڈیٹاسیٹ کی تصاویر کا استعمال، میچ کی شناخت کو بہتر بنانے کے لیے الگورتھم کے پیرامیٹرز میں ترمیم، اور خصوصیت کی میچنگ کے عمل کی کارکردگی جانچنے کے لیے precision اور recall میٹرکس کا حساب شامل ہے۔ طلبہ سے تقاضا کیا جاتا ہے کہ وہ اپنا Python پروگرام اور مختلف پیرامیٹر سیٹنگز کے لیے حساب کردہ precision اور recall کی قدریں جمع کرائیں۔
لیبارٹری 8
لیبارٹری 8 خصوصیت کی میچنگ اور affine transformation fitting استعمال کرتے ہوئے آبجیکٹ کی شناخت پر مرکوز ہے، تاکہ تربیتی تصویر سے آبجیکٹس کو شناخت کرکے query تصویر پر اوورلے کیا جا سکے۔ اس لیبارٹری میں مختلف حالات میں آبجیکٹ کی شناخت، false positives کم کرنے کے لیے inlier میچز کی تعداد کی threshold میں ترمیم، اور آبجیکٹ شناختی نظام کی کارکردگی جانچنے کے لیے precision، recall، اور accuracy میٹرکس کا حساب شامل ہے۔ طلبہ سے توقع کی جاتی ہے کہ وہ فراہم کردہ Python کوڈ میں ترمیم کرکے اسے چلائیں، مختلف حالات میں نظام کی کارکردگی کا تجزیہ کریں، اور اپنے نتائج اور ترمیم شدہ کوڈ جمع کرائیں۔
لیبارٹری 9
لیبارٹری 9 میں تربیتی تصویر کے اندر کسی آبجیکٹ پر annotation نقاط رکھنے اور بعد کی query تصاویر میں ان نقاط کو آبجیکٹ پر خودکار طور پر درست مقام پر دکھانے کا کام شامل ہے۔ یہ لیبارٹری خصوصیت کے اخراج، مبہم میچز ختم کرنے کے لیے ratio test کا استعمال کرتے ہوئے میچنگ، outliers ختم کرنے کے لیے RANSAC کا استعمال کرتے ہوئے 2D affine transformation کی fitting، اور تربیتی تصاویر سے query تصاویر تک annotation نقاط کی نقشہ بندی کے لیے transformation لاگو کرنے پر زور دیتی ہے۔ اہم کام inlier میچز کی threshold تعداد کو اس طرح ایڈجسٹ کرنا ہے کہ false positives اور false negatives کے درمیان توازن قائم رہے، جس کا مقصد تصاویر کو درست طور پر درجہ بند کرنے میں زیادہ سے زیادہ accuracy حاصل کرنا ہے۔
لیبارٹری 10
لیبارٹری 10 کسی تصویر میں line segments تلاش کرنے اور متوازی خطوط کے مجموعے شناخت کرنے کے لیے Hough transform کے استعمال کے لیے مختص ہے۔ یہ OpenCV کے cv2.HoughLinesP() فنکشن کے ذریعے probabilistic Hough Transform استعمال کرتی ہے تاکہ ان کے اختتامی نقاط سے ظاہر کیے گئے line segments شناخت کیے جا سکیں۔ اس لیبارٹری میں ان line segments کے direction vectors کا تجزیہ کرکے vanishing points کی شناخت بھی شامل ہے، جس کا مقصد یہ سمجھنا ہے کہ 3D جگہ میں متوازی خطوط 2D تصویری سطح پر کس سمت دکھائی دیتے ہیں۔ طلبہ کو متوازی line segments تلاش کرنے کے لیے test تصاویر پر کارروائی کرنے، شناخت کو بہتر بنانے کے لیے پیرامیٹرز کے ساتھ تجربہ کرنے، اور اپنے نتائج Python پروگرام کے ساتھ جمع کرانے کا کام دیا گیا ہے۔
نوٹس
- ان اسکرپٹس/لیبارٹریز کو چلانے کے لیے آپ کو درج ذیل 3rd party Python پیکیجز درکار ہوں گے: cv2 اور numpy۔
- ان میں سے کچھ لیبارٹریز کے لیے آپ کو cv2 کا کوئی مخصوص ورژن استعمال کرنے کی ضرورت پڑ سکتی ہے۔ افسوس کہ تقاضے دستاویزی شکل میں موجود نہیں تھے، اس لیے آپ کو خود یہ معلوم کرنا ہوگا۔ اگر آپ یہ معلوم کر لیں یا آپ پھنس جائیں، تو براہ کرم اسے issues form پر رپورٹ کریں۔