رُخ در گیت‌هاب

۱. مقدمه

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

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

  • زاویه چهره1. این‌که دوربین از کدام زاویه (تمام‌رخ، نیم‌رخ و ...) از چهره عکس گرفته باشد می‌توان فاکتور مهمی در درجه‌ی سختی تشخیص چهره محسوب گردد.

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

  • حالات چهره. نمای صورت در حالات مختلف چهره (لبخند، خنده، گریه و ...) متفاوت خواهد بود.

  • پوشش. ممکن است قسمتی از چهره بخاطر زاویه چهره و یا قرارگیری پشت اشیاء دیگر قابل مشاهده نباشد.

  • زاویه عکس2. اشیاء مختلف با قرارگیری در زاویه‌های مختلف نسبت به صفحه مماس اشکال خاصی به خود می‌گیرند.

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

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

المان‌های مختلفی را می‌توان در ارزیابی یک سیستم تشخیص چهره مؤثر دانست مانند زمان یادگیری، زمان اجرا، تعداد مثال‌های مورد نیاز برای یادگیری و نسبت بین میزان تشخیص5 و خطای منفی6.
میزان تشخیص را می‌توان به نسبت تعداد چهره‌های درست تشخیص داده شده توسط عامل هوش مصنوعی به تعداد چهره‌های تشخیص داده شده توسط انسان تعریف کرد.
در صورتی قابی توسط عامل تشخیص داده شده است به عنوان چهره در نظر گرفته می‌شود که قاب مورد نظر بیشتر از میزان خاصی از چهره‌ی فرد را پوشش دهد.
از طرف دیگر خطای منفی زمانی رخ می‌دهد که عامل در تشخیص چهره ناموفق باشد که این خود ریشه در پایین بودن میزان تشخیص خواهد بود. در مقابل خطای منفی مفهوم دیگری به نام خطای مثبت7 وجود دارد که وقتی قابی به عنوان چهره از طرف عامل هوش‌ مصنوعی معرفی می‌شود اما عامل انسانی تایید نمی‌کند، رخ می‌دهد.

detection\ rate= \frac{correctly\ detected}{determined\ by\ human}

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

۱.۱. روش‌های موجود

روش‌های موجود در تشخیص چهره را می‌توان به چهار گروه مختلف تقسیم کرد:

  • روش‌های دانش‌ محور8

  • روش‌های جزئیات محور9

  • روش‌های الگو محور10

  • روش‌های ظاهر محور11

۱.۱.۱. روش‌های دانش محور

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

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

یک تصویر مورد استفاده در روش‌های بالا-به-پایین دانش محور تولید شده بر اساس دانش انسانی درباره خصوصیات چهره انسان.بر گرفته از [4]

۱.۱.۲. روش‌های جزئیات محور

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

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

۱.۱.۳. روش‌های الگو محور

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

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

الگوی نسبی تولید شده جهت تشخیص چهره (بر گرفته از [5])

۱.۱.۴. روش‌های ظاهر محور

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

۲. کارهای مرتبط

وایولا و جونز در [2] روشی برای حل مسأله تشخیص اشیاء مبتنی بر یادگیری ماشینی را معرفی کرده‌اند که قادر به پردازش سریع تصاویر با میزان تشخیص بالا خواهد بود.

روش معرفی شده که به نوعی نماینده‌ی روش‌های ظاهرمحور محسوب می‌شود از سه عنصر کلیدی استفاده می‌کند:

  • انتگرال تصویر12 که توانایی محاسبه سریع مجموع مقادیر پیکسل‌های موجود در یک قاب مستطیل شکل را به ما می‌دهد.

  • آدابوست13 که ما را قادر به تنظیم پارامتر‌های مختلف، نوع و تعداد مشخصه‌های هار14 مورد استفاده در الگوریتم‌های کلاس‌بندی15 موجود در مدل آبشاری می‌کند تا بتوان با استفاده از کمترین تعداد از مشخصه‌های هار و در نتیجه محاسبه‌ی کمتر به بیشترین میزان تشخیص رسید.

  • روش آبشاری در کلاس‌بندی اشیا.

۲.۱. انتگرال تصویر [9]

ماتریس مجموع محیطی16 ساختمان داده و الگوریتمی برای محاسبه‌ی سریع و دقیق زیرمجموعه‌ای از یک ماتریس (برای مثال یک تصویر) که به شکل مستطیلی ظاهر می‌شود، است.

در ادبیات پردازش تصویر از این الگوریتم به عنوان انتگرال تصویر نیز یاد می‌شود.
همان‌طور که از نام تکنیک پیداست مقدار درایه‌ی (x, y) ماتریس مجموع محیطی برابرست با مجموع همه‌ی مقادیر بالا و چپ درایه‌ی (x, y) ماتریس اصلی.

I(x,y)=\sum_{{x}'<x{y}'<y}{i({x}',{y}')}</div>

علاوه بر این ماتریس مجموع محیطی به راحتی و با تکیه به این اصل که مقدار درایه‌ی (x,y) آن از طریق فرمول زیر بدست می‌آید، قابل محاسبه است.

I(x,y)=i(x,y) - I(x-1,y) + I(x,y-1) - I(x-1,y-1)

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

اگر فرض کنیم A=(x_0, y_1),B=(x_1, y_1),C=(x_1, y_0),D=(x_0, y_0) باشند، آنگاه:

\sum_{x_0<{x}'<x_1, y_0<{y}'<y_1}{i({x}',{y}')}={I(C)+I(A)-I(B)-I(D)}</div>

۲.۲. آدابوست [10]

آدابوست الگوریتم یادگیری ماشینی است که می‌تواند همراه با سایر الگوریتم‌های یادگیری برای افزایش کارایی آن‌ها به کار رود. آدابوست از مجموع وزن‌دار خروجی این الگوریتم‌های کلاس‌بندی[^17] که از آن‌ها به عنوان یادگیرنده‌ ضعیف17 یاد می‌شود، الگوریتم کلاس‌بندی قوی‌تری را ایجاد کند که برای مثال در این مسأله می‌توان با درصد بالایی از اطمینان قاب‌های مختلف تصویر را به دسته‌های چهره و غیرچهره تقسیم کند.

به طور کلی الگوریتم‌های بوستینگ)18 در گرد این سوال به وجود آمده‌اند که آیا با استفاده از چندین یادگیرنده‌ی ضعیف می‌توان به یک یادگیرنده‌ی قوی رسید؟ یک یادگیرنده‌ی ضعیف به این صورت تعریف می‌شود که فقط بتواند از حالت تصادفی عملکرد بهتری داشته باشد و یا به عبارت دیگر به حالت درست نزدیک‌تر باشد. در مقابل یادگیرنده‌های قوی به دسته‌ای از الگوریتم‌های کلاس‌بندی اطلاق می‌شود که همبستگی زیادی با حالت درست داشته باشند.

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

لینهارت و همکاران در [6] علاوه بر مشخصات مورد استفاده توسط وایولا و جونز در [2] که به شکل مستطیل هستند مشخصاتی دیگر که زاویه‌ی ۴۵ درجه دارند را با وام‌گیری از کارهای پاپاجورجو در [7] و [8] به جزییات این کار اضافه کردند که

آدابوست از این جهت مورد استفاده قرار می‌گیرد که می‌توان ترتیب یادگیرنده‌های ضعیف را به گونه‌ای تغییر دهد تا خطا در نمونه‌های کلاس‌بندی نشده19 به حداقل برسد. وقتی قدرت اصلی آدابوست مشخص می‌شود که از زیاد بودن ابعاد در بسیاری از مسایل حوزه‌ی هوش مصنوعی صحبت کنیم. برای مثال همان طور که در الگوریتم ارایه شده توسط وایولا و جونر استفاده شده است در یک قاب با ابعاد ۲۴x۲۴ بیش از ۱۶۲هزار مشخصه‌ی هار وجود دارد که بسیار بیشتر از ابعاد قاب می‌باشد. بر خلاف سایر روش‌ها، آدابوست آن مشخصه‌هایی را انتخاب می‌کند که قابلیت پیش‌بینی بیشتری را در اختیار ما قرار می‌دهند. در یک تصویر درصد بسیار بالایی را قاب‌هایی تشکیل می‌دهند که شامل هیچ چهره‌ای نیستند پس اگر بتوان الگوریتم کلاس‌بندی را ساخت که قادر به تشخیص این قاب‌ها با استفاده از محاسبه‌ی پایین باشد، می‌توان مقدار زیادی از محاسبات کم کرد به این صورت که آستانه‌20 الگوریتم را به اندازه‌ای پایین می‌آوریم تا به میزان تشخیص ۱۰۰٪ برسیم ولی از آن‌جایی که الگوریتم کلاس‌بندی ما فقط از یک یا دو مشخصه‌ی هار استفاده می‌کند میزان خطای مثبت بالایی نیز در انتظار ما خواهد بود. به همین ترتیب و با استفاده از مدل آبشاری الگوریتم کلاس‌بندی که در مرحله‌ی اول آبشار وجود دارد ساده‌ترین و با کمترین میزان محاسبه خواهد بود و هر چه به مراحل بعدی آبشار می‌رویم این الگوریتمها پیچیده‌تر می‌شوند و به مقدار بیشتری محاسبه نیاز دارند.

۲.۳. مدل آبشاری کلاس‌بندی اشیا

در مدل آبشاری که در [2] مورد استفاده واقع شده ۳۸ مرحله وجود دارد و بیش از ۶۰۰۰ عدد از مشخصه‌های هار مورد استفاده قرار می‌گیرد که در آن هر مرحله نسبت به مرحله قبل پیچیده‌تر و از لحاظ محاسباتی سنگین‌تر خواهد بود. تعداد مشخصه‌هایی که در ۵ مرحله‌ی اول مورد آزمایش قرار می‌گیرد به ترتیب ۱، ۱۰، ۲۵، ۲۵ و ۵۰ هست. در بقیه‌ی لایه‌ها به ترتیب این تعداد افزایش می‌یابد تا مجموع آن به بیش از ۶۰۰۰ عدد می‌رسد.

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

۳. مراجع

  • [1] D. A. Forsyth and J. Ponce, Computer Vision: A Modern Approach, 2nd ed. .

  • [2] P. Viola and M. Jones, “Rapid object detection using a boosted cascade of simple features,” Proc. 2001 IEEE Comput. Soc. Conf. Comput. Vis. Pattern Recognition. CVPR 2001, vol. 1, 2001.

  • [3] M.-H. Y. M.-H. Yang, D. J. Kriegman, and N. Ahuja, “Detecting faces in images: a survey,” IEEE Trans. Pattern Anal. Mach. Intell., vol. 24, no. 1, pp. 34–58, 2002.

  • [4] G. Yang and T. S. Huang, “Human Face Detection in Complex Background,” Pattern Recognition, vol. 27, no. 1, pp. 53-63, 1994.

  • [5] B. Scassellati,“Eye Finding via Face Detection for a Foevated, Active Vision System,” Proc. 15th Nat’l Conf. Artificial Intelligence, 1998.

  • [6] R. Lienhart, A. Kuranov, V. Pisarevsky, and M. R. L. T. Report, “Empirical Analysis of Detection Cascades of Boosted Classifiers for Rapid Object Detection,” 2002.

  • [7] A. Mohan, C. Papageorgiou, T. Poggio. Example-based object detection in images by components. IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 23, No. 4, pp. 349 -361, April 2001.

  • [8] C. Papageorgiou, M. Oren, and T. Poggio. A general framework for Object Detection. In International Conference on Computer Vision, 1998.

  • [9] Summed Area Table, http://en.wikipedia.org/wiki/Summed_area_table

  • [10] Adaboost, http://en.wikipedia.org/wiki/AdaBoost


  1. Pose

  2. Image orientation.

  3. Face localization.

  4. Window.

  5. Detection rate.

  6. False alarm.

  7. Positive alarm.

  8. Knowledge-based.

  9. Feature invariant.

  10. Template matching.

  11. Appearance-based.

  12. Integral image.

  13. AdaBoost.

  14. Haar features.

  15. classifier.

  16. Summed area table.

  17. Weak learner.

  18. Boosing.

  19. misclassified.

  20. Threshold.

مرتب نويسي به خوبي اعمال شده است كه اين نشان از وقت گذاشتن مناسب بر روي پروژه است.
در مراجع لينك مستقيم به سايت ويكيپديا وجود دارد.
در پروژه قسمتي تحت عنوان آزمايش ها وجود ندارد!
در كل خوب است

خوب بود ولی چرا با کلیک بر روی تغییرات، تغییراتی مشاهده نگردید!

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

تایید شده

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

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

  • "به جزییات این کار اضافه کردند که" جمله را ناقص رها کرده‌اید.

  • "کلاس‌بندی1 که" مارکدان ایراد دارد.

  • فرمول ها بد دیده می‌شوند.

  • الگوریتمی که بیان کردید بسیار زمان‌بر به نظر می‌رسد.(؟) در حالی که در بیشتر موارد تشخیص چهره‌، نیاز به سرعت بالای اجرا هست مثلا در کلاینت سمت وب یک شبکه اجتماعی مثل ف.ب . به عنوان پیشنهاد، سعی کنید یکی از الگوریتم ها را ساده سازی کنید تا روی پلتفرم هایی مثل گوشی یا کلاینت‌ساید یک صفحه وب با سرعت بالا اجرا بشوند.


  1. 17

محمد غضنفری

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

یاسر سوری

از اینکه در گزارش تغییر خاصی داده نشده است می‌توان فهمید که در این فاز هیچ کاری انجام نشده است.