ali_pourhadi
یک شنبه 27 مرداد 1387, 04:36 صبح
سلام به همگی
متاسفانه نیمدونم چرا ماایرانی ها اصلا در زمینه تشخیص چهره فعال نیستیم من کمتر جایی دیدم که راجع به این موضوع بحث و گفتگو بشه این تاپیک رو زدم برای اینکه میدونم شاید اگه خیلی ها یکم بیشتر راجع به این موضوع اطلاعات بدست بیارن به شدت علاقه مند میشن . پایان نامه کارشناسی خودم هم در این زمینه بوده و فکر میکنم بتونیم با هم یه تاپیک مفید برای کسایی که به این موضوع علاقه دارن درست کنیم . من خودم نزدیک یکسال از وقتم رو برای این موضوع گذاشتم و پشیمون هم نیستم و دلم میخاد همه چی رو بدون منت در اختیار بقیه هم قرار بدم تا استفاده کنن . من چند تایی مقاله از سایت www.face-rec.org (http://www.face-rec.org) رو ترجمه کردم و فکر میکنم یکی از قوی ترین سایت هایی هست که در این زمینه کار میکنه مقالات خیلی خوبی داره البته الان بعضی مقاله هاشو پولی کرده که من اون هارو مجانی در اختیارتون میزارم چون قبلا از کل سایت یه نسخه برداشتم . نزدیک 300MB هم سورس دارم که اون ها رو به مرور در اختیارتون میزارم که استفاده کنید . دوستان من دلم نمیخاد اینجا مقاله کپی پیست کنم دلم میخاد مطالب به زبانی گفته بشه که کسی که هیچی از این موضوع نمیدونه هم بفهمه وگرنه نوشتن چیزهای قلبه سلمبه که هیچ کس سردر نیاره چی شده کاری نداره پس اگه مطلبی مینویسن به زبان ساده باشه که با یه بار خوندن بشه فهمید .
اما فکر کنم بهتره بحث رو شروع کنیم . خوب درمورد تشخیص چهره باید بگم شاید اگه کسی مبانی تشخیص الگو رو بدونه خیلی جلو میفته . بنابراین قبل از اینکه راجع به الگوریتم ها صحبت کنم دلم میخاد از مبانی تشخیص الگو شروع کنیم .
قسمت اول :
خوب اول ببینیم الگو چی هست : تعریف الگو یک توصیف از یک شی هست . من قوی ترین سیستم تشخیص الگویی که توی دنیا سراغ دارم خود انسان هست . ما آدما بنا به تجربه تشخیص میدیم یعنی اینکه قبلا بهمون گفتن که فلان چیز میز هست حالا از این به بعد ما هر چیزی که دارای مشخصاتی شبیه به چیزی که قبلا برای ما به عنوان میز تعریف شده ببینیم اون رو تشخیص میدیم . البته خوب اون چیزی که مسلم هست اینه که ما فقط یک مدل میز نداریم پس اینجا بحث کلاس الگو ها مطرح میشه . کلاس الگو ها یه دسته از الگوها هستن که دارای یک سری صفت هایی که بین اعضای اون کلاس مشترک هستن .
معمولا الگو ها رو با یک بردار نمایش میدن مثل این :
[x= [ x1 x2 x3 x4 ....xn
اما اجازه بدین راجع به اینکه مولفه های بردار چی هستن بعدن صحبت کنیم .
حالا که فهمیدم اصلا الگو چی هست بییاد ببینیم که یه الگو رو چطوری تشخیص میدن یا بزارین اصلا ببینیم خودمون وقتی چیزی رو تشخیص چه مراحلی توی ذهن مون طی میشه .
من یک مثال رو میزنم و همه مراحل روی روی هیمن توضیح میدم . مثلا تشخیص مربع و فرض کنیم که ورودی های ما هم یا مربع هستن یا مستطیل .
اولین مرحله : خوب مرحله اول اندازه گیری هست . یعنی اینکه شما وقتی چیزی رو میبینید به طور خودکار دارید اندازه گیری میکنید مثلا میخایم سیستم ما مربع رو تشخیص بده . خوب پس فقط ما باید طول و عرض ها و زوایای بین ضلع ها رو اندازه گیری کنیم .حالا برگردیم جایی که گفتم مولفه های بردار رو بعدا میگم . مولفه های بردار الگوی ما همین اندازه ها هستن .
پس بردار الگوی ما شامل اطلاعات اندازه گیری شده است .
حالا که همش صحبت از بردار کردیم ببینیم تعبیر هندسی این حرف های ما چی میشه . اگه ما الگو رو با توجه به اینکه با یه بردار تعریف کردیم یه نقطه از فضا در نظر بگیریم فکر میکنین کلاس الگو چی میشه ؟
مرحله دوم : من اسم این مرحله رو پیش پردازش میزارم . ببینید بنا به فرض اول ما ورودی های ما همه مربع و مستطیل هستند بنابراین میتونیم مقادیر اندازه گیری شده برای زاویه ها رو از بردار های الگو حذف کنیم و بردار ها رو کوچیک تر کنیم. در واقع ویژگی های کلیدی رو از بین ویژگی های اندازه گیری شده استخراج میکنیم .
مرحله سوم : این مرحله , مرحله تصمیم گیری یا تشخیص هست . حالا ما یه ورودی دریافت کردیم و الگوی اون رو با اندازه گیری هایی که انجام دادیم به صورت بردار در اوردیم , ویژگیهای مهم رو هم استخراج کردیم حالا باید ببینیم این الگوی ورودی متعلق به کدوم کلاس الگو هست یعنی همون عمل تشخیص خودمون . تعبیر هندسی این مسئله میتونه اینطوری باشه که اگه اگه الگوی خودمون رو روی صفحه نگاشت کنیم در محدوده کدوم کلاس الگو قرار میگیره.
حالا به مسئله یادگیری بپردازیم . خوب همیشه هم سیستم های تشخیص الگو انقدر ساده نسیتن که فقط مربع و مستطیل بخان تشخیص بدن بنابراین نوشتن توابعی که بتونن عمل تصمیم گیری رو انجام بدن زیاد ساده نیست . دقت این توابع به اطلاعات ما از ورودی ها بستگی داره مثلا در همین مورد مستطیل و مربع چون ما اطلاعات دقیقی راجع به ورودی ها داریم پس میتونیم خیلی دقیق تصمیم گیری کنیم ولی مثلا اگه ورودی چهره باشه هر چهره با چهره دیگه فرق میکنه و اطلاعات ما از ورودی زیاد نیست پس باید یه رویه یادگیری داشته باشیم و برای تشخیص بهتر تمرین کنیم .
انواع تشخیص الگو :
1 - با نظارت : یعنی اینکه ما مثلا چندین الگوی مربع رو به سیستم میدیم و در ضمن بهش هم میگیم چیزی که الان بهت دادیم یه مربع بود . در واقع الگو رو میدیم و کلاس الگو رو هم رو برای یادگیری سیستم مشخیص میکنیم ( همون یادگیری تو شبکه های عصبی خودمون )
2- بدون نظارت : توی این روش ما به سیستم فقط کلاس های الگو رو معرفی میکنیم یعنی فقط یه الگوی مستطیل یه الگوی مربع بهش میدیم خود سیستم با توجه به ویژگی ها دسته بندی رو انجام میده که البته ممکنه غلط هم در بیاد
فکرمیکنم تا همین حد در مورد الگو کافی باشه توی قسمت بعدی مفاهیم اولیه تشخیص چهره رو شروع میکنم . سعی کردم ساده و رون توضیح بدم اگه خوب نبوده سعی میکنم بهترش کنم .
متاسفانه نیمدونم چرا ماایرانی ها اصلا در زمینه تشخیص چهره فعال نیستیم من کمتر جایی دیدم که راجع به این موضوع بحث و گفتگو بشه این تاپیک رو زدم برای اینکه میدونم شاید اگه خیلی ها یکم بیشتر راجع به این موضوع اطلاعات بدست بیارن به شدت علاقه مند میشن . پایان نامه کارشناسی خودم هم در این زمینه بوده و فکر میکنم بتونیم با هم یه تاپیک مفید برای کسایی که به این موضوع علاقه دارن درست کنیم . من خودم نزدیک یکسال از وقتم رو برای این موضوع گذاشتم و پشیمون هم نیستم و دلم میخاد همه چی رو بدون منت در اختیار بقیه هم قرار بدم تا استفاده کنن . من چند تایی مقاله از سایت www.face-rec.org (http://www.face-rec.org) رو ترجمه کردم و فکر میکنم یکی از قوی ترین سایت هایی هست که در این زمینه کار میکنه مقالات خیلی خوبی داره البته الان بعضی مقاله هاشو پولی کرده که من اون هارو مجانی در اختیارتون میزارم چون قبلا از کل سایت یه نسخه برداشتم . نزدیک 300MB هم سورس دارم که اون ها رو به مرور در اختیارتون میزارم که استفاده کنید . دوستان من دلم نمیخاد اینجا مقاله کپی پیست کنم دلم میخاد مطالب به زبانی گفته بشه که کسی که هیچی از این موضوع نمیدونه هم بفهمه وگرنه نوشتن چیزهای قلبه سلمبه که هیچ کس سردر نیاره چی شده کاری نداره پس اگه مطلبی مینویسن به زبان ساده باشه که با یه بار خوندن بشه فهمید .
اما فکر کنم بهتره بحث رو شروع کنیم . خوب درمورد تشخیص چهره باید بگم شاید اگه کسی مبانی تشخیص الگو رو بدونه خیلی جلو میفته . بنابراین قبل از اینکه راجع به الگوریتم ها صحبت کنم دلم میخاد از مبانی تشخیص الگو شروع کنیم .
قسمت اول :
خوب اول ببینیم الگو چی هست : تعریف الگو یک توصیف از یک شی هست . من قوی ترین سیستم تشخیص الگویی که توی دنیا سراغ دارم خود انسان هست . ما آدما بنا به تجربه تشخیص میدیم یعنی اینکه قبلا بهمون گفتن که فلان چیز میز هست حالا از این به بعد ما هر چیزی که دارای مشخصاتی شبیه به چیزی که قبلا برای ما به عنوان میز تعریف شده ببینیم اون رو تشخیص میدیم . البته خوب اون چیزی که مسلم هست اینه که ما فقط یک مدل میز نداریم پس اینجا بحث کلاس الگو ها مطرح میشه . کلاس الگو ها یه دسته از الگوها هستن که دارای یک سری صفت هایی که بین اعضای اون کلاس مشترک هستن .
معمولا الگو ها رو با یک بردار نمایش میدن مثل این :
[x= [ x1 x2 x3 x4 ....xn
اما اجازه بدین راجع به اینکه مولفه های بردار چی هستن بعدن صحبت کنیم .
حالا که فهمیدم اصلا الگو چی هست بییاد ببینیم که یه الگو رو چطوری تشخیص میدن یا بزارین اصلا ببینیم خودمون وقتی چیزی رو تشخیص چه مراحلی توی ذهن مون طی میشه .
من یک مثال رو میزنم و همه مراحل روی روی هیمن توضیح میدم . مثلا تشخیص مربع و فرض کنیم که ورودی های ما هم یا مربع هستن یا مستطیل .
اولین مرحله : خوب مرحله اول اندازه گیری هست . یعنی اینکه شما وقتی چیزی رو میبینید به طور خودکار دارید اندازه گیری میکنید مثلا میخایم سیستم ما مربع رو تشخیص بده . خوب پس فقط ما باید طول و عرض ها و زوایای بین ضلع ها رو اندازه گیری کنیم .حالا برگردیم جایی که گفتم مولفه های بردار رو بعدا میگم . مولفه های بردار الگوی ما همین اندازه ها هستن .
پس بردار الگوی ما شامل اطلاعات اندازه گیری شده است .
حالا که همش صحبت از بردار کردیم ببینیم تعبیر هندسی این حرف های ما چی میشه . اگه ما الگو رو با توجه به اینکه با یه بردار تعریف کردیم یه نقطه از فضا در نظر بگیریم فکر میکنین کلاس الگو چی میشه ؟
مرحله دوم : من اسم این مرحله رو پیش پردازش میزارم . ببینید بنا به فرض اول ما ورودی های ما همه مربع و مستطیل هستند بنابراین میتونیم مقادیر اندازه گیری شده برای زاویه ها رو از بردار های الگو حذف کنیم و بردار ها رو کوچیک تر کنیم. در واقع ویژگی های کلیدی رو از بین ویژگی های اندازه گیری شده استخراج میکنیم .
مرحله سوم : این مرحله , مرحله تصمیم گیری یا تشخیص هست . حالا ما یه ورودی دریافت کردیم و الگوی اون رو با اندازه گیری هایی که انجام دادیم به صورت بردار در اوردیم , ویژگیهای مهم رو هم استخراج کردیم حالا باید ببینیم این الگوی ورودی متعلق به کدوم کلاس الگو هست یعنی همون عمل تشخیص خودمون . تعبیر هندسی این مسئله میتونه اینطوری باشه که اگه اگه الگوی خودمون رو روی صفحه نگاشت کنیم در محدوده کدوم کلاس الگو قرار میگیره.
حالا به مسئله یادگیری بپردازیم . خوب همیشه هم سیستم های تشخیص الگو انقدر ساده نسیتن که فقط مربع و مستطیل بخان تشخیص بدن بنابراین نوشتن توابعی که بتونن عمل تصمیم گیری رو انجام بدن زیاد ساده نیست . دقت این توابع به اطلاعات ما از ورودی ها بستگی داره مثلا در همین مورد مستطیل و مربع چون ما اطلاعات دقیقی راجع به ورودی ها داریم پس میتونیم خیلی دقیق تصمیم گیری کنیم ولی مثلا اگه ورودی چهره باشه هر چهره با چهره دیگه فرق میکنه و اطلاعات ما از ورودی زیاد نیست پس باید یه رویه یادگیری داشته باشیم و برای تشخیص بهتر تمرین کنیم .
انواع تشخیص الگو :
1 - با نظارت : یعنی اینکه ما مثلا چندین الگوی مربع رو به سیستم میدیم و در ضمن بهش هم میگیم چیزی که الان بهت دادیم یه مربع بود . در واقع الگو رو میدیم و کلاس الگو رو هم رو برای یادگیری سیستم مشخیص میکنیم ( همون یادگیری تو شبکه های عصبی خودمون )
2- بدون نظارت : توی این روش ما به سیستم فقط کلاس های الگو رو معرفی میکنیم یعنی فقط یه الگوی مستطیل یه الگوی مربع بهش میدیم خود سیستم با توجه به ویژگی ها دسته بندی رو انجام میده که البته ممکنه غلط هم در بیاد
فکرمیکنم تا همین حد در مورد الگو کافی باشه توی قسمت بعدی مفاهیم اولیه تشخیص چهره رو شروع میکنم . سعی کردم ساده و رون توضیح بدم اگه خوب نبوده سعی میکنم بهترش کنم .