CBIR:Content Base Image Retrival

بازیابی تصویر محتوا محور

CBIR:Content Base Image Retrival

بازیابی تصویر محتوا محور

بررسی کتاب :یادگیری ماشین برای OpenCV4

Machine Learning for OpenCV 4

در این کتاب برروی الگوریتمهای هوشمند برای کاربرد در پردازش تصاویر با استفاده از openCV4 ,paython ,scikit بحث شده است.

نویسندگان :

Adita sharmaآدیتیا شارما یک مهندس ارشد در روبرت بوش است که در زمینه حل مشکلات واقعی مشکلات بینایی ماشین کار می کند.در رابرت بوش او مقام اول در هوش مصنوعی در سال 2019 کسب کرد.او مقالات زیادی در مورد یادگیری ماشین ویادگیری عمیق نوشته است.

Vishwesh Ravi Shrimali: فارغ التحصیل از BITS Pilani ، در رشته مهندسی مکانیک در سال 2018 می باشد. از آن زمان ، او با BigVision LLC روی یادگیری عمیق و بینایی رایانه ای کار میکند و همچنین در ایجاد دوره های رسمی OpenCV مشارکت دارد.

Michael Beyeler: یک دانشجوی فوق دکتری در مهندسی عصب و علوم داده در دانشگاه واشنگتن ، جایی که او روی مدل های محاسباتی بینایی بیونیک به منظور بهبود تجربه ادراکی بیماران نابینا که با شبکیه کاشته شده اند ،پروتز (چشم بیونیک) کار میکند.او در زبانهای برنامه نویسی همچون C ، C++ ، پایتون ، CUDA ، مطلب و اندروید مسلط می باشد. مایکل دکترای علوم کامپیوتر از دانشگاه کالیفرنیا ، ایروین ، و کارشناسی ارشد مهندسی پزشکی و کارشناسی مهندسی برق از ETH زوریخ ، سوئیس گرفته است.

اولین ویرایش کتاب در جولای 2017 ودومین ویرایش که هم اکنون در  حال بررسی می باشد در سپتامبر 2019  توسط نشر packt منتشر شده است.

این کتاب در 13 فصل که به سه بخش تقسیم شده است ،نوشته شده که به صورت مختصر به بحث و بررسی آن می پردازیم.

برای دریافت کتاب اینجا را کلیک کنید.  

بخش اول : در اولین بخش این کتاب ، ما اصول اولیه یادگیری ماشین و OpenCV ، با نصب کتابخانه های مورد نیاز ، و سپس حرکت به توابع پایه OpenCV ، مبانی یادگیری تحت نظارت و کاربردهای آنها ، و در نهایت ، تشخیص ویژگی ها با استفاده از  OpenCV توضیح داده شده است .این بخش شامل چهار فصل می باشد که در ادامه به بررسی فصول این بخش به صورت مختصر پرداخته شده است.

فصل اول :طعم یادگیری ماشین

در این فصل ، ما در مورد یادگیری ماشین در سطح انتزاعی بالا صحبت کردیم:اینکه یادگیری ماشین چیست ، چرامهم است و چه مشکلاتی را می تواند حل کند.ما یاد گرفتیم که مسائل یادگیری ماشین به سه دسته تقسیم میشود:یادگیری با ناظر ، یادگیری بدون ناظر ویادگیری تقویتی. ما در مورد اهمیت یادگیری با ناظر صحبت کردیم واین حوزه را می توان به دو زیر زمینه تقسیم کرد: طبقه بندی و رگرسیون . مدلهای طبقه بندی به ما این امکان را می دهند که اشیاء را در کلاسهای شناخته شده (حیواناتی به مانند گربه و سگ) طبقه بندی کنیم، در حالی که تجزیه و تحلیل رگرسیون می تواند برای پیش بینی مداوم نتایج متغیرهای هدف (مانند قیمت فروش خودروهای فرسوده) استفاده شود. ما همچنین نحوه ایجاد یک محیط علم داده با استفاده از Python Anaconda را آموختیم و نحوه دریافت آخرین کد این کتاب از GitHub و نحوه اجرای کد Notebook Jupyter.

فصل دوم : کار با داده ها در OpenCV

در این فصل ، ما در مورد یک فلوچارت  معمولی برای مقابله با چالش ها و مسائل مربوط به یادگیری ماشین صحبت کردیم: چگونه می توانیم ویژگی های آموزنده را از داده های خام استخراج کنیم ، چگونه می توانیم از داده ها و برچسب ها برای آموزش مدل یادگیری ماشین استفاده کنیم، و اینکه چگونه می توانیم از مدل نهایی استفاده کنیم تا برچسب های داده جدید را پیش بینی کند .ما آموختیم که تقسیم داده ها به یک مجموعه آموزشی ومجموعه آزمایشی را انجام دهیم ، زیرا این تنها راه این است که بدانید یک مدل چقدر خوب به نقاط داده های جدید تعمیم می یابد.

از نظر نرم افزاری ، ما مهارت های پایتون خود را به میزان قابل توجهی ارتقا دادیم. یاد گرفتیم نحوه استفاده از آرایه های NumPy برای ذخیره و دستکاری داده ها و نحوه استفاده از Matplotlib برای تجسم داده ها. ما در مورد scikit-learn و منابع داده مفید آن صحبت کردیم. سرانجام ، ما همچنین TrainData اختصاصی OpenCV ، که به کاربران کمک می کند ،از API مربوط به OpenCV C++  اشاره کردیم.

فصل سوم : اولین قدم یادگیری با ناظر

در این فصل روی روشهای یادگیری نظارت شده که شامل دسته بندی ورگرسیون می باشد بحث میکند.در روش دسته بندی ،دسته بندی K تا از نزدیکترین همسایه یا همان knn  را به کمک OpenCV پیاده سازی شده است وهمچنین در مورد معیارهای سنجش برای این روشها از جمله معیار دقت ، صحت وبازخوانی توضیح داده شده است.در ادامه فصل در مورد رگرسیون خطی توضیح داده شده و انواع رگرسیون خطی (مانند رگرسیون لاسو و رگرسیون رج) و مورد بحث قرار گرفت و چگونه می توان از آنها برای پیش بینی متغیرهای پیوسته استفاده کرد.  این روش را روی مسئله پییش بینی قیمت خانه در Boston housing پیاده سازی نموده است.روش رگرسیون لجستیک را برای داده های گل زنبق پیاده سازی شده است.

فصل چهارم : نمایش  داده ها و ویژگی های مهندسی

در این فصل ، ما  چندین ویژگی مشترک را از جمله تکنیک های مهندسی ، تمرکز بر انتخاب ویژگی و استخراج ویژگی را مورد بررسی قرار دادیم. داده ها را با موفقیت قالب بندی ، تمیز و تغییر داده تا بتوان الگوریتم های رایج یادگیری ماشین  را درک کرد.یکی از مواردی که در این فصل توضیح داده شده در مورد کاهش ابعاد می باشد.در ادامه به توضیح انواع روشهای کاهش ابعاد پرداخته شده است .اولین روش مورد بررسی پیاده سازی تجز یه وتحلیل مولفه های مهم (PCA) با OpenCV .در واقع تصاویر ممکن است رنگی وسه بعدی یا خاکستری وسه بعدی باشد. اگر یک تصویر خاکستری دو بعدی با ارتفاع m و عرض n را با جمع کردن همه ستون ها ، یک بردار (ویژگی) با طول m x n x 1 دریافت می کنیم.دومین روشی که برای کاهش ابعاد معرفی شده روش پیاده سازی تجزیه و تحلیل اجزای مستقل(ICA)  یک  تکنیک  کاهش ابعاد مفید که ارتباط نزدیکی با PCA دارند و توسط scikit-learn ، اما نه OpenCV ارائه شده است.سومین روش پیاده سازی فاکتوربندی ماتریس غیر منفی (NMF)  این روش همانند دو روش دیگر میباشد منتهی یک محدودیت اضافی دارد وآن اینکه باید روی داده های غیرمنفی کارکند.چهارمین روشی که برای کاهش ابعاد معرفی گردیده روش تجسم کاهش ابعاد با استفاده از t  توزیع جاسازی همسایه تصادفی (t-SNE)

در ادامه مباحث این فصل در مورد انواع داده ها ومنجمله تصویر بعنوان یک نوع داده مورد بحث وبررسی قرار گرفته است .ما یک تور کوتاه از تکنیک های معمول استخراج ویژگی هایی که OpenCV برای تصویر ارائه می دهد ، انجام داده ایم.

بخش دوم : این بخش بر مفاهیم پیشرفته یادگیری ماشین و نحوه استفاده از آنها تمرکز دارد و با استفاده از OpenCV و scikit-learn پیاده سازی شده است. ما برخی از های مفاهیم  پیشرفته یادگیری ماشین  ، مانند درختان تصمیم گیری ، ماشین های بردار پشتیبانی و یادگیری بیزی ،را پوشش می دهیم و سپس سرانجام به بحث در موردمسائل ومشکلات نوع دوم یادگیری ماشین یادگیری بدون ناظر می پردازیم.این بخش شامل 4 فصل می باشد که در زیر به هر فصل به طور خلاصه پرداخته شده است.

فصل پنجم : استفاده از درختان تصمیم گیری برای ایجاد یک تشخیص پزشکی

در این فصل ، ما همه چیز را در مورد درختان تصمیم گیری و نحوه اعمال آنها در وظایف طبقه بندی و رگرسیون یاد گرفتیم. ما کمی در مورد تولید داده ، overfitting و راه هایی برای جلوگیری از این پدیده با تغییر تنظیمات قبل از هرس و پس از هرس سخن گفتیم. ماهمچنین با نحوه امتیاز دهی به کیفیت تقسیم گره با استفاده از معیارهایی مانند Gini که مشخص کننده ناخالصی واطلاعات بدست آمده ، آشنا شدیم. سرانجام ، ما درختان تصمیم گیری را برای تشخیص بافتهای سرطانی به داده های پزشکی اعمال کردیم ،در پایان این کتاب ، به درخت تصمیم گیری باز می گردیم ما چندین درخت را به چیزی که به عنوان جنگل تصادفی شناخته می شود ، ترکیب می کنیم.

فصل ششم : تشخیص عابران پیاده با استفاده از ماشین های بردارپشتیبان

در این فصل ، ما با SVM ها در همه اشکال  آنها آشنا شدیم. ما اکنون می دانیم چگونه باید مرزهای تصمیم گیری در دو بعدی و ابر پلان ها در فضاهای با ابعاد بالا را ترسیم نماییم. در مورد هسته های SVM مختلف و نحوه پیاده سازی آنها در OpenCV  یاد گرفتیم.

علاوه بر این ، ما همچنین دانش به دست آمده خود را برای مثال عملی تشخیص عابر پیاده استفاده کردیم. برای این منظور ، ما مجبور شدیم درباره توصیف کننده ویژگی HOG چگونگی جمع آوری داده های مناسب برای کار یادبگیریم. ما از bootstrapping برای بهبود عملکرد طبقه بندی کننده استفاده کردیم طبقه بندی کننده را با مکانیسم تشخیص چند مقیاس OpenCV ترکیب کردیم.

فصل هفتم : پیاده سازی فیلتر spam با یادگیری بیزین

در این فصل ، ما اولین نگاه خود را به نظریه احتمال ، با آموزش در مورد متغیرهای تصادفی و احتمالات شرطی ، انجام دادیم که به ما امکان می دهد نگاهی اجمالی به قضیه بیز داشته باشیم که زیربنای طبقه بندی کننده ساده بیزین می باشد. ما در مورد تفاوت بین متغیرهای تصادفی گسسته و پیوسته ، موارد محتمل  و احتمالات ، پیشین و شواهد ، و طبقه بندی کننده های عادی و ساده بیز توضیح دادیم.

سرانجام ، اگر از آن روش در کاربردهای عملی استفاده نکنیم ، دانش نظری ما فایده ای نخواهد داشت .ما مجموعه داده ای از پیام های ایمیل خام را به دست آوردیم ، آن را تجزیه کردیم و دسته بند بیزین را آموزش دادیم برای دسته بندی ایمیل ها به عنوان هرزنامه یا هرزنامه (نه اسپم) با استفاده از انواع مختلف روشهای استخراج ویژگی.

فصل هشتم : کشف سازه های پنهان با یادگیری بدون نظارت

در این فصل ، ما در مورد برخی الگوریتم های یادگیری بدون نظارت ، از جمله kmeans ، خوشه بندی کروی ، و خوشه بندی سلسله مراتبی تجمعی توضیح دادیم. ما فهمیدیم که  kmeans دقیقا یک کاربرد خاص از الگوریتم ماکزیمم کردن  انتظارات تعمیم یافته است ، ما محدودیت های بالقوه آن را مورد بحث قرار دادیم. علاوه بر این ، ما از k-means برای دو کاربرد خاص ، که یکی کاهش پالت رنگی تصاویر و طبقه بندی ارقام دست نویس آنها بود، بکار بردیم.

بخش سوم :یادگیری ماشین های پیشرفته با استفاده از OpenCV

بخش پایانی این کتاب موضوعات مهم و پیشرفته ای مانند یادگیری عمیق ، روشهای یادگیری ماشین گروهی و تنظیم پایرامترها را پوشش می دهد. ماهمچنین آخرین افزودنی به جعبه ابزار OpenCV - OpenVINO توسط اینتل را پوشش خواهیم داد. به اختصار OpenVIN  معرفی می کنیم ،نحوه نصب و اجزای مختلف آن چیست و سپس در نهایت ببینید چگونه می توان از آن با OpenCV برای مشکلات طبقه بندی تصویر استفاده کرد.این بخش شامل 5 فصل می باشد.

فصل نهم : با استفاده از آموزش عمیق طبقه بندی ارقام دست نویس

اکنون بیایید به یادگیری با ناظر بازگردیم و درباره خانواده ای از الگوریتم های معروف به نام شبکه های عصبی مصنوعی بحث کنیم.مطالعات اولیه در مورد شبکه های عصبی به دهه 1940 برمی گردد زمانیکه وارن مک کالچ و والتر پیتس ابتدا نحوه سلول های عصبی بیولوژیکی (یا سلول های عصبی) در مغز را شرح دادند.اخیراً شبکه های عصبی مصنوعی در حال احیای مجدد بوده اند.واژه یادگیری عمیق ، که به روشهای  پیشرفته ای مانند الگوریتم  DeepMind مربوط به گوگل و DeepFace مربوط به فیس بوک کمک می کند.

در این فصل ، ما مجموعه ای کامل از مهارت ها را به عنوان یادگیری ماشین به لیست خود اضافه کردیم. ما نه تنها اصول اولیه شبکه های عصبی مصنوعی ، از جمله perceptrons و MLP ها ،ما همچنین به برخی از  نرم افزارهای پیشرفته یادگیری عمیق دست یافتیم. ما یاد گرفتیم که چگونه یک پرسپترون ساده را از ابتدا بسازیم و چگونه شبکه هایی با موقعیت هنری را با استفاده  از Keras بسازیم. علاوه بر این ، ما با تمام جزئیات شبکه های عصبی آشنا شدیم: توابع فعال سازی ، Loss function انواع لایه ها و روش های آموزشی.

فصل 10 : روشهای گروهی برای طبقه بندی

تا کنون ، تعدادی از الگوریتم های جالب یادگیری ماشین ، از روش های کلاسیک  مانند رگرسیون خطی تا تکنیک های پیشرفته تر مانند شبکه های عصبی عمیق را بررسی کردیم.ما اشاره کردیم که هر الگوریتم نقاط ضعف وقوت خودش را دارد و به چگونگی غلبه بر این ضعفها توجه کردیم.

در این فصل ، ما در مورد چگونگی بهبود طبقه بندی کننده های مختلف با ترکیب آنها به یک گروه صحبت کردیم. ما در مورد چگونگی متوسط پیش بینی طبقه بندی کننده های مختلف با استفاده از بسته بندی (bagging) واینکه چطور  طبقه بندی کننده های مختلف  اشتباهات یکدیگر را با استفاده از تقویت کننده (boosting) بحث کردیم. زمان زیادی صرف بحث در مورد همه راه های ممکن برای ترکیب درختان تصمیم گیری شد ، خواه تصمیم کننده (AdaBoost) ، جنگل های تصادفی یا درختان بسیار تصادفیی باشد.بالاخره یاد گرفتیم چگونه می توان انواع مختلف طبقه بندی کننده ها را در یک گروه با ایجاد رای گیری بین طبقه بندی کننده ها ترکیب کرد.

فصل 11 : انتخاب مدل مناسب با تنظیم Hyperparameter

در این فصل ، ما سعی کردیم مهارت های یادگیری ماشین موجود خود را با بحث بهترین شیوه ها در انتخاب مدل و تنظیم پارامترها تکمیل کنیم. شما یاد گرفتید که چگونه تنظیمات ابر پارامترهای یک مدل با استفاده از جستجوی شبکه و اعتبار سنجی متقابل هم با استفاده از   OpenCV وscikit  تغییر دهید. ما همچنین در مورد طیف گسترده ای از معیارهای ارزیابی و نحوه زنجیره بندی الگوریتم ها  به صورت خط لوله بحث کردیم .

فصل 12 : استفاده از OpenVINO با OpenCV

در این فصل ، ما به طور مختصر به جعبه ابزار OpenVINO نگاه کردیم ، این ابزار چیست ، چه کاربردی دارد و چگونه می توانیم آن را نصب کنیم. ما همچنین نحوه اجرای نسخه های نمایشی و نمونه های ارائه شده را با این  ابزار برای درک و مشاهده قدرت OpenVINO بررسی کردیم. بالاخره دیدیم چگونه برای استفاده از این امکان در کدهای OpenCV از پیش موجود ما فقط با افزودن یک خط مشخص برای استنتاج مدل استفاده می شود.

شاید متوجه شده باشید که ما در این فصل مطالب کاربردی زیادی را پوشش نداده ایم. دلیل آن این است که OpenVINO بیشتر برای برنامه های کاربردی یادگیری عمیق مناسب است ، که در محدوده این کتاب  وجود ندارد. اگر از علاقه مندان به یادگیری عمیق هستید ، مطمئناً باید بروید از طریق اسناد ارائه شده توسط اینتل در جعبه ابزار OpenVINO و شروع به کار کنید.این قطعا برای شما بسیار مفید خواهد بود.

فصل 13 : نتیجه گیری

در این فصل ، ما نحوه برخورد با یک مشکل یادگیری ماشین را یاد گرفتیم و اینکه چگونه تخمین زننده خود را ایجاد کنیم. ما یاد گرفتیم که چگونه طبقه بندی کننده مبتنی بر OpenCV خود را در C++  و طبقه بندی کننده scikitlearn بر اساس پایتون بنویسیم.

در این کتاب ، ما بسیاری از تئوری ها و تمرین ها را پوشش داده ایم. ما در مورد انواع مختلف الگوریتم های اساسی یادگیری ماشین ، چه تحت نظارت و چه بدون نظارت ، وبهترین شیوه ها و همچنین راه های اجتناب از گرفتاری های رایج را نشان داد ، و ما انواع دستورات و بسته ها برای تجزیه و تحلیل داده ها ، یادگیری ماشین و تجسم سازی را لمس نموده ایم.

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد