یادگیری ماشین در OpenCV : جلسه اول

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

کاربردهای یادگیری ماشین :

تشخیص تصویر: این بخش یکی از مهمترین کاربردهای یادگیری ماشین است که می تواند دسته بندی ها متفاوتی داشته باشد. تشخیص تصویر در بینایی کامپیوتر، تشخیص چهره در بینایی ماشین، تشخیص اشیاء و … نمونه ها و مثال هایی از پرکابردترین استقاده های این بخش هستند.

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

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

تحلیل احساس ( Opinion Mining ) : تشخیص احساس از روی متن هم بخش دیگری از یادگیری ماشین است. اگر ما متنی را به ماشین تحویل دهیم که دارای جملات و عبارت احساسی باشد، ماشین این احساسات را یاد گرفته و در دفعات بعدی قادر به تحویل متون مشابه با این احساس است.

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

طبقه بندی یا کلاس بندی ( Classification ) : می توان گفت این مفهوم یکی از معروف ترین موضوعات یادگیری ماشین است. نحوه کار معمولا به این صورت است که ما داده را در اختیار ماشین قرار می دهیم و ماشین آن را بدون هیچ مشکل و ایرادی دسته بندی یا طبقه بندی می کند.

نمودار کلاسه بندی شبکه عصبی

داده های آموزش ( Training Data ) :

اما در الگویتم های یادگیری ماشین، مفهومی با عنوان داده های آموزش ( Training Data ) وجود دارد. این مفهوم معمولا به منظور تصمیم گیری بدون برنامه ریزی آشکار یا برای پیش بینی مورد استفاده قرار می گیرد. مثلا هر بار که در موتورهای جستجو مانند گوگل اقدام به پیدا کردن مطلبی می کنید، یادگیری آموزشی و استفاده از داده های آموزشی ملاک اصلی این جستجوی شما است. داده های آموزش ( Training Data ) شامل چندین جزء است:

۱- مجموعه ای از نمونه های آموزشی: هر نمونه آموزشی، برداری از مقادیر است (این مفهوم در بینایی کامپیوتر به بردار اجزاء اشاره می کند). در ماژول OpenCV ML فرض بر این است که معمولا بردارها اعداد اجزای یکسانی دارند. هر جزء می تواند مرتب سازی (برای مثال، مقادیر اهداد شناوری هستند که می توانند با یکدیگر مقایسه شده و دقیقا مرتب سازی شوند) شده یا در دسته بندی (مثال: مقادیر به مجموعه ثابتی از مقادیر تعلق دارد که می توانند رشته ها، int و … باشند) خاصی قرار بگیرد.

۲- مجموعه ای اختیاری از پاسخ ها که مرتبط با نمونه ها هستند. داده های آموزش بدون پاسخ برای الگوریتم های آموزشی بدون نظارت استفاده می شوند که بر اساس فواصل بین نمونه های مختلف، ساختار داده های مرجع را یاد می گیرند. داده های آموزش با پاسخ در الگوریتم های یادگیری تحت نظارتی استفاده می شوند که نمونه های نگاشت توابع به پاسخ ها را یاد می دهند.
معمولا این پاسخ ها، مقادیر اسکالر هستند که مرتب سازی شده (وقتی با مسائل رگراسیون رو به رو هستیم) یا به صورت دسته بندی شده موجودند (زمانی که با مسائل کلاس بندی شده رو به رو هستیم). در این مورد، پاسخ ها معمولا با عنوان “برچسب” خوانده می شوند. برخی از الگوریتم ها مانند شبکه های عصبی، نه تنها قادر به مدیریت پاسخ های اسکالر هستند که می توانند پاسخ های چند بعدی و برداری را نیز مدیریت کنند.

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

۴- کاربر ممکن است در مورد مسئله کلاس بندی بخواهد به کلاس های مختلف وزن های متفاوتی تخصیص دهد. این کار گاها سودمند است. برای مثال می توان گفت زمانی که:

    • کاربر می خواهد دقت پیش بینی آلارم اشتباه را تغییر دهد.
    • کاربر می خواهد مقادیر مختلف قابل ملاحظه ای را برای نمونه های آموزشی کلاس های مختلف تنظیم کند.

۵- علاوه بر این موارد، به هر نمونه آموزشی می توان یک وزن اختصاص داد. این موضوع هنگامی ممکن است که-کاربر می خواهد در الگوریتم توجه ویژه ای به نمونه های آموزشی اختصاص دهد و براساس آن، مدل آموزشی را بهبود دهد.

۶- هم چنین ممکن است کاربر تمایلی به استفاده یکجا از داده های آموزشی نداشته باشد. اما ترجیح دهد بخشی از آن ها را مورد استفاده قرار دهد. برای مثال می توان به بهینه سازی پارامتر ها به وسیله فرایند اعتبارسنجی متقابل اشاره نمود.

دیتاست تشخیص خودرو

همانطور که ملاحظه می کنید، داده های آموزشی می توانند پیچیده باشند. به علاوه می توانند بسیار بزرگ بوده در دسترس نباشند. بنابراین لازم است تا انتزاعی برای این مفهوم در نظر بگیریم. در ماژول OpenCV ML کلاس هایی به این منظور تهیه شده اند که از قوانین کپسوله سازی پشتیبانی می کنند.

به یاد داشته باشید که این کلاس تنها اینترفیس داده آموزشی را مشخص می کند نه پیاده سازی داده ها را. همه ی کلاس های مدل آماری در ماژول ml به عنوان پارامتر، <Par<TranData را می پذیرند. به عبارت دیگر، شما می توانید کلاس خودتان که از داده های آموزشی استخراج شده است را ایجاد کرده و یک اشاره گر هوشمند با کد StatModel::train به آن اضافه کنید.

دسته بندی بیز نرمال :

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

بیشتر بخوانید :

منبع OpenCV

همچنین ببینید

فناوری تشخیص چهره و کاربردهای آن، تاریخچه تکنولوژی تشخیص چهره

فناوری تشخیص چهره و کاربردهای آن + تاریخچه

فناوری تشخیص چهره یک فناوری بیومتریک است که با استفاده از تجزیه و تحلیل الگوهایی …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *