
تشخیص چهره همواره یکی از موضوعات مورد مطالعه در علوم کامپیوتر بوده است. هدف آن این است که شما عکسی به کامپیوتر بدهید و او تشخیص دهد که آیا چهره ای در عکس مشاهده میکند یا خیر. اگرچه این کار برای انسان کار ساده ای به نظر میرسد اما برای کامپیوتر ها همیشه با چالش همراه بوده.این سختی می تواند توسط تفاوت عکس ها در مقیاس، محل، نقطه نظر، نور، انسداد و .. بوجود آید. با اینکه تا به امروز صد ها الگوریتم برای تشخیص چهره به کار گرفته شده اما اگر بخواهیم یکی از دقیق ترین و سریع ترین الگوریتم های دهه اخیر را نام ببریم، این الگوریتم Viola Jones خواهد بود.
این الگوریتم در سال های 2001 و 2004 به کمک دو شخص به نام های Paul Viola و Michael Jone منتشر شد که از 4 عنصر Haar Features ، Integral Images ، Ada boost و Cascading تشکیل میشود.
ما در این مقاله سعی خواهیم کرد مقدمه ای از این الگوریتم را با معرفی بخش های مختلف آن برای شما توضیح دهیم.
در هنگام خواهند مقاله با ویدیو های کوتاه پیشنهادی از طرف ما روبرو خواهید شد که پیشنهاد میکنیم فرصت را از دست نداده و همان موقع به مشاهده آن بپردازید.
مشاهده این سخنرانی پیشنهاد می شود:
ما در بخش اول مقاله سعی میکنیم دو عنصر ابتدایی این الگوریتم که بی ربط به یکدیگر نیستند را توضیح دهیم.

ویژگی ها در واقع مستطیل هایی هستند که نشان دهنده بخش های مختلف صورت میباشد و بر روی عکس ها با روند تکراری قرار میگیرند.

همانطور که در عکس بالا مشاهده می کنید، هر مستطیل با قرار گرفتن در بخش های مختلف صورت در طی مراحل متعدد با سایز های مختلف شروع به محاسبه می کند و نتیجه آخر از کم کردن پیکسل های زیر بخش های سیاه از جمع پیکسل های زیر نقاط سفید به دست می آید که یک عدد میباشد.
الگوریتم Viola Jones از یک پنجره ۲۴ در ۲۴ برای طی این مراحل و قرار دادن مستطیل ها بر روی صورت استفاده می کند که با در نظر گرفتن تعداد و سایز های مختلف این ویژگی ها (مستطیل ها) با یک حساب سرانگشتی به این نتیجه میرسیم که برای محاسبه نتیجه نهایی برای هر یک از این پنجره های ۲۴ در ۲۴ ما نیازمند انجام ۱۶۰+ هزار محاسبه داریم که منطقا تعداد بالایی است و هزینه و زمان زیادی از ما را برای هر عکس خواهد گرفت.
اینجاست که عنصر بعدی یعنی Ada Boost وارد میشود.
مشاهده ویدیو زیر که به صورت ساده و خلاصه مفهوم تشخیص چهره توسط کامپیوتر ها را توضیح میدهد پیشنهاد میشود (توسط آزمایشگاه زمین BBC)
همانطور که در بالا توضیح دادیم ممکن است برای تشخیص هر چهره در این الگوریتم ما نیاز داشته باشیم تا با قرار دادن ویژگی ها (مستطیل ها) مختلف در سایز ها، ابعاد و مکان های مختلف به محاسبه بپردازیم که در پایان مجبور به انجام ۱۶۰+ هزار محسابه خواهیم شد که به وضوح به صرفه نمی باشد.
اما باید بدانیم که تمام این ویژگی ها برای عکس ما مناسب نخواهد بود، به این معنی که بعضی از این ویژگی ها باید نادیده گرفته شوند و مطابق شکل زیر تنها مستطیل های مرتبط از بین ۱۰۰ ها نوع ویژگی مختلف انتخاب شوند تا در زمان و انرژی صرفه جویی شود.

این کار در الگوریتم Viola Jones به صورت خودکار به کمک عنصر Ada Boost انجام میشود.
آدا بوست یک الگوریتم یادگیری ماشینی میباشد که وظیفه آن پیدا کردن ویژگی های کاربردی از میان آن ۱۶۰+ هزار ویژگی میباشد.
بعد از شناسایی ویژگی های مختلف، از ترکیب حساب شده ای از آن برای برآورد و تصمیم گیری در مورد هر پنجره استفاده میشود و مشخص میگردد که آیا هر یک از آن ها در خود دارای صورت میباشد یا خیر.
هرکدام از فاکتورهای انتخاب شده مثبت در نظر گرفته می شود در صورتی که حداقل بتواند بهتر از حدس زدن تصادفی عمل کنند (بیش از نیمی از موارد را تشخیص می دهد) .
این ویژگی ها همچنین با عنوان دسته بندی های ضعیف نیز معرفی میشوند. Ada boost در دسته بند قوی (Strong Classifier)، تعداد زيادی دسته بند ضعيف (Weak Classifier ) را با هم ترکيب ميکند. Viola Jones يک سری از Ada boost Classifier ها را به عنوان يک زنجيره فيلتری با هم ترکيب می کند. هر فيلتر يک Ada boost classifier مجزا است که از تعداد کمی Weak Classifier تشکيل شده است.

با استفاده از این الگوریتم که با وزن دادن به ویژگی ها (Feature ها) انجام میشود، ۱۶۰+ هزار ویژگی قبلی به کمتر از ۲۵۰۰ ویژگی کاهش پیدا میکند که صرفه جویی زیادی در زمان و انرژی محسوب میشود.

همچنین برای تست الگوریتم تشخیص چهره به صورت آنلاین می توانید از سرویس Betaface استفاده کنید. پیشنهاد میکنیم همین الآن این ویژگی را امتحان کنید!
امیدواریم تا اینجای مقاله لذت برده باشید، سوالات خود را در بخش نظرات با ما در میان بگذارید!
در بخش دوم به معرفی دو عنصر بعدی الگوریتم Viola Jones یعنی Integral Image و Cascading پرداختیم: