مقدمه
یادگیری ماشینی ، قسمتی از علوم رایانه است که اغلب در ارتباط با بهبود الگوریتم هایی است که هدف نهایی آنها ایجاب کردن ماشین ها به یادگیری بدون دخالت انسان است . بنا به این قابلیت یادگیری ، ماشین ها می توانند که برخی از این وظایف را به صورت خودکار انجام دهند . همچون محاسبه ی پیشبینی های دقیق ، روش های درمانی پیشنهادی برای بیمار ها ، تشخیص حالت چهره ی انسان ها و ...
برای ابزار حالت چهره ، حالات بسیار گوناگون و متفاوتی وجود دارد . اما مهم ترین راه در بین همه ، شناسایی و تشخیص حالت چهره است . تحقیقات اخیر و همچنین علوم ارتباطات و مذاکره ، به صراحت بیان کرده است شناسایی نحوه ی رفتار ظاهری و حالت چهره ( زبان بدن ) از جمله مهم ترین راه های ارتباطی غیر زبانی است که تاثیرات غیر قابل اغماضی به همراه دارد .
همچنین تشخیص چهره این اقبال را دارد تا به عنوان جزیی کلیدی و تاثیرگذار در تعاملات انسان – ماشین باشد و در علوم مختلف مورد استفاده قرار گیرد .
کاربرد تشخیص چهره در بسیاری از بخش ها قابل مشاهده می باشد:
برای مثال در عکاسی برای فوکوس روی تصاویر و یا در بازیابی چهره به واسطه تطبیق با داده های databaseو یا روندی که در آن حرکت چهره به صورت الکترونیکی با کمک اسکنرهاییبه یک داده تبدیل می شود که پایه ی کاری برخی انیمیشن ها می باشد.
و یا در بازشناخت تصویر یک چهره، تصویر ورودی با توجه به اطلاعات موجود در بانک اطلاعات، مورد شناسایی قرار میگیرد. این بانک شامل مشخصاتی از تصویر چهره افراد شناسایی شدهاست.
و در حوزه ی پزشکی گروهی از محققان اخیراً با استفاده از تکنولوژی تشخیص چهره، که به صورت رایج برای احراز هویت کاربرد دارد به دستاورد مهمی رسیده اند. تیم انستیتوی ملی تحقیقات ژنوم انسانی، موفق به توسعه متود تشخیص چهره ای شده که می تواند بیماری ژنتیکی نادری به نام [سندرم دی جرج] را شناسایی کند. این سندرم که با اختلالی در کروموزمم 22 به وجود می آید، می تواند پیچیدگی هایی برای پزشکان به وجود آورد که شناسایی آن را در بیمار دشوار می سازد.
اگرچه استفاده مداوم از این تکنولوژی تازه ممکن است به این زودی ها عملی نشود، محققان می خواهند که گام را فراتر برده و آن را به دست سازمان های پزشکی سراسر جهان برسانند. شاید یک روز پرشکان بتوانند تصاویر بیمار را در موبایل خود دریافت کرده و به کمک سیستم تشخیص چهره، بیماری را شناسایی کنند.
بازشناسی چهره استفادههای فراوانی در شناسایی بزهکاران، کارتهای اعتباری، سیستمهای امنیتی و موارد متعدد دیگر داشته و به دلیل کاربردهای فراوان، در سالهای اخیر، مورد توجه قرارگرفته است مانند: حوزه بانکی و پرداخت امنیت اطلاعات اجرا و نظارت بر قانون حوزه فروش و تجارت (ورودی فروشگاهها: افزایش فروش ۳۰ درصدی با بازشدن در ورودی با بازشناسی چهره افراد) یکی از کاربردهای مهم این سیستم در شبکه بانکی کشور میباشد که در بخشهای مختلف میتوان راهکارهای مختلفی با سیستم تصدیق هویت از روی چهره انجام داد از جمله: با تشخیص وجود چهره در دوربین VTMو ATM
کارهای مرتبط
برای حل کردن مساله ی پیدا کردن چهره در تصویر الگوریتم های زیادی وجود دارند که در این بخش به رایج ترین و معروف ترین آن ها اشاره می کنیم :
می توان به «پیدا کردن تصاویر در پس زمینه ی کنترل شده » اشاره کرد که بدین صورت خواهد بود که زمینه ی پشت به صورت رنگی ساده خواهد بود که با حذف آن فقط چهره باقی خواهد ماند.
اگر تصویر داده شده رنگی باشد، می توان از رنگ پوست معمولی برای پیدا کردن بخش های صورت استفاده کرد.ولی اشکال عمده ی این الگوریتم آن است که با تمام رنگ های پوست کار نمی کند و در شرایط نور دهی متنوع خیلی قوی نیست.
به این صورت که با فیلتری برای پوست(رنگ و بافت) بخش های مختلف پوست تشخیص داده می شود و تشخیص چهره بر اساس یک رنگ بندی تصویر سیاه و سفید انجام خواهد شد.
در پیدا کردن چهره در حرکت فقط کافی است مکان های در حال حرکت را محاسبه کنیم تا چهره را تشخیص دهیم.
ولی اگر اشیا دیگر در تصویر باشد چه پیش خواهد آمد؟؟روش دیگر تشخیص پلک زدن است. چند عکس پشت هم گرفته می شود و از هم کم می شود تا در نهایت ناحیه ی چشم تشخیص داده شود.
از راه حل های دیگر برای این مساله میتوان «روش های بدون محدودیت » را شمرد . که برخی مبتنی بر شناسایی هندسی یا لبه هاست که در تصاویر سیاه و سفید می تواند مورد استفاده قرار گیرد.
۱. مبتنی بر لبه :
این روش نیز مبتنی بر لبه است و روی عکس های سیاه و سفید کار می کند. یک متریک بین دو مجموعه نقطه برای پیدا کردن چهره یا کلا اشیا در تصویر به کار می رود.
۲. طبقه بندی آبشاری :
ردیابی چهره بر اساس طبقه بندی آبشاری نیز می تواند صورت گیرد؛ که این روش قدرت تشخیص بالا و خطاهای کمی دارد.
راه حل ارائه شده :
برای تشخیص چهره از ۲ طبقه بندی haar و lbp استفاده شده است .
طبقه بندی HAAR :
در این قسمت الگوریتم Viola & Jones که مبتنی بر ویژگی های Haar است پیاده سازی و آزمایش می شود. برای این کار از کتابخانه ی openCV که برای بینایی کامپیوتر است استفاده کرده ایم .
ویژگی های هار (Haar)
شکل ۱
ویژگی ها در واقع مستطیل هایی هستند که نشان دهنده بخش های مختلف صورت میباشد و بر روی عکس ها با روند تکراری قرار میگیرند.
همانطور که در عکس بالا مشاهده می کنید، هر مستطیل با قرار گرفتن در بخش های مختلف صورت در طی مراحل متعدد با سایز های مختلف شروع به محاسبه می کند و نتیجه آخر از کم کردن پیکسل های زیر بخش های سیاه از جمع پیکسل های زیر نقاط سفید به دست می آید که یک عدد میباشد.
الگوریتمViola Jonesاز یک پنجره ۲۴در ۲۴برای طی این مراحل و قرار دادن مستطیل ها بر روی صورت استفاده می کند که با در نظر گرفتن تعداد و سایز های مختلف این ویژگی ها (مستطیل ها) با یک حساب سرانگشتی به این نتیجه میرسیم که برای محاسبه نتیجه نهایی برای هر یک از این پنجره های ۲۴در ۲۴ما نیازمند انجام ۱۶۰+ هزار محاسبه داریم که منطقا تعداد بالایی است و هزینه و زمان زیادی از ما را برای هر عکس خواهد گرفت.
پیاده سازی و آزمایش:
توضیحات کد:
برای پیاده سازی از طبقه بندی Face Cascade برای تشخیص چهره ها که قبلا تعلیم داده شده در OpenCVاز استفاده می کنیم.
ابتدا عکس گرفته شده از کاربر را سیاه و سفید می کند ( در کد زیر مشاهده شود)، زیرا که عکس باید سیاه و سفید باشد تا ناحیه های روشن تر و تاریک تر مشخص شوند که بتوان ویژگی های Haarرا روی آن اجرا کرد.
شکل ۳
کد زیر مربوط به پیدا کردن چهره ها می باشد:
شکل ۴
با استفاده از تابعdetectMultiScale چهره ها را پیدا می کند و در یک لیستی از لیست ها که در هر کدام از آن ها(x, y, w, h) وجود دارند کهx عرض چپ ترین و بالاترین نقطه ی چهره ی یافت شده استy نیز طول همان نقطه است وh, w نیز ابعاد صورت یافت شده اند. (مبدا مختصات بالا ترین و چپ ترین نقطه ی عکس می باشد)
حال بااستفاده از مختصات چهره ها که به دست آورده ایم ، می توانیم کادری اطراف چهره های به دست آمده بکشیم:
شکل ۵
داده های مورد استفاده برای آزمایش**:**
برای آزمایش چند عکس مختلف که با دوربین های متفاوت از افراد در فاصله های مختلف عکس گرفتند، استفاده می کنیم تا کد را در شرایط متفاوت آزمایش کنیم و کارایی آن را بسنجیم. حدود ۱۲ عکس برای آزمایش به کار برده شده ، که در زیر نمونه هایی از عکس های مورد آزمایش آورده شده:
نمونه ی دوم چالش بیشتری برای کد ایجاد می کند چون چند چهره در پیش زمینه قرار دارند ودارای زوایا و رنگ چهره های گوناگون و تاری می باشند .
برای آزمایش سعی کرده ایم انواع عکس ها را امتحان کنیم تا مشخص شود الگوریتم در شرایط گوناگون چگونه عمل می کند.
نتایج آزمایش**:**
داده های داده شده را آزمایش کرده ایم . توجه داشته باشید برای اجرا شدن برنامه باید آن را در Terminal یا Command Prompt اجرا کرد واز عکس به عنوان آرگومان برنامه استفاده کرده ایم .
همانطور که مشاهده میکنید همه ی چهره ها به خوبی و با دقت کامل ۱۰۰٪ تشخیص داده شده اند . علت این امر میتواند وضوح تصویر بالا ، مشخص بودن و متمایز بودن چهره ها ،فاصله ی یکسان از دوربین ، زاویه ی آنها نسبت به دوربین ، پس زمینه ی ساده و روشن و ... باشد .
حال به سراغ نمونه ی بعدی رفته و عملکرد الگوریتم را با چالش های بیشتری که این تصویر دارد ، آزمایش میکنیم :
نمونه دوم
این بار در ۱۰ چهره ی موجود در عکس ۶ چهره را به درستی تشخیص داد .یکی از دلایل این اشتباه فاصله زیاد چهره ها از دوربین است که اگر مقیاس Scale Factor آن را تغییر دهیم این اشتباه درست می شود. دلیل تشخیص ندادن برخی چهره ها هم به دلیل بیش از حد تار بودن و زاویه ی بد صورت است و به همین ترتیب باقی عکس ها را آزمایش کرده و درمیابیم که با استفاده از ویژگی های haar، میتوان با تقریب نسبتا خوبی چهره های موجود در تصاویر را شناسایی کرد البته با چالشی مواجه شدیم که در تصویر زیر مشاهده می کنید :
نمونه ی سوم
همانطور که در این تصویر میبینید ، با استفاده از ویژگی های HAAR ممکن است برنامه دچار خطا شده و برخی چهره ها مشخص کند که چهره نباشد و همینطور چهره هایی که نیمه هستند را نمیتواند تشخیص داده و ویژگی های haar را پیاده سازی کند .
حال به سراغ طبقه بندی دیگری میرویم :
طبقه بندی**LBP**:
حالت صورت اشخاص نقش مهمی را در روابط اجتماعی بازی می کند. بازشناسی حالت چهره به صورت اتوماتیک، یک فرآیند بسیار پیچیده و دشوار است زیرا این فرآیند، بسیار تحت تاثیر تغییرات روشنایی محیط و نوع چهره است. علاوه براین شباهت بین حالات مختلف باعث تشخیص اشتباه حالات چهره میشود. برای مثال چون در هر دو حالات خوشحالی و تعجب، دهان شخص باز است، امکان دارد این دو حالات به اشتباه به جای یکدیگر تشخیص داده شوند. LBP به دلیل ثابت بودن نسبت به تغییرات روشنایی، یک توصیف گر خوب برای شناسایی حالت چهره در شرایط روشنایی متغیر است. VLBP وLBP-TOP دو روشLBP توسعه یافته هستند که بطور گسترده به منظور ترکیب ویژگی های بر مبنای ظاهر و حرکت به کار می روند. از آنجا که برخی نواحی چهره مانند چشم ها، دهان و غیره، به علت تغییر زیاد تاثیر بیشتری در تعیین حالت چهره دارند، ما این نواحی را استخراج کرده و متناسب با اهمیت و تاثیر هر ناحیه در تعیین حالت چهره، یک وزن برای آن در نظر گرفته ایم.
الگوی LBPاز تصاویر مقیاس خاکستری به منظور استخراج اطلاعات ترکیبی بافتی نقاط همسایه و همجوار مکانی استفاده می کند . رابطه ی دودویی بین هر کدام از پیکسل ها نقاط همجوار مکانی با استفاده از LBP محاسبه می شود . کد ها ی LBP بنا به قوانین معین ، کدگذاری میشوند و در ادامه مشخصات تصاویر توالی هیستوگرام وزن دهی می شوند .
نحوه ی پارتیشن بندی چهره
LBP در ابتدا تصویر را پارتیشن بندی میکند و به پیکسل مرکزی هر بلوک ( یک پنجره ی 33) نگاه می کند سپس پیکسل مرکزی را با پیکسل های همسایه در
همان پنجره ی ۳۳مقایسه می کند. برای پیکسل های همسایه ای که مقدارشان بزرگتر مساوی پیکسل مرکزی است مقدارش را برابر یک قرار می دهد و مقدار بقیه را صفر. سپس ساعتگرد ، عدد های صفر و یک به دست آمده را کنار هم قرار داده و یک عدد باینری میسازد . در ادامه این عدد را به عدد دهدهی تبدیل نموده واین عدد مقدار جدید به دست آمده برای هر بلوک است این روند را ادامه میدهد .
شکل ۶
سپس مقدار هر بلوک را به یک هیستوگرام تبدیل می کند پس یک هیستوگرام برای هر بلوک داریم، مانند شکل زیر:
تبدیل به هیستوگرام
و درانتها این هیستوگرام ها را به هم پیوند زده و یک بردار ویژگی برای آن تصویر درست می کند که تمام ویژگی های مورد نیازرا داراست.
توضیحات کد**:**
همانندHaar Cascade ازOpenCV وpython 2.7 استفاده می کنیم، و تنها تفاوت آن باHaar این است که به جایHaar Classifier باید ازLBP Classifier استفاده کرده ایم . باقی قشمت ها مشابه یکدیگر اند و عینا تکرار شده است .
حال میاییم عکس های استفاده شده در قسمت قبل را با LBPمورد بررسی قرار می دهیم .
نمونه دوم با استفاده از ال بی پی
همان طور که مشاهده می شود LBP از دقت کمتری برخوردار بود. اما نکته ایی که در عکس های دیگر به آن برخوردیم ، LBPبه نسبت HAAR تعداد خطای کمتری در تشخیص اشیا به جای چهره داشت و این امر را میتوان از مزایای این طبقه بندی شمرد . از طرفی زمان اجرای آن نیز کوتاه تر بود که این خود امری مورد توجه به چشم می آید .
حال اگر بخواهیم به طور کلی و با توجه به آزمایشاتمان به مقایسه ی این دو طبقه بندی بپردازیم ، نتایج زیر به دست می آید :
مقایسه ی Haar و LBP :
مزایای Haar
دقت در تشخیص بالا
معایب Haar
از لحاظ محاسباتی کند
زمان آموزش طولانی
در شرایط نوردهی سخت محدود
ضعیف در تشخیص چهره های جفت شده
مزایای LBP
از لحاظ محاسباتی ساده و سریع
زمان آموزش کوتاه تر
قوی در تشخیص چهره های جفت شده
معایب LBP
دقت کم
با این توصیفات از HAARدر مواردی که به دقت بالا نیاز است استفاده میشود . سیستم های امنیتی مثال خوبی برای کاربرد این طبقه بندی به شمار می آید .
اما اگر سرعت مهم باشد باید از LBP استفاده کنیم؛ در برنامه هایی همچون mobile applications یا embedded systemها .
چالش ها و بهبود عملکرد :
در هر دو الگوریتم Haar و LBP دو عامل در در پیدا کردن چهره مؤثرند:
minNeighbours_scaleFactor
با آزمون و خطا دریافتیم که با تغییردادن مقدار این دو عامل می توان نتایج بهتر و دقیق تریبه دست آورد . scaleFactor برای مشخص کردن مقیاس عکس به کار می رود یعنی نشان می دهد که در چه مقیاسی باید چهره ها را تشخیص دهد. درتمام آزمایشاتمان scaleFactorثابت بود . با تغییر آن پی بردیم که نتایج به طور چشم گیری بهبود یافتند . سپس دوباره آنرا ثابت قرار دادیم و این تغییرات را برای فاکتور minNeighboursپیاده کردیم . دوباره به بهبود رسیدیم . و در انتها دریافتیم که با تغییر همزمان هر دو فاکتور بیشترین بهبود را خواهیم داشت و دقت تشخیص چهره ها بسیار بالا رفت . البته با چالش دیگری مواجه شدیم که با این تغییرات ، تعداد اشیای غیری که به عنوان چهره شناخته شد نیز افزایش یافت که در آینده برروی بهبود این عامل مطالعه و آزمایش خواهیم کرد .
کارهای آینده :
در روند بهبود با چالش دیگری مواجه شدیم که با این تغییرات ، تعداد اشیای غیری که به عنوان چهره شناخته شد نیز افزایش یافت که در آینده برروی بهبود این عامل مطالعه و آزمایش خواهیم کرد .
منابع :
[1]Tereza Soukupova ́and JanCech. "Real-Time Eye Blink Detection using Facial Landmarks". Czech Technical University in Prague.[2]T. Darrell, G. Gordon, M. Harville and J. Woodfill. "Integrated person tracking using stereo, color, and pattern detection".[3]Bernhard Fröba, Christian Külbeck. "Real-Time Face Detection Using Edge-Orientation Matching".[4]Oliver Jesorsky, Klaus J. Kirchberg, and Robert W. Frischholz. "Robust Face Detection Using the Hausdorff Distance".Third International Conference on Audio- and Video-based Biometric Person Authentication.[5]Paul Viola and Michael J. Jones. "Robust Real-Time Face Detection".
تشخیص چهره در پزشکی
تشخیص حالت چهره در دنیای واقعی تصاویر صورت با استفاده از روش های هوشمند
آشکارسازی چهره با الهام از مغز
پیوند ها :