PDA

View Full Version : گفتگو: قدم به قدم از تشخیص الگو تا چهره



ali_pourhadi
یک شنبه 27 مرداد 1387, 04:36 صبح
سلام به همگی

متاسفانه نیمدونم چرا ماایرانی ها اصلا در زمینه تشخیص چهره فعال نیستیم من کمتر جایی دیدم که راجع به این موضوع بحث و گفتگو بشه این تاپیک رو زدم برای اینکه میدونم شاید اگه خیلی ها یکم بیشتر راجع به این موضوع اطلاعات بدست بیارن به شدت علاقه مند میشن . پایان نامه کارشناسی خودم هم در این زمینه بوده و فکر میکنم بتونیم با هم یه تاپیک مفید برای کسایی که به این موضوع علاقه دارن درست کنیم . من خودم نزدیک یکسال از وقتم رو برای این موضوع گذاشتم و پشیمون هم نیستم و دلم میخاد همه چی رو بدون منت در اختیار بقیه هم قرار بدم تا استفاده کنن . من چند تایی مقاله از سایت www.face-rec.org (http://www.face-rec.org) رو ترجمه کردم و فکر میکنم یکی از قوی ترین سایت هایی هست که در این زمینه کار میکنه مقالات خیلی خوبی داره البته الان بعضی مقاله هاشو پولی کرده که من اون هارو مجانی در اختیارتون میزارم چون قبلا از کل سایت یه نسخه برداشتم . نزدیک 300MB هم سورس دارم که اون ها رو به مرور در اختیارتون میزارم که استفاده کنید . دوستان من دلم نمیخاد اینجا مقاله کپی پیست کنم دلم میخاد مطالب به زبانی گفته بشه که کسی که هیچی از این موضوع نمیدونه هم بفهمه وگرنه نوشتن چیزهای قلبه سلمبه که هیچ کس سردر نیاره چی شده کاری نداره پس اگه مطلبی مینویسن به زبان ساده باشه که با یه بار خوندن بشه فهمید .

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

قسمت اول :

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

[x= [ x1 x2 x3 x4 ....xn

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

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

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

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

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

انواع تشخیص الگو :

1 - با نظارت : یعنی اینکه ما مثلا چندین الگوی مربع رو به سیستم میدیم و در ضمن بهش هم میگیم چیزی که الان بهت دادیم یه مربع بود . در واقع الگو رو میدیم و کلاس الگو رو هم رو برای یادگیری سیستم مشخیص میکنیم ( همون یادگیری تو شبکه های عصبی خودمون )

2- بدون نظارت : توی این روش ما به سیستم فقط کلاس های الگو رو معرفی میکنیم یعنی فقط یه الگوی مستطیل یه الگوی مربع بهش میدیم خود سیستم با توجه به ویژگی ها دسته بندی رو انجام میده که البته ممکنه غلط هم در بیاد


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

pesare_ariyayi
یک شنبه 27 مرداد 1387, 11:56 صبح
خسته نباشی رفیق
منم کم و بیش بات موافقم. دوستان تو زمینه ی تشخیص چهره کم کارن. من تا حالا چشم به 1 بحث خورده در این زمینه اون هم تشخیص لبخند چهره تو دوربینای سونی هست
http://barnamenevis.org/forum/showthread.php?t=112292
به هر حال
من هم تو زمینه ی پردازش تصویر و بینایی ماشین یه پروژه ی تشخیص پلاک خودرو درست کردم (که بعد از 4 ماه که پروژه تموم شد فهمیدم 500 600 تایی ازش درس شده) خیلی هم دوس دارم از تشخیص چهره سر در بیارم. من یه جمع بندی می کنم از صحبتاتون.
من اول یه تعریف از کلاس می کنم که سطح درک مطالب رو بالاتر ببریم با اجازه D:
کلاس: همه ی اشیایی که ویژگی های مشترک دارن عضو یک کلاس هستن. مثالی که تو همه ی کتابا هست ماشینه. همه ی ماشینا پدال گاز, ترمز, گلاچ دارن, دنده دارن, شتاب و رنگ دارن. همشون راه میرن. یعنی ویژگیهاشون با هم یکیه. اما خصوصیتشون ممکنه باهم فرق کنه. یعنی مثلاً ممکنه یه ماشین سبز, یا یکی قرمز باشه. موتور یکی 12000 یا یکی 10000 باشه. پس میگیم بنز و رنو, دو شئ از کلاس ماشین هستن.
خوب بر میگردیم به جمع بندی:
علی آقای لطف می کنین برداشتهای من رو در صورت وجود اشکال تصحیح کنید؟
تشخیص الگو سه مرحله داره:
1. اندازه گیری: که تو اشکال هندسی می تونیم به نسبتهای اضلاع و اندازه ی زاویه ها اشاره کنیم.
2. پیش پردازش: تو این مرحله اندازه ها رو از بردارهای الگو ور میداریم تا الگوی کوچکتری داشته باشیم.
3. تشخیص: از ورودی الگو درست می کنیم, الگو ها رو با کلاس الگومون مقایسه می کنیم تا ببینیم جزو کدوم هستن
این سه مرحله رو درست جمع بندی کردم؟

mehdad.koulab
یک شنبه 03 شهریور 1387, 21:19 عصر
سلام وتشكر به خاطر ايجاد اين تاپيك ولي چرا ناقص موند و ادامه ندادين؟ لطفا ادامه بدين

mehdad.koulab
یک شنبه 03 شهریور 1387, 21:25 عصر
سلام دوستان به نظر من براي اين كارها (تشخيص چهره و الگو و ... ) ابتدا بايد بدونيم شبكه عصبي چيه براي فهم بهتر اين كه شبكه عصبي خودش چيه و بعد هم اينكه مصنوعيش چيه اين پست (http://barnamenevis.org/forum/showpost.php?p=566135&postcount=27) رو ببينيد.

saed2006
چهارشنبه 06 شهریور 1387, 17:26 عصر
جرا ادامه نميدين؟؟

alisaeed
جمعه 22 شهریور 1387, 17:07 عصر
خسته نباشید.
پس چرا ادامه ندادید.

lebrahimi
دوشنبه 08 مهر 1387, 15:09 عصر
سلام آقای pesare_ariyayi (http://barnamenevis.org/forum/member.php?u=48512)

می شه درباره پروژه تشخیص پلاک خودرو توضیح بدید؟

MAHDIhp_devsq
یک شنبه 18 فروردین 1392, 22:59 عصر
با سلام به دوستان عزیز من هم به این موضوع علاقمند شدم ما واقعا تو این زمینه کار نکردیم اگر میشه ادامه بدید با تشکر از ali_pourhadi
(http://barnamenevis.org/member.php?26332-ali_pourhadi)

neda sh0505
شنبه 16 آبان 1394, 20:43 عصر
سلام
موضوع پروژه منم تشخیص چهره با شبکه عصبی اگه امکانش باشه بهم کمک کنید.nedashaji@yahoo.com