مسئله تشخیص چهره یکی از قدیمیترین مسائل بینایی کامپیوتری بوده است که اکنون یکی از مسائل حل شده در بینایی کامپیوتری به حساب میآید. محصولات تجاری مختلفی مثل دوربینهای عکاسی، نرمافزارهای مدیریت عکس و شبکههای اجتماعی وجود دارند که از این سیستم استفاده میکنند.
در تشخیص چهره، شما عکسی را دریافت میکنید و در این عکس باید محدودهی چهرههای انسان که میبینید را توسط یک مستطیل مشخص کنید:
۱. مقدمه
تشخیص چهره1 و شناسایی چهره2 دو مبحث جدا هستند. در واقع برای شناسایی چهره، نیازمند به تشخیص چهره هستیم.
با توجه به اینکه انسان امروزی برای انجام کارهای خود نیازمند به شناسایی چهره است پس مبحث تشخیص چهره به یکی از مباحث مورد علاقه محققین تبدیل شده است.
این مبحث علاوه بر نیاز در شناسایی چهره ، در تمام جاهایی که آنالیز چهره صورت میگیرد نیز مورد نیاز است.[1]
۱.۱. تعریف مساله
تشخیص چهره یکی از مهمترین مراحل تشخیص هویت می باشد .اکثر الگوریتم های شناسایی چهره ، با فرض دانستن مکان چهره تصویر جلو میروند.[2]
هدف تشخیص چهره ، پیدا کردن تمام چهره ها بدون توجه به مکان ، اندازه ، چرخش ، روشنایی ، حالت چهره و ... است.اگر این اهدف محقق شوند شناسایی چهره به بهترین شکل ممکن قابل انجام خواهد بود.
روش های مختلفی برای رسیدن به اهدف تشخیص چهره وجود دارد و به دلیل پیچیدگی این مساله هر کدام از این روش ها فقط در زمینه های خاصی دقت کافی دارند و در بقیه زمینه ها ضعیف عمل میکنند. به عنوان مثال روشی که در آن مستقل از اندازه و چرخش چهره باشد حالت چهره باعث خطا در عملیات تشخیص می شود.[1]
ما میتوانیم روش های موجود برای عملیات تشخیص چهره را به دو دسته تقسیم کنیم.[1]
۱.۱.۱. روش های مبتنی بر عکس
در این روش ما یک مجموعه5 از عکس های مختلف چهره را طبقه بندی6 میکنیم و برای تشخیص چهره جدید از این طبقه بندی استفاده میکنیم. به عبارتی دیگر در این روش ما باید مثال هایی از چهره و مثال هایی از غیر چهره به مجموعه عکس های طبقه بندی شده بدهیم و باید از روی این عکس ها عمل یادگیری ماشین 7انجام شود. [3]
هدف اگوریتم ها و روش ها در تشخیص چهره ، داشتن سرعت بالا و دقت زیاد است و اکثر محققین از روش های یادگیری برای تشخیص چهره استفاده می کنند چون در برنامه های دنیای واقعی دارای زمان اجرا کمتر و اعتماد بالاتر می باشند.[4]
۱.۱.۲. روش های مبتنی بر ویژگی های چهره
در این روش از ویژگی های خاصی که در چهره انسان وجود دارد استفاده میکنیم و عملیات تشخیص چهره را انجام میدهیم به عنوان مثال هر چهره ای ، داری دو فرو رفتگی (چشم ها) است و چیزی شبیه به (^ ابرو ) روی این فرو رفتگی ها قرار دارد و ....[1]
۱.۲. کاربرد ها
مهم تربن کاربرد تشخیص چهره همان شناسایی چهره است که مبحث شناسایی چهره خود دارای کاربردهای فراوانی از جمله:
شناسایی مجرمین
تایید هویت دارنده کارت های شناسایی ، گواهینامه ، گذرنامه و کارت های اعتباری
کنترل نامحسوس و ایجاد امنیت در بانک ها ، فروشگاه ها ، فرودگاه ها و ...
کنترل ساعت ورود و خروج کارمند های شرکت
درب هایی که فقط با چهره انسان باز می شوند
تعیین جنسیت و سن و حالت چهره افراد
۱.۳. چالش های پیش رو
یکی از چالش های جدی که این مبحث با آن رو به رو است رسیدن به تمام اهداف تشخیص چهره می باشد. هنوز الگوریتمی ارایه نشده است که تمامی معیار های یک الگوریتم خوب را داشته باشد. هر الگوریتمی با بهتر کردن یک یا چند میعار ، معیار های دیگر را خراب میکند.
می توان به صورت موردی هم به چالش های پیش رو نگاه کرد:[5]
1.امکان ثابت نبودن بعضی از عناصر چهره مثل مو , عینک , ریش و ... می تواند فرآیند تشخیص را با مشکل مواجه کند.
2.یکسان نبودن نور در محیط های مختلف یکی از مهم ترین مشکلات تشخیص است.
3.تفاوت اندازه تصاویر ضبط شده و همچنین متفاوت بودن نسبت چهره به کل اندازه تصویر یکی از چالش های قبل از پردازش است.
4.متفاوت بودن زاویه چهره در تصاویر گرد آوری شده یکی از چالش های اجتناب ناپذیر است.
۲. کارهای مرتبط
این مقاله روش های تشخیص چهره مانند: Feature based - Template based - Knowledge based -Appearance based را بررسی میکند.[6]
این مقاله به بررسی روش تحت شبکه های عصبی پرداخته است دراین روش که مبتنی بر عکس است ، عکس را به تکه های مختلف تقسیم میکند و به دنبال چهره در آنها می گردد و در هر کدام از این تکه ها میتواند از شبکه های عصبی متفاوتی استفاده کند.[7]
در روش مبتنی بر عکس از دو مجوعه faceing , none facing استفاده می شود و چون مجوعه none facing خیلی بزرگ است و به دست آوردن این مجموعه تقریبا غیر ممکن است در این مقاله سعی بر روش SVM 8 است که با یک مجموعه کار میکند.[8]
این مقاله با استفاده از تکنیک عکس مجتمع9 باعث تسریع در عملیات تشخیص چهره شده است و دقت تشخیص را نیز بالا برده است.[9]
۳. آزمایشها و بهبود نتایج
تشخیص چهره با HFB 10یک روش موثر می باشد که در آن از تکنیک های یادگیری استفاده می شود. یادگیری بر اساس دو مجموعه عکس های چهره 11و عکس های غیر چهره 12انجام می شود.[11]
یکی از کتابخانه های معروف که کار پردازش روی تصویر را انجام می دهند OpenCV می باشد باکمک این کتابخانه میتوان از الگوریتم HFB استفاده کرد.
ویژگی HFB ها به سه دسته تقسیم می شوند که شکل زیر بیانگر آن می باشد.[11]
در این روش تصویر به بلاک هایی تقسیم می شود و در هر یک از این بلاک ها وجود یا عدم وجود چهره بررسی می شود.[10]
الگوریتم تشخیص چهره در فیلم های Real Time به سرعت بالا نیاز دارد پس باید عملیات تشخیص چهره به صورت کارا باشد.[12]
برای سرعت بخشیدن به الگوریتم بالا ، فرآیند بررسی چهره بودن را به صورت مرحله به مرحله انجام می دهیم . یعنی به صورت کامل هر بلاک را بررسی نمی کنیم و در مرحله اول ممکن است بلاک مورد نظر رد شود.[10]
یکی از راه های ساده برای رد کردن بلاک، استفاده از ویژگی های ساختاری چهره(دماغ -لب -چشم و... ) است.
با در نظر گرفتن بلاک های 24*24 ، ما باید 6000 ویژگی را در نظر بگیریم و چهره بودن هر یک از آنها را بررسی کنیم ولی ما می دانیم که اکثر بلاک ها چهره نیستند پس به دنبال چهره نبودن یا رد بلاک می گردیم تا سرعت الگوریتم بالا برود.
برای بهتر فهمیدن فرآیند مرحله به مرحله این الگوریتم ، می توان به ویدیوی زیر دقت نمود.( متاسفانه ویدیو فیلتر شده است و با فیلترشکن ببینید)
<center> <iframe src="https://player.vimeo.com/video/12774628" width="500" height="476" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe> </center>یک راه دیگر برای سرعت بخشیدن به الگوریتم استفاده از تکنیک عکس مجتمع است.[9] به این صورت که به جای ذخیره کردن هر پیکسل تصویر ، مجموع پیکسل های بالا و سمت راست را ذخیره می کنیم. و با این کار محاسبات جمع در تکنیک عکس مجتمع ، کاهش می یابد.شکل های زیر نماینگر این عمل هستند.[10][11][12]
اگر تصویر اصلی را با i نمایش دهیم مقدار هر پیکسل در مکان (x,y) برابر با (i(x,y خواهد بود.
اگر تصویر مجتمع را با 13ii نمایش دهیم مقدار هر پیکسل در مکان (x,y) برابر با (ii(x,y خواهد بود.
پس مقدار (ii(x,y از طریق فرمول زیر به دست خواهد آمد.
۳.۱. پیاده سازی
برای پیاده سازی از زبان پایتون استفاده شده است و با کمک کتابخانه OpenCV الگوریتم را پیاده سازی می کنیم.
در الگوریتم برای تشخیص چهره ، از دو مجموعه عکس چهره و غیر چهره استفاده شده است که با تغییر دادن این دو مجموع می توان درصد صحت عملکرد الگوریتم را تغییر داد .
از طریق این دو مجموعه مذکور یادگیری انجام می شود و یک فایل xml برای تشخیص چهره تولید می شود و در پیاده سازی از این xml استفاده می کنیم.
در پایان چهره های پیدا شده را در یک چند ضلعی قرار می دهیم.
کد را میتوانیم در اینجا ببینیم.
با توجه به سرعت بالای کد میتوان تشخیص چهره در وب کم را نیز انجام داد.
کد مربوط به تشخیص چهره در وب کم از اینجا قابل مشاهده است.
۳.۱.۱. نتیجه مناسب
۳.۱.۲. نتیجه نامناسب
۴. کارهای آینده
یکی از کارهایی که می تواند به این مقاله کمک فراوانی کند پیدا کردن بهترین مجموعه چهره و مجموعه غیر چهره و استفاده از آن در الگویتم می باشد. چون صحت نتایج به دست آمده به مجموعه داده شده به الگویتم مرتبط است.
۴.۱. سوالات به وجود آمده
تعداد عضو این مجموعه ها چه مقدار باشد؟
آیا با افزایش عضو های این مجموعه ها نتایج بهبود می یابد؟
نسبت عضو های مجموعه چهره به مجموعه غیر چهره چه مقدار باشد؟
آیا الگوریتم ما تصاویر با عینک و اشیای خارجی را هم تشخیص می دهد؟
جواب هر کدام از سوالات بالا می تواند یکی از کارهای آینده باشند.
۵. مراجع
[1]Talele, K. T., and Sunil Kadam. "Face detection and geometric face normalization." TENCON 2009-2009 IEEE Region 10 Conference. IEEE, 2009.
[2] Hsu, Rein-Lien, Mohamed Abdel-Mottaleb, and Anil K. Jain. "Face detection in color images."Pattern Analysis and Machine Intelligence, IEEE Transactions on 24.5 (2002):696-706.
[3]Lang, Liying, and Weiwei Gu. "Study of face detection algorithm for real-time face detection system." Electronic Commerce and Security, 2009. ISECS'09. Second International Symposium on. Vol. 2. IEEE, 2009.
[4]Zakaria, Zulhadi, and Shahrel Suandi. "Face detection using combination of Neural Network and Adaboost." TENCON 2011-2011 IEEE Region 10 Conference. IEEE, 2011.
[5]محمد آگاه " احراز هویت بر اساس چهره" 2014
[6]Sharifara, Ali, et al. "A general review of human face detection including a study of neural networks and Haar feature-based cascade classifier in face detection." Biometrics and Security Technologies (ISBAST), 2014 International Symposium on. IEEE, 2014.
[7]Rowley, Henry, Shumeet Baluja, and Takeo Kanade. "Neural network-based face detection." Pattern Analysis and Machine Intelligence, IEEE Transactions on 20.1 (1998): 23-38.
[8]Jin, Hongliang, Qingshan Liu, and Hanqing Lu. "Face detection using one-class-based support vectors." Automatic Face and Gesture Recognition, 2004. Proceedings. Sixth IEEE International Conference on. IEEE, 2004.
[9]Viola, Paul, and Michael J. Jones. "Robust real-time face detection."International journal of computer vision 57.2 (2004): 137-154.
[10]Viola, Paul, and Michael Jones. "Rapid object detection using a boosted cascade of simple features." Computer Vision and Pattern Recognition, 2001. CVPR 2001. Proceedings of the 2001 IEEE Computer Society Conference on. Vol. 1. IEEE, 2001.
[11]Guennouni, Souhail, Ali Ahaitouf, and Anass MANSOURI. "A Comparative Study of Multiple Object Detection using Haar-like Feature Selection and Local Binary Patterns in Several Platforms."
[12]Commin, Harry. "Robust Real-time Extraction of Fiducial Facial Feature Points using Haar-like Features." arXiv preprint arXiv:1505.04286 (2015).
پیوندهای مفید
face detection
face recegnization
image based
feature based
data set
classifier
machine learning
Support Vector Machines
Integral Image
Haar feature-based
positive images
negative images
IntegralImage