مباحث ویژه – مقدمه ای بر بینایی کامپیوتر و یادگیری عمیق (ترم بهمن 96)

نسخه های دیگر این سایت V2 | old

برنامه درسی و سرفصل‌ها (ترم زمستان 96 – 97)

درس مباحث ویژه مقطع کارشناسی دانشگاه تربیت دبیر شهید رجایی با موضوع مقدمه ای بر بینایی کامپیوتر و یادگیری عمیق در ترم زمستان سال تحصیلی 96-97 برای دانشجویان مقطع کارشناسی این درس ارائه شد.

در بخش نخست این درس به مباحث مقدماتی پردازش تصویر پرداخته شد و دانشجویان چارچوب OpenCV در زبان برنامه نویسی Python را برای کار با تصویر را فراگرفتند..

بخش دوم این درس به بیان مقدماتی الگوریتم های یادگیری و شبکه های عصبی اختصاص یافت.

در نهایت در بخش آخر مباحث شبکه‌های عصبی عمیق مطرح شده پس از سال 2012 مورد بحث قرار گرفت و  با استفاده از چارچوب یادگیری ماشین و یادگیری عمیق Keras مدل‌های شبکه عصبی عمیق پیاده سازی شد.

در ادامه‌ی این درس، درس مباحث ویژه 2 با موضوع یادگیری عمیق پیشرفته نیز در ترم پاییز 97-98 ارائه شد.

رویداد تاریخ توضیح محتوا
جلسه ۱ سه شنبه، ۱۷ بهمن ۱۳۹۶
۱۳۹۶/۱۱/۱۷

مقدمات درس

Computer vision overview
Course logistics

Introduction slides [pdf]
جلسه ۲ چهارشنبه، ۱۸ بهمن ۱۳۹۶
۱۳۹۶/۱۱/۱۸
مقدمات OpenCV در پایتون
خواندن تصاویر
فضاهای رنگی
نمایش تصاویر
ذخیره کردن تصاویر
نوت‌بوک‌های

01-Reading, writing and displaying images.ipynb
02-Grayscaling.ipynb
03-Color Spaces.ipynb

یادداشت:مقدمات OpenCV، خواندن و نمایش تصاویر، فضاهای رنگی

آدرس repository درس

آموزش نصب OpenCV و شروع

دانلود و نصب آناکوندا برای کار با پایتون

دریافت از git و به روز کردن فایل‌ها

جلسه ۳ سه شنبه، ۲۴ بهمن ۱۳۹۶
۱۳۹۶/۱۱/۲۴
دستکاری تصویر (1)
مقدمه ای بر جبر خطی
ماتریس‌های تبدیل
روش‌های درون یابی
Image manipulations(1) [pdf]
Image manipulations(1) [ppt]
جلسه ۴ چهارشنبه، ۲۵ بهمن ۱۳۹۶
۱۳۹۶/۱۱/۲۵
توابع دستکاری تصویر در OpenCV
کشیدن اشکال هندسی
ماتریس های تبدیل
جابه جایی
چرخش
تغییر اندازه
هرم تصاویر
بریدن و crop تصاویر
[Video]

یادداشت: دستکاری تصویر (1) – ماتریس‌های تبدیل
یادداشت: دستکاری تصویر (2) – دوران، انتقال، مقیاس و درون‌یابی
یادداشت: دستکاری تصویر (3) – مثال‌های عملی در OpenCV

نوت‌بوک‌های

04-Drawing Images.ipynb
05-Translations.ipynb
06-Rotations.ipynb
07-Scaling, re-sizing and interpolations.ipynb
08-Image Pyramids.ipynb
09-Cropping.ipynb

HW1 جمعه – ۴ اسفند ۱۳۹۶ تمرین 1# – مقدمات تمرین سری ۱
جلسه ۵ سه‌شنبه، ۸ اسفند۱۳۹۶
۱۳۹۶/۱۲/۸
دستکاری تصویر (2)
عملیات منطقی و ریاضی در OpenCV
ماسک تصاویر در OpenCV
فیلترها
convolution و Correlation
Moving Average
Sharpening
فیلترها در OpenCV
[Video]
Image manipulations(2) [pdf]
Image manipulations(2) [ppt]

یادداشت:دستکاری تصاویر (۴) – عملیات ریاضی و ترکیب تصاویر رنگی در OpenCV
یادداشت:دستکاری تصاویر (۵) – فیلترها و کرنل‌ها
یادداشت:دستکاری تصاویر (۶) – فیتلرها در Open CV و حذف نویز تصاویر

نوت‌بوک‌های

10-Arithmetic Operations.ipynb
11-Bitwise Operations and Masking.ipynb
12-Convolutions and Blurring.ipynb
13-Sharpening.ipynb

جلسه ۶ چهارشنبه، ۹ اسفند۱۳۹۶
۱۳۹۶/۱۲/۹
تصاویر باینری، حد آستانه و عملیات مورفولوژی
انواع تصاویر
تصاویر دودویی (باینری)
حد آستانه و کاربرد باینری سازی
روش ها – روش oustu
آستانه گذاری در OpenCV
مورفولوژی (Dilation،Erosion Closing و Opening)
عملیات مورفولوژی در OpenCV
[Video]
Binary Images and Morphology [pdf]
Binary Images and Morphology [ppt]

یادداشت:تصاویر دودویی و حد آستانه
یادداشت:عملیات مورفولوژی

نوت‌بوک‌های

14-Thresholding, Binarization & Adaptive Thresholding.ipynb
15-Dilation, Erosion, Opening and Closing.ipynb

جلسه ۷ سه‌شنبه، ۱۵ اسفند۱۳۹۶
۱۳۹۶/۱۲/۱۵
لبه‌یابی
مشتق و گرادیان تصویر
آشکارسازی لبه
Sobel & Canny
لبه‌یابی در OpenCV
تبدیل perspective در OpenCV
استفاده از وبکم در OpenCV
[Video]
Edge Detection [pdf]
Edge Detection [pptx]

یادداشت:آشکارسازی لبه(1)
یادداشت:آشکارسازی لبه(2)
یادداشت:تبدیل Affine و Perspective در OpenCV
یادداشت:استفاده از وبکم در OpenCV

نوت‌بوک‌های

16-EdgeDetection&ImageGradients.ipynb
17-Perspective&AffineTransforms.ipynb
18-UsingWebcam.ipynb

HW2 جمعه – ۴ اسفند ۱۳۹۶ تمرین 2# – تصاویر باینری و مورفولوژی تمرین سری ۲
جلسه ۸ چهارشنبه، ۱۶ اسفند۱۳۹۶
۱۳۹۶/۱۲/۱۶
مقدمه ای بر یادگیری ماشین
Machine Learning چیست؟
یادگیری باناظر (Supervised learning)
یادگیری بدون ناظر (Unsupervised learning)
یادگیری تقویتی (Reinforcement learning)
مراحل یک پروژه یادگیری ماشین
Train Test Split
ارزیابی مدل
Introduction to Machine Learning [pdf]
Introduction to Machine Learning [pptx]

یادداشت:مقدمه ای بر یادگیری ماشین (Machine Learning)
یادداشت:مراحل یک پروژه یادگیری ماشین

HW3 جمعه – ۲۵ اسفند ۱۳۹۶ تمرین ۳# – لبه یابی – تبدیل Prespective و کار با وبکم تمرین سری ۳
جلسه ۹ سه‌شنبه، ۲۲ اسفند۱۳۹۶
۱۳۹۶/۱۲/۲۲
طبقه‌بند نزدیکترین همسایه و k-نزدیکترین همسایه و پیاده سازی در scikit learn

مقدمه ای بر شبکه‌های عصبی(1)
پرسپترون
وزن ها در پرسپترون
بایاس در پرسپترون
تابع فعالبت یا activation function
بردار ویژگی ورودی
چند پرسپترون پشت سر هم (MLP یا multi layer Perceptron)
لایه های در MLP (لایه ورودی، لایه hidden و لایه خروجی)

[Video]
Simple Classifier (KNN) [pdf]
Simple Classifier (KNN)[pptx]Introduction to Neural Networks [pdf]
Introduction to Neural Networks[pptx]

یادداشت:طبقه بند K نزدیکترین همسایه در scikit-learn
یادداشت:مقدمه‌ای بر شبکه‌های عصبی(1)
یادداشت:مقدمه‌ای بر شبکه‌های عصبی(2)

جلسه ۱۰ چهارشنبه، ۲۳ اسفند۱۳۹۶
۱۳۹۶/۱۲/۲۳
مقدمه ای بر شبکه‌های عصبی(2)
تابع هزینه (Cost Functions یا Loss Function)
Gradient Descentand Backpropagation
مشاهده تاثیر تابع فعالیت و تعداد لایه ها و نورون‌ها در طبقه بندی به صورت بصری در سایت playground.tensorflow.org
[Video]
سایت playground.tensorflow.org
HW4 چهارشنبه– ۸ فروردین ۱۳۹۷ تمرین ۴# -طبقه‌بند k-نزدیکترین همسایه – آشنایی با شبکه‌های عصبی در دیتاکمپ)
تمرین سری ۴
جلسه غیر آموزشی سه‌شنبه، ۲۱ فروردین ۱۳۹۷
۱۳۹۷/۱/۲۱
بیان نقاط ضعف و نقاط قوت کلاس و دعوت از رئیس دانشکده
در این جلسه نقاط ضعف و نقاط قوت کلاس توسط دانشجویان مطرح شد و برای بهبود کلاس بحث و گفتگو شد.
در ادامه‌ی این جلسه میزبان دکتر رضا ابراهیم پور ریاست محترم دانشکده مهندسی کامپیوتر دانشگاه تربیت دبیر شهید رجایی بودیم و در مورد اهمیت یادگیری عمیق و یادگیری ماشین در کسب و کار و همچنین تحصیلات تکمیلی بحث شد.
جلسه ۱۱ چهارشنبه، ۲۲ فروردین ۱۳۹۷
۱۳۹۷/۱/۲۲
مقدمه‌ای بر پیاده سازی شبکه‌های عصبی ترتیبی در Keras
استفاده از یک شبکه ترتیبی تمام متصل چندلایه در Keras
تعریف معماری مدل
انتخاب تابع هزینه و بهینه ساز و Compile کردن مدل
آموش مدل و فراخوانی متد fit
ارزیابی مدل روی داده های آزمون
پیش‌بینی داده‌های آموزشی
[Video]

یادداشت:مقدمه‌ای بر پیاده سازی شبکه‌های عصبی ترتیبی در کراس

نوت‌بوک‌


21-a Gentle Introduction to Keras – Simple neural network(mlp).ipynb

HW5 جمعه – ۳۱ فروردین ۱۳۹۷ تمرین ۵# – مقدمات شبکه‌عصبی در Keras
تمرین سری ۵
جلسه ۱۲ سه‌شنبه، ۲۸ فروردین ۱۳۹۷
۱۳۹۷/۱/۲۸
مقدمه‌ای شبکه‌های عصبی عمیق
مروری بر مساله طبقه‌بندی و چالش‌های طبقه‌بندی تصاویر در دنیای واقعی (آشنایی با invariant object recognition)
چرا طبقه‌بند KNN برای تصاویر واقعی مناسب نیستند؟
مقدمه‌ای بر یادگیری عمیق
مروری بر شبکه عصبی سلسله مراتبی پیاده سازی شده در Keras جلسات پیشین
مشکل حفظ کردن داده‌ها و Overfitting یا بیش‌برازش داده‌ها
معرفی Dropout و استفاده در Keras
مقدمه‌ای بر شبکه‌های کانولوشنالی و کاربردهای آن
مقایسه‌ی کارایی مدل‌های کلاسیک در مقابل مدل‌های عمیق کانولوشنالی در بازشناسی اشیاء چالش ImageNet
[Video]
Introduction to Deep Learning & Convolutional Neural Networks [pdf]
Introduction to Deep Learning & Convolutional Neural Networks[pptx]

یادداشت:مشکل بیش برازش داده‌ها و معرفی Dropout
یادداشت:بررسی مقدماتی شبکه های کانولوشنالی

نوت‌بوک‌

22-Dropout.ipynb

جلسه ۱۳ چهارشنبه، ۲۹ فروردین ۱۳۹۷
۱۳۹۷/۱/۲۹
مقدمه ای بر شبکه‌های کانولوشنالی
معرفی و آشنایی با رویکرد آموزش کرنل یا فیلترهای کانولوشنال به جای طراحی فیلتر
مروری بر کانولوشن Same و Valid
مشکلات کانولوشن valid در طراحی شبکه‌های کانولوشنالی و فرمول اندازه خروجی پس از کانولوشن
فرمول محاسبه مقدار padding برای کانولوشن same
معرفی strided convolution
فرمول خروجی کانولوشن با padding و stride مشخص و اندازه فیلتر خاص
کانولوشن روی کانال‌های تصویر (کانولوشن سه بعدی)
چند فیلتر در کانولوشن و خروجی چند کاناله
محاسبه تعداد پارامترها در هر لایه کانولوشن
معرفی واحدهای pooling و ادغام بیشینه
بررسی LeNet
[Video]

Convolutional Neural Networks [pdf]
Convolutional Neural Networks[pptx]

 

quiz1 جمعه – ۳۱ فروردین ۱۳۹۷ کوئیز۱# – مقدمات شبکه‌های کانولوشنالی کوئیز و تمرین تستی 1
جلسه ۱۴ سه‌شنبه، ۴ اردیبهشت ۱۳۹۷
۱۳۹۷/۲/۴
پیاده سازی یک  شبکه‌عصبی کانولوشنالی در Keras برای مجموعه داده ارقام دستنویس فارسی هدی
مروری بر لایه های کانولوشنی
مزیت لایه های کانولوشنالی
پیاده سازی شبکه عصبی کانولوشنالی در کراس و آشنایی با لایه‌های Conv2D و MaxPooling2D
آشنایی با متد Flatten برای لایه ماقبل Dense
بررسی ابعاد activation هر لایه: حساب دستی و آشنایی با متد summary()
[Video]

نوت‌بوک‌

23-ConvolutionalNeuralNetwork-Hoda-Keras.ipynb

جلسه ۱۵ چهارشنبه، ۵ اردیبهشت ۱۳۹۷
۱۳۹۷/۲/۵
تعریف شبکه‌ کانولوشنالی برای مجموعه داده واقعی و کنترل‌نشده‌ی چالش سال 2013 Kaggle برای طبقه بند باینری سگ/گربه

استفاده از پایتون برای جدا کردن تصاویر آموزشی/آزمایشی/ارزیابی
آشنایی با Generator در Keras برای خواندن فایل
آشنایی با کلاس ImageDataGenerator
بررسی Sigmoid و Softmax برای لایه آخر
نحوه حساب دستی steps_per_epoch
بررسی دلیل Over-fitting روی داده ها

[Video]

یادداشت:آموزش یک شبکه عصبی کانولوشنالی از ابتدا در Kears

نوت‌بوک‌

24-CNN-cat_Vs_dog.ipynb

HW6 جمعه – ۱۴ اردیبهشت ۱۳۹۷  تمرین ۶# – تعریف وآموزش طبقه بند دو و سه کلاسه – استفاده از GPU Server آنلاین یا Google Colab
تمرین سری ۶
جلسه ۱۶ چهارشنبه، ۱۱ اردیبهشت ۱۳۹۷
۱۳۹۷/۲/۱۱
بررسی معماری‌های حائز رتبه در طبقه بندی تصاویر
در ابتدا نگاهی گذرا به شواهد زیستی سلسله مراتبی مغز پرداخته شد و سپس نخستین شبکه کانولوشنالی یان‌لیکان معرفی شد.
در ادامه معماری های معروف حائز رتبه در بازشناسی اشیاء و ایده های آن ها مورد بررسی قرار گرفت.
[Video]

Case Studies [pdf]
Case Studies [pptx]

یادداشت:معرفی تعدادی از معماری‌های شبکه های کانولوشنالی معروف

AlexNet, VGGNet, GoogLeNet, ResNet

جلسه ۱۷ سه‌شنبه، ۱۸ اردیبهشت ۱۳۹۷
۱۳۹۷/۲/۱۸
Data Augmentation
در این جلسه به راه‌کارهای افزایش دادگان به عنوان روشی برای جلوگیری از بیش‌برازش یا overfitting اشاره شد.
همچنین استفاده از Data Augmentation در چارچوب Keras مورد بررسی قرار گرفت.
 

Data Augmentation &Transfer Learning [pdf]
Data Augmentation &Transfer Learning[pptx]

نوت‌بوک‌

25-data_augmentation.ipynb

جلسه ۱۸ چهارشنبه، ۱۹ اردیبهشت ۱۳۹۷
۱۳۹۷/۲/۱۹
Transfer Learning

در ابتدا و قبل از شروع مبحث Transfer Learning لود کردن شبکه هایی که قبلا درKeras آموزش داده ایم را بررسی کردیم. در ادامه در این جلسه مبانی Transfer Learning برای مجموعه داده های کوچکتر بر روی اوزان شبکه ی از قبل آموزش دیده شده بیان شد.

همچنین مبانی استفاده از Transfer Learning در Keras بیان شد.

Data Augmentation &Transfer Learning [pdf]
Data Augmentation &Transfer Learning[pptx]

یادداشت:نگاهی به فرآیند بینایی در مغز
یادداشت:Transfer Learning

نوت‌بوک‌

26-Load_trained_model_in_keras.ipynb

28-Transfer_learning_feature_extraction.ipynb

جلسه ۱۹ چهارشنبه، ۲۵ اردیبهشت ۱۳۹۷
۱۳۹۷/۲/۲۵

Transfer Learning(2)

در این جلسه مدل pre-trained با معماری VGG16 روی داده های Imagenet در Keras به عنوان مثال لود شد و یک تصویر را با اوزان اصلی 1000 کلاسه طبقه بندی کردیم.در ادامه مبحث Transfer learning جلسه قبل را ادامه دادیم.دو رویکرد اصلی در این مبحث مورد بررسی قرار گرفت.

رویکرد نسخت استفاده از لایه های کانولوشنالی از قبل آموزش داده شده به عنوان یک Feature extraction برای مسائل جدید بود. این رویکرد به صورت ذخیره سازی activation ها و بدون ذخیره سازی در فریم ورک Keras پیاده سازی شد و به مزایا و معایت هر کدام از دو روش پرداخته شده.
در ادامه Fine-tune کردن یک شبکه پس از آموزش لایه های جدید اضافه شده به شبکه از قبل آموزش داده شده و ملاحظات آن پراخته شد.

نوت‌بوک‌

27-using-a-pretrained-convnet.ipynb

28-Transfer_learning_feature_extraction.ipynb

29-Transfer_learning_Fine_tuning.ipynb

جلسه ۲۰ سه‌شنبه، ۲۶ اردیبهشت ۱۳۹۷
۱۳۹۷/۲/۲۶
Face Verification & Identification(1)
در این جلسه با مساله one-shot learning آشنا شدیم.در ادامه با رویکرد شبکه های Siamese برای تطبیق چهره مورد بررسی قرار گرفت.برای آموزش شبکه برای این منظور تابع خطا یا loss function ارائه شده در مقاله FaceNet به نام Triplet loss مورد بررسی قرار گرفت.
Face [pdf]
Face[pptx]
HW7 جمعه – ۴ خرداد ۱۳۹۷ تمرین ۷# – بازشناسی اشیاء با وبکم
تمرین سری ۷
dataset1 جمعه – ۴ خرداد ۱۳۹۷ گام 1 جمع آوری مجموعه داده
گام 1 – جمع آوری مجموعه داده
جلسه ۲۱ سه‌شنبه، ۱ خرداد ۱۳۹۷
۱۳۹۷/۳/۱

Face Verification & Identification(2)

مرور مباحث جلسه قبل
Center Loss
پیاده سازی تطبیق و شناسایی چهره در Keras
A-softmax loss

Face [pdf]
Face[pptx]

نوت‌بوک‌

30-FaceRecognition.ipynb

مقاله

A Discriminative Feature Learning Approach
for Deep Face Recognition[pdf]
SphereFace: Deep Hypersphere Embedding for Face Recognition[pdf]

 

جلسه ۲۲ چهارشنبه، ۲ خرداد ۱۳۹۷
۱۳۹۷/۳/۲
Face Detection
مبحث face detection
بررسی اجمالی haar-cascade
بررسی چالش Wider
بررسی MTCNN
تکمیل سلسله مراتب یک پروژه کامل شناسایی چهره

نوت‌بوک‌ و سورس کد

31-Face&EyeDetection.ipynb

MTCNN Detection sample code

مقاله و لینک چالش

WIDER Face چالش

Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks (MTCNN)[pdf]

لینکهای درس:


با تشکر
علیرضا اخوان پور