detect-simple-shapes-dst-img

با سلام

در این قسمت فایل ورد پایان نامه مربوط به شناسایی اشکال با استفاده از شبکه های عصبی (shape detection using ann)+ سورس کد متلب + فیلم آموزشی آن را برای دانلود قرار داده ایم امیدواریم که مفید واقع بشه برای دوستان

چکیده

شبکه‌های عصبی مصنوعی (Artificial Neural Network – ANN) یا به زبان ساده‌تر شبکه‌های عصبی، سیستم‌ها و روش‌های محاسباتی نوینی هستند برای یادگیری ماشینی، نمایش دانش، و در انتها اعمال دانش به­دست آمده در جهت بیش‌بینی پاسخ‌های خروجی از سامانه‌های پیچیده.

ایده­ی اصلی این­گونه شبکه‌ها تا حدودی الهام‌گرفته از شیوه­ی کارکرد سیستم عصبی زیستی، برای پردازش داده‌ها و اطلاعات به منظور یادگیری و ایجاد دانش می­باشد. عنصر کلیدی این ایده، ایجاد ساختارهایی جدید برای سامانه­ی پردازش اطلاعات است. این سیستم از شمار زیادی عناصر پردازشی فوق العاده بهم پیوسته به نام نورون تشکیل شده که برای حل یک مسأله باهم هماهنگ عمل می‌کنند و توسط سیناپس‎ها (ارتباطات الکترومغناطیسی) اطلاعات را منتقل می‎کنند.

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

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

نحوه تشخیص اشکال با استفاده از شبکه عصبی

تشخیص اشکال یا طبقه بندی اشکال با روشهای متفاوتی قابل انجامه ولی شبکه عصبی از مزایای بهتری برخورداره

شبکه عصبی به طور کلی می تواند ۳ کار عمده را انجام دهد

۱-       طبقه بندی

آموزش یک سیستم  به طوری که به کمک یک ناظر بتواند تعدادی ورودی را یاد بگیرد و بعد از آموزش یک نمونه ورودی که قبلا به سیستم آموزش نداده ایم را به سیستم بدهیم, سیستم باید بتواند طبق آموزشی که دیده آن نمونه را در دسته مناسب قرار دهد

۲-      خوشه بندی

در این نمونه از سیستم ها هدف طراحی سیستمیست که بدون ناظر بتواند نمونه های ورودی را در تعدادی دسته قرار دهد در این سیستم ما ناظر نداریم یعنی فاز آموزش ما بدون ناظر می باشد

۳-     رگرسیون

این نوع از سیستم ها هدف محاسبه تخمین یک مسئله از روی داده های موجود می باشد یعنی با داشتن داده های موجود بتوانیم مسدله را برای داده های بعد تخمین بزنیم

منظور از آموزش شبکه عصبی یعنی به روز رسانی وزن های شبکه عصبی با یاد دادن نمونه های ورودی به شبکه

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

ما باید نمونه های مختلفی از هر شکل را آماده کنیم و به شبکه عصبی آموزش دهیم بعد یک نمونه که تا  حالا شبکه آموزش ندیده را به عنوان تست به شبکه عصبی میدیم و شبکه باید بتونه به درستی تشخیص بده

مثلا ۱۰ نمونه مختلف از دایره, ۱۰ نمونه مختلف از مربع و…. را به عنوان ورودی به شبکه عصبی میدهیم و شبکه آنها را یاد میگیرد و بعد یک نمونه ۱۱م را که شبکه ندیده را به عنوان تست به شبکه میدیم و شبکه باید بتونه به درستی اون رو تشخیص بده

در کل فرایند تشخیص اشکال در ۵ گام قابل انجام می باشد

۱-       پیش پردازش تصویر

۲-      استخراج ویژگی های اشکال

۳-     ساخت شبکه عصبی مناسب با ویژگی های استخراج  شده

۴-      آموزش شبکه عصبی مربوطه

۵-     تست شبکه عصبی با نمونه های جدید

۱-       پیش پردازش:

در این فاز تصویر اولیه که کاملا به همریخته هستند و دارای اطلاعات نا مرتبط و غیر سودمندی هستند را برای یادگیری شبکه عصبی و استخراج ویژگی آماده سازی می کنیم.

این پیش پردازش شامل موارد مختلفی می شود مثلا:

حذف نویز
جدا سازی تصویر از پس زمینه
تبدیل تصویر به تصویر باینری
استاندارد سازی ابعات همه تصاویر
و…

۲-      استخراج ویژگی ها:از ویژگی های مختلفی میشه استفاده کرد مثلا برای تشخیص مربع از مثلث با یک ویژگی میتوان این کار را انجام داد یا تعداد زاویه های شکل و یا تعداد اضلاع شکل

مربع ۴ ضلع دارد ولی مثلث ۳ ضلع – برای زاویه نیز همینطور اما برای تشخیص مربع از مستطیل دیگه این ویژگی ها مناسب نمیباشد و باید دنبال ویژگی های دیگری باشیم

پس باید دنباله از ویژگی ها را انتخاب کنیم تا با داشتن انها بتوانیم همه اشکال را از هم متمایز کینم

ویژگی هایی که ما انتخاب کردیم به شرح زیر می باشد:

تعداد زاویه ها
خروجی حاصل از الگوریتم لبه یابی
تعداد اضلاع
حجم تصویر نسبت به کل شکل
خروجی حاصل از الگوریتم hough transform
و…

برای تشخیص اشیا و تمایز آنها از همدیگه

۳-     ساخت شبکه عصبی

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

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

در این سیستم ما ۲۵۰۰ نرون ورودی داریم و تعداد خروجی های ما برابر با تعداد اشکالی است که قرار است سیستم یاد بگیرد که فعلا ۴ تاست

و ۱۰ لایه مخفی داریم

نیاز به یک ماتریس وزن داریم ماتریس وزن برابر با ۲۵۰۰*۴  می باشد

در حین آموزش ماتریس وزن در حال تغییر می باشد و در نهایت به یک مقدار ثابت می رسیم

۱-       آموزش شبکه عصبی

فرمول آموزش شبکه عصبی پرسپترون رو اینجا باید کامل توضیح بدین

۲-      تست شبکه عصبی

یک بردار ورودی با ابعاد ۲۵۰۰ را به شبکه عصبی داده و شبکه عصبی باید به درستی در یک کلاس قرار دهد

پرداخت توسط کلیه کارت های عضو شتاب