تشخیص چهره با الگوریتم ویولا جونز Viola-Jones algorithm در متلب
تشخیص چهره با الگوریتم ویولا جونز Viola-Jones algorithm در متلب : پروژه متلب
پروژه متلب : ابتدا از روشی که Paul Viola و Mishael Jones در سال ۲۰۰۱ و ۲۰۰۴ میلادی منتشر کرده اند ، و معمولا به صورت ساده Viola_Jones method خوانده میشود، استفاده می شود. سپس با ارزیابی این روش در عمل نقاط ضعف آن را کشف کرده و آنها را حتی الامکان برطرف نمایم. در این روش از ۴ عنصر کلیدی استفاده میشود: ویژگیهای (Feature های) مستطیلی ساده که ویژگیهای هار (Haar Features ) نامیده میشوند.
پروژه متلب : تصاویر مجتمع (integral images) برای ارزیابی سریع Feature ها روش یادگیری ماشین Ada boost برای انتخاب Feature ها یک دسته بند آبشاری برای رد کردن سریع non-face window ها برای انجام face detection اولین چیزی که احتیاج داریم یک پایگاه داده از تصاویر است که هم شامل چهره های انسانی و هم چیزهای دیگر باشد. از پایگاه تصاویر موجود در اینترنت میتوان بدین منظور استفاده کرد. علاوه بر آن، تصاویر دیگری هم که خودمان تهیه خواهیم کرد برای ارزیابی سیستم مورد استفاده قرار خواهد گرفت. ویولا و جونز برای اینکه تشخیص دهند از بین صدها نوع Haar Features کدامها در هر تصویر وجود دارند، از تکنیکی که تصاویر مجتمع یا تصاویر انتگرال ( integral images) خوانده میشود استفاده کردند.
پروژه متلب : ویولا و جونز برای انتخاب کردن یک Haar Feature خاص برای استفاده کردن ,از متدی در machine learning که Adaboost خوانده میشود ,استفاده کردند. روش Adaboost برای ساختن یک دسته بند قوی ( (strong classifier ,تعداد زیادی دسته بند ضعیف (weak classifier ) را با هم ترکیب میکند. ویولا وجونز یک سری از Adaboost classifier ها را به عنوان یک زنجیره فیلتری با هم ترکیب کردند. هر فیلتر یک Adaboost classifier مجزا است که از تعداد کمی weak classifier تشکیل شده است. اگر هر کدام از این فیلترها در قبول کردن ناحیه ای از تصویر به عنوان چهره شکست بخورد,آن ناحیه فورا به not_face دسته بندی میشود. وقتی یک فیلتر یک ناحیه از تصویر را به عنوان چهره قبول کرد, ناحیه موردنظر وارد فیلتر بعدی در زنجیره میشود.
پروژه متلب : در صورتی که ناحیه موردنظر از تصویر همه فیلترهای زنجیره را با موفقیت پشت سر گذاشت به عنوان face دسته بندی میشود. آشکارساز چهره ویولا و جونز اولین چارچوب تشخیص چهره را در سال ۲۰۰۱ ارائه دادند که با سرعت بالایی موفق به تشخیص چهره می شد. آشکار ساز ویولا و جونز هر زیرپنجره را با استفاده از مستطیلهای که شامل دو قسمت یا بیشتر می باشد مورد آنالیز قرار می دهد سه هدف در این آشکار ساز: محاسبات سریع ویژگی ها انتخاب ویژگی ها زمان انجام مناسب در اجرای برنامه این سه هدف را با سه ایده انجام دادند:
ادامه شرح عناصر مختلف الگوریتم
در بخش اول به معرفی دو عنصر از عناصر چهارگانه الگوریتم Viola Jones پرداختیم که نحوه انتخاب ویژگی ها و الگوریتم تسریع این انتخاب ها را شامل میشد. حال در این بخش به ادامه این روند خواهیم پرداخت و دو بخش دیگر این الگوریتم را از منظر تئوری بررسی خواهیم کرد:
۳ – تصویر یکپارچه (Integral Image)
تصویر یکپارچه، یا جدول محدوده مجتمع (Summed area table)، به منظور ارزيابی سريع تر Feature ها (که در بخش اولی معرفی شد) استفاده میشود.همانطور که در تصویر زیر میبینید، در یک تصویر یکپارچه مقدار پیکسل در مکان x,y برابر است با جمع مقادیر پیکسل های بالا و چپ پیکسل x,y.
به عنوان مثال در مستطیل زیر مجموع پیکسل ها در داخل مستطیل D می تواند با چهار ارجاع ارزیابی شود.
مقدار تصویر یکپارچه در محل ۱ برابر است با مجموع پیکسل ها در مستطیل A. مقدار در مکان ۲ برابر است با A + B، در مکان ۳ A + C و در مکان ۴ A + B + C + D. مجموع در داخل D می تواند به صورت (۳+۲) ـ (۱+۴) محاسبه شود.
۴ – Cascading (مراحل آبشاری)
در هر پنجره ۲۴ در ۲۴ پیکسلی ما نیاز به پردازش ۲۵۰۰ ویژگی داریم که از اجرای الگوریتم Adaboost به دست می آید. تصور کنید که شما یک تصویر با ابعاد ۶۴۰ در ۴۸۰ دارید، شما نیاز دارید تا این ابعاد را به مربع های ۲۴ در ۲۴ پیکسلی تقسیم کرده و با پردازش هر بخش (در نظر داشته باشید که هر مربع ۲۵۰۰ پردازش لازم دارد) تشخیص دهید که آیا چهره ای در تصویر وجود دارد یا خیر. اینجاست که Cascading وارد شده و به ما این امکان را میدهد که این پروسه را سریعتر و مفیدتر انجام دهیم. در این روش ما ۲۵۰۰ ویژگی هر مربع ۲۴ در ۲۴ را به دسته بندی های مختلف تقسیم می کنیم. بدین گونه که به عنوان مثال ۱۰ ویژگی در دسته بندی اولی، ۲۰ ویژگی در دسته بندی دوم، ۱۰۰ ویژگی در دسته بندی سوم و ..
با استفاده از این روش ما می توانیم بعد از پردازش هر دسته بندی حدسیات خود را در ارتباط با وجود یا عدم وجود چهره در آن دسته بندی اعلام کنیم. با این روش ما میتوانیم زودتر بخش هایی که اطمینان داریم بخشی از صورت در آن وجود ندارد را حذف کنیم.
خروجی متلب :
دیدگاه ها