X
تبلیغات
رایتل

FER: Facial Expression Recognition

معرفی کتاب پردازش تصویر دیجیتال با زبان MATLAB

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

در سال 1388 کتاب ارزشمند "پردازش تصویر دیجیتال" نوشته ی گونزالس و همکار وی را ترجمه نمودم که با استقبال بی نظیری رو برو شد. به همین دلیل، بر آن شدم تا کتاب حاضر را ترجمه کنم. این کتاب راه های پردازش تصویر را به کمک زبان MATLAB مورد بررسی قرار می دهد.

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

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

برای اطلاعات بیشتر در مورد این کتاب می توانید به سایت زیر مراجعه کتید:

www.olomrayaneh.net

معرفی کتاب پردازش تصویر دیجیتال در MATLAB

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

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

برای اطلاعات بیشتر در مورد این کتاب می توانید به سایت زیر مراجعه کنید:

www.Faradaneshjoo.com

روش viola-jones در تشخیص چهره

یکی از مهم ترین فعالیت های انجام شده در تشخیص چهره روش viola-jones در سال های 2001 و 2004 می باشد. که این روش بسیار موفق و سریع بشمار می آید.

viola و jones  الگوریتم AdaBoost را با Cascade برای تشخیص چهره ترکیب کردند. الگوریتم پیشنهادی آنها می توانست چهره را داخل یک تصویر 288*384 با صرف زمانی معادل 0.067 ثانیه تشخیص بدهد. یعنی 15 بار سریع تر از آشکار سازی های state-of-the-art با دقتی بالاتر ،به طوری که این الگوریتم یکی از پیشرفته ترین الگوریتم های ماشین بینایی در دهه ی گذشته تا به حال بوده است. نقش AdaBoost در این الگوریتم به این صورت می باشد که در ابتدا تصویر مورد نظر به زیر تصاویر(24*24) تقسیم بندی می شود. هر دیر تصویر بیانگر یک بردار ویژگی می باشد. به دلیل اینکه محاسبات موثر و کارآمد باشد از یک سری ویژگی های خیلی ساده استفاده می کنیم. تمام مستطیل های ممکن داخل زیر تصویر بررسی می شوند، در هر مستطیل 4 نمونه ویژگی به کمک ماسک هایی که در شکل زیر آمده استخراج می شود. (4 ماسک ویژگی که برای هر مستطیل استفاده می شود.)

با هر یک از این ماسک ها، مجموع پیکسل های سطح خاکستری در نواحی سفید از مجموع پیکسل های نواحی سیاه، کم می شود، که این مقدار به عنوان یک ویژگی دز نظر گرفته می شود. پس می توانیم به این صورت بگوییم که داخل یک زیر تصویر (24*24) بالغ بر یک میلیون ویژگی می توانیم داشته باشیم ( البته این ویژگی ها خیلی سریع محاسبه می شوند و می توانند کمتر از یک میلیون ویژگی هم باشند مثلا" 160000 در هر زیر تصویر)

هر ویژگی به عنوان یک یادگیرنده ی ضعیف در نظر گرفته می شود یعنی :

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

مستطیل های چهره را به عنوان مثال های Positive در نظر می گیریم. ( مثال های آموزشی مثبت )

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

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

پارامتر در Cascade به طوری تنظیم می شود که در هر نود درخت، ما یک انشعاب not a face داریم و به این معنی است که، تصویر یک تصویر چهره نبوده و یا به عبارت دیگر نرخ false negative  در حال به حداقل رسیدن می باشد. ایده ی این طرح در واقع شناسایی زودتر تصویر غیر چهره می باشد. به طور متوسط در هر زیر تصویر 10 تا ویژگی را مورد بررسی قرار می دهیم. انجام یک سری آزمایش viola-jones بر روی تصاویر:

منابع:

 P. Viola and M. Jones, "Robust Real-time Face Detection," presented at Eighth IEEE International Conference on Computer Vision, vol. 2,pp. 747,January 2001. [

 P. Viola, M. J. Jones, and D. Snow, "Detecting Pedestrians Using Patterns of Motion and Appearance," presented at Proceedings of the Ninth IEEE International Conference on Computer Vision(ICCV’03), 2003.

http://mathworks.ir/forum/9----/3256------

خلاصه ای از مقالات در زمینه تشخیص چهره و تشخیص حالت

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

مقدمه:

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

تشخیص چهره در سیستم های امنیتی ،کنترل کارت اعتباری و شناسایی مجرمان کاربرد اساسی دارد.

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

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

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

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

انواع تشخیص چهره عبارتند از :

1. تشخیص چهره با استفاده از تصاویر رو به رو

2. تشخیص چهره با استفاده از تصاویر نیمرخ

3. تشخیص چهره با استفاده از دیدگاه آزاد

4. بررسی یک تصویر از صورت

5. الگوریتم های اصلی مربوط به تشخیص چهره

6. جایگاه الگوریتم های یادگیری در تشخیص چهره

الگوریتم های تشخیص چهره عبارتند از :

تشخیص چهره با استفاده از الگوریتم ژنتیک.در این الگوریتم یک سیستم جدید برای شناسایی چهره با استفاده از الگوریتم ژنتیک پیشنهاد می شود دو بخش دارد :1.پیش پردازش 2.کاربرد الگوریتم ژنتیک

تشخیص چهره با استفاده از الگوریتم  flood fill .تعامل کامپیوتر انسان (HCI) بزرگترین هدف محققان بینایی ماشین است. در این روش تکنیک جدیدی برای استخراج ویژگی ها بیان می شود. این ویژگی ها را از نواحی مختلف چهره به همراه قطعه بندی رنگ پوست و تکنیک مبتنی بر دانش برای  شناسایی چهره بدست می آورد.

تشخیص چهره با استفاده از الگوریتم ترکیب الگوریتم AdaBoost با Cascade . الگوریتم پیشنهادی viola-Jones می توانست  چهره را در داخل یک تصویر ۳۸۴×۲۸۸ با صرف زمانی معادل ۰٫۰۶۷ ثانیه تشخیص بدهد. این الگوریتم یکی از پیشرفته ترین الگوریتم های ماشین بینایی در دهه گذشته تا به حال بوده است.

در پردازش تصاویر چهره، تشخیص و ردیابی، تخمین ظاهر و شناسایی خصوصیات مدنظر می باشد.

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

تشخیص حالت های صورت از روی ویژگی های صورت مانند چشم، دهان و ابرو ها صورت می گیرد.

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

منابع:

 J.Z. Li, M.T. Ozsu, D. Szafron, “Modeling of moving objects in a video database”, Proceedings of IEEE Int. Conf. on Multimedia Computing and Systems, Ottawa, Canada, pp. 336–343, June 1997.

D. Papadias, Y. Theodoridis, “Spatial Relations, Minimum Bounding Rectangles and Spatial Data Structures”, Int. Journal of Geographical Information Science, vol.11, pp.111–138, 1997.

https://www.google.com/search?sugexp=chrome,mod=9&ix=nh&sourceid=chrome&ie=UTF-8&q=srmohanna%40yahoo.com%2C&gws_rd=ssl

http://tabrizu.ac.ir/fa

آشکار سازی چهره

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

1.آشکار سازی(face detection)

2.استخراج الگو(feature extraction)

3.تشخیص چهره(face recognition)

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

در این زمینه  شما همه ی تمرکز برنامه و الگوریتم ها و روابطشان  را بر این مبنا می گذارید که بتوانند تصاویر چهره رو تشخیص بدهند . مثلا با یک دوربین وارد اتاقی میشدید که یک جشن تولد داخلش برگزار می شود.  چندین نفر توی اتاق نشستن و از روبرو به دوربین نگاه میکنند.  چند نفر هم از پهلو به دوربین نگاه میکنند.  بعضی از آنها هم پشتشان به دوربین می باشد. چند تا بادکنک هم هست که با ماژیک رویشان  را به صورت آدمک نقاشی کردند.  یک آینه ی گرد کوچک هم ته اتاق است  که دو تا میخ به صورت موازی  روی  قطرش زدند تا به دیوار متصل بشود.  حال اگر بخواهید با این دوربین تعداد افرادی که توی اتاق هستند  را بشمارید چه کاری انجام می دهید؟ طبیعتا"  باید صورت ها را  از غیر صورت تشخیص بدهید.  به طور کلی اولین چیزی که از صورت در نظر ما می آید این است که دو تا چشم و یک محیط گرد، یک بینی و یک خط برای لب .. حال اگر همین ها را بتوانیم در قالب الگوریتم و روابط کدنویسی به اجرا در بیاوریم ، فریم هایی که از دوربین استخراج میشوند می توانند  پردازش شوند و تخصیص داده شوند  که چند تا تصویر صورت از طریق پیاده سازی  این الگوریتم  به دست می آید. اما نکته ی مهم این است که  هر چه شما ویژگی هایتان را دقیق تر تعریف کنید ، نتیجه ای که میگیرید به واقعیت نزدیک تر می شود. مثلا  اگر  شما صرفا گردی صورت را ملاک پردازش تصاویر دریافتی بگیرید؛ آن آینه و بادکنک ، صورت به حساب می آیند اما افرادی که نیمرخ قرار دارن یا سرشان پایین بوده (سطوح بیضی ..) ،صورت به حساب نمی آیند. اگر چشم ها را هم دخیل کنید ، باز هم همین وضع پیش می آید و نتیجه تغییر نمی کند. اگر صرفا لب و گردی صورت رو به عنوان feature قرار بدهید، آینه حذف می شود ولی بادکنک هنوز می ماند و همینطور تا آخر .. این است که باید بدانید برای یک دسته بندی مناسب  از چه  feature هایی استفاده کنید بهتر است یا در کجا مناسب تر است؟؟؟؟ 

مورد بعدی  اصولا موردی است که صرفا محدود به پردازش چهره نمی شود و برای موارد بسیار دیگری هم کاربرد دارد.  اساس این مورد بر این موضوع استوار است که شما از تصویر پارامترهایی را  استخراج کنید که بتوانید بر مبنای آنها استدلال کنید که به این دلیل ، تصویر a  کپی است از تصویر b ...یعنی یک تناظر یک به یک بین دو تصویر برقرار کنید.  فرض کنید دو تا تصویر چهره دارید و می خواهید اینها را با تصویر سومی مقایسه کنید. حال  اگر صرفا از چهره این استنباط را داشته باشید که چهره عبارت است از یک گردی صورت + دو گردی کوچکتر به عنوان چشم+ یک تیغه ی عمودی به عنوان بینی+ یک خط افقی به عنوان لب  هر سه تصویر بر هم منطبق می شوند و نمی توانید تفکیک بین آنها قائل شوید.  مثلا اگه این کار را برای تشخیص هویت بخواهید انجام بدهید در عمل الگوریتمتان شکست میخورد ، اما اگر تصاویرتان را با ملاک های دیگری تحلیل کنید ؛ مثل اینکه فاصله ی دو تا چشم از هم چقدر است و یا ارتفاع چشم ها یا فاصله ی بینی از لب و یا موارد دیگری که میتوانید انتخاب کنید، در آن صورت دیگر عمل  تطابقتان  به صورت دقیق تری انجام می شود و میتوانید از آن  برای موارد دیگر هم استفاده کنید. هرچقدر این انتخاب ها خلاقانه تر و منحصر به فرد تر باشد، نتیجه ی تطابقتان دقیق تر و صحیح تر خواهد بود به طوریکه در صورت بهینه شدن میتوانید این رفتار را برای هر تصویر چهره ای به اجرا در بیاورید.
برای مورد اولی شما باید روی Classifier ها و متد های آنها و الگوریتم هایی که در این زمینه کاربرد دارند زمان بگذارید و دنبال این موضوع باشید که کدام Classifier می تواند بهترین نتیجه را به همراه داشته باشد و در انتخاب آنها باید به این نکته هم توجه کنید که همیشه  Accuracy با speed در رقابت هستند و به نوعی باید این trade off را برچسب  application خودتان برقرار کنید.
برای مورد دومی  شما باید روی الگوریتم ها و متد های Matching زمان بگذارید و بروید دنبال این موضوع که هر کدام از اینها به چه نحوی کار می کنند و از چه طریقی می توانند با  توجه به feature های انتخابی شما به روند کنترل تطابق سمپل ها کمک کنند.  روش های متنوعی برای هر دو مورد وجود دارد هر کدام هم یک شیوه ی خاص برای خودشان دارند و نتایجشان هم بسیار متفاوت است. (هر کدوم برای یه  application  کاربرد دارند که آن  را شما باید پیدا کنید ..) 

منابع:

M. Yang, D. J. Kriegman and N. Ahuja, ‘Detecting Faces in Images: A Survey’, IEEE Trans. On Pattern Analysis and Machine Intelligence, 24 (1):34-58, 2002.

] C.J.C. Burges, ‘A Tutorial on Support Vector Machines for Pattern Recognition’, Data Mining and Knowledge Discovery, 2:121-158, 1998.

 H.-J. Lin, S.-Y. Wang, S.-H. Yen, and Y.-T. Kao, "Face Detection Based on Skin Color Segmentation and Neural Network," presented at Neural Networks and Brain, 2005. ICNN&B '05. International Conference on, 2005.

http://www.eca.ir/forums/thread7997-3.html

<< 1 2 3 4 >>