بازشناسی تصویر چهره از مسائل شناسایی اشیاء

بازشناسی تصویر چهره از مسائل شناسایی اشیاء

بازشناسی تصویر چهره از مسائل شناسایی اشیاء  (Face Recognition)

مسئله شناسایی اشیاء یکی از مسائل جذاب در حوزه بینایی ماشین بشمار می آید و تلاش های زیادی از سوی محققین برای رسیدن به این هدف صورت گرفته است. مسئله بازشناسایی اشیاء (Object Recognition) از این بابت مهم است که تصویر ورودی مسئله شامل پیکسل ها و نواحی از یک پدیده است و اینکه این مجموعه پیکسل ها و نواحی چگونه ایجاد کننده و تداعی کننده یک شی می باشد مسئله سختی می باشد حال آنکه اگر قصد داشته باشیم آنها را دسته بندی هم بکنیم کار پیچیده تر می شود. یکی از روش های متداول برای تشخیص اشیاء استفاده از تکنیک های یادگیری با سرپرست (Supervised Learning) می باشد چنانکه در آن نمونه های زیادی از یک شی خاص را فراهم کرده و به الگوریتم مان می دهیم و به به الگوریتم می گوییم این شی مثلا A است سپس یک نمونه دیگر را که نمونه آزمایشی می نامیم به برنامه می دهیم و می خواهیم تا تصمیم بگیرد این نمونه شبیه نمونه های A است یا خیر؟

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

الگوریتم های زیادی وجود دارند که ویژگی های اشیاء را استخراج می کنند تشخیص دهنده های(Detectors) مقدماتی همچون Harris, DOG (Difference of Gaussian), LOG یا توصیف کننده های (Descriptors) قدرتمندی مانند SIFT, SURF, GLOH و HOG که هر کدام دارای ویژگی ها و مزایا و معایب خود می باشند و در اینجا از ذکر آنها خودداری می کنم. بنابراین انتخاب یک توصیف کننده به صورت مسئله وابستگی دارد مثلا هنگامی که می خواهیم کلیات یک شی بیشتر مدنظر قرار گیرد تحقیقات محققین نشان می دهد که توصیف کننده HOG نتایج مطلوب تری دارد.

پس از آنکه ویژگی های یک تصویر استخراج شدند باید این ویژگی ها را به یک الگوریتم یادگیرنده بدهیم منظورم این است که فرض کنیم تا اینجا الگوریتمی را نوشته ایم که به ما می گوید میوه مورد نظر گرد است، رنگ سرخ دارد، پوست نرم دارد و الی آخر (در اینجا چند نکته وجود دارد که بموقع درباره اش بحث می کنم).بنابراین الگوریتم یادگیرنده باید این ویژگی ها را بپذیرد و بر اساس آنها بعدا در خصوص یک ورودی جدید (میوه جدید) اظهار نظر کند، این بحث ما را به شاخه یادگیری ماشینی نزدیک می کند جاییکه در آن الگوریتم های بسیاری همچون Neural Network, Decision Tree, Lazy, Bayesian, Boosting, SVMو Random Forests برای این منظور طراحی شده اند.مسلما ما فرصت بررسی این یادگیرنده ها را نداریم و فقط قرار است در این نوشته اشاره مختصری به یک تجربه در بازشناسی چهره داشته باشیم و نیاز است خواننده اطلاعات لازم در خصوص یادگیرنده و توصیف کننده بکار رفته را داشته باشد.

نکته ای که در جمله بالا و در مثال ذکر شده (میوه) نهفته است این است که مثلا در نمونه های مختلف یک شی ویژگی ها یکسان نیستند مثلا سیب هم قرمز است و هم زرد و هم سبز! حال آنکه تشخیص مرز بین سبز و زرد خود یک مسئله بسیار جدی دیگر است! آنچه باید در خصوص این موضوع بگویم این است که مسلما اگر ویژگی ها یکسان بودند نیاز به الگوریتم یادگیرنده نبود و با تعدادی if-then کار را انجام می دادیم بنابراین هنر الگوریتم های یادگیرنده در این است که با وجود تعداد نامشخصی از ویژگی های برابر و نابرابر کار را انجام می دهد. ممکن است اینجا بگویید کافیست تعداد ویژگی ها را بشماریم و مثلا اگر تعداد ویژگی های درست بیشتر از نادرست بود آنوقت بگوییم آن دو شی مشابه هستند! این جمله غلطی نیست و در حقیقت مبنای روش های آماری نظیر Bayesian همین ایده است ولی به شکل بسیار زیباتر و علمی تر.

 

توصیف کننده HOG:

من برای مسئله شناسایی چهره از اوصسف کننده HOG و از یادگیرندهSVM استفاده کرده ام دلیلش هم به تجربیاتم از این دو الگوریتم باز می گردد چنانکه در بالا هم اشاره شد برای تشخیص ساختار یک شی (چهره)، توصیف کننده HOG مطلوب است چنانکه آقایان Navnnet Dalal, Bill. Triggs (ارائه کنندگانHOG) در گزارش های خود ارائه کرده اند گرادیان شی در تصویر مد نظر می باشد و حاصل چیزی شبیه هیستوگرام لبه ها در یک تصویر می باشد و در واقع این توصیف کننده تعداد تکرارهای گرادیان را در یک فیلتر (ماسک) می شمارد (معمولا 8*8) که از این بابت شبیه SIFT, SURF می باشد با این تفاوت که نسخه استاندارد آن1024 ویژگی از یک تصویر ایجاد می کند. تصویر زیر بخشی از کتاب Computer Vision آقای Sziliski می باشد که در همین وب سایت این کتاب را معرفی کرده ام، این تصویر نتیجه HOG را نشان می دهد.

 

تصویر1: معرفی و اجرای توصیف کننده HOG

 

تفکیک کننده SVM

SVM یکی از تفکیک کننده های بسیار موفق در یادگیری ماشینی می باشد و بطورکلی، SVM یک مدل یادگیری با سرپرست می باشد که به تجزیه و تحلیل داده ها می پردازد و سعی می کند الگوها را تشخیص دهد؛ SVM سعی می کند فاصله بین نقاط سخت یک مسئله را تا حد ممکن افزایش دهد به این معنی که خط مرزی را بین دو مجموعه تعیین کند که بیشترین فاصله بین آنها ایجاد شود همچنین باید بگویم منظور از نقاط سخت (Support vectors)، نقاط یا نمونه هایی از کلاس اول هستند که به کلاس دوم یا کلاس دیگر بسیار نزدیک می باشند در تصویر زیر این نقاط نشان داده شده اند.

تصویر2: شماتیک هدف SVM و توجه به نقاط سخت

 

هدف SVM پیدا کردن یک ابرصفحه (Hyperplane) جدا کننده است که بیشترین فاصله تا نقاط مرزی -همان نقاط سخت- (Support vectors) را داشته باشد.

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

 

نتیجه یک تحقیق:

با ابزارهای فوق، من مسئله بازشناسی چهره را ارزیابی کردم، چنانکه از دیتاست FERET که در پایگاه NIST (موسسه ملی تکنولوژی و استانداردهای آمریکا) موجود است استفاده شده و الگوریتم شناسایی چهره در این تجربه، تلفیقی از بکارگیری توصیف کننده HOG با تفکیک کننده SVM می باشد، تصویر زیر نتیجه روش ارائه شده می باشد که در آن 5 ردیف اول نمونه های آزمایشی مثبت (Positive) یا همان تصاویر چهره هستند و 5 ردیف دوم نمونه های آزمایشی منفی (Negative) یا تصاویر غیر چهره می باشند، کادر سبز دور تصاویر نشان می دهد تصویر بدرستی شناسایی شده و کادر قرمز نشان دهنده عدم موفقیت الگوریتم در تفکیک و شناسایی تصویر است.

 

تصویر3: نتایج بر روی دیتاست FERET

 

در دیتاست FERET، 2429 نمونه آموزشی مثبت (چهره) و 4548نمونه آموزشی منفی (غیرچهره) وجود دارد همچنین نمونه های آزمایشی این دیتاست شامل472 تصویر مثبت (چهره) و 23573 تصویر منفی (غیرچهره) می باشد اگر چه تعداد نمونه های تست مثبت و منفی در این دیتاست چندان متوازن نیست ولی می توانید خودتان تعدا متوازنی را انتخاب کنید مثلا 472 تصویر مثبت و منفی برای مرحله آزمایش، من از آن صرفنظر کردم و کل داده ها را لحاظ کردم (لحاظ شدن کل داده ها با این عدم توازن جالب نیست!) نتیجه برنامه من 95.3% تشخیص موفق و 4.7% عدم تشخیص صحیح بوده است. که جدول زیر نشان دهنده جزئیات این نتیجه می باشد.

جدول 1: نتیجه پیاده سازی SVM با HOG بر روی دیتاست FERET در تشخیص چهره


Home  |  about me  | Mahdi Jampour 2008 ©