تشخیص چهره با استفاده از الگوریتم Haar Cascade

OPEN_CV

امروز تصمیم دارم در مورد تشخیص چهره و چشم ها با استفاده از الگوریتم Haar Cascade صحبت کنم و کدی برای این منظور با استفاده از زبان پایتون بنویسم.

   تشخیص اجسام با استفاده از الگوریتم Haar Cascade، یک روش بسیار موثر است که اولین بار توسط Paul Viola و Michael Jones در سال 2001 مطرح شد. این الگوریتم بر پایه یادگیری ماشین بوده و بدین صورت عمل می کند که با استفاده از تصاویری که چهره در آنها وجود دارد (تصاویر مثبت) و تصاویری که چهره در آنها وجود ندارد (تصاویر منفی) تابعی را آموزش می دهد تا بتواند مولفه هایی مانند وجود فاصله بین چشم ها را پیدا کند.

   این الگوریتم منحصر به تشخیص چهره نیست؛ و بیشتر یک آموزش دهنده است و می توان با آموزش دادن تابع دلخواه خودتان هر شی مانند ماشین، میز، مداد و … را شناسایی کنید. OpenCV مجموعه ای از توابع از پیش آموزش دیده را برای تشخیص چهره، چشمان، لبخند و … در خود دارد که می توان به سادگی از آنها استفاده کرد. زیاد وارد جزئیات در مورد این الگوریتم نمی شم و به نوشتن برنامه ای برای تشخیص چهره و چشمان می پردازم.

   ابتدا پکیج cv2 را برای OpenCV وارد می کنیم. سپس توابع از پیش آموزش دیده را برای شناسایی صورت و چشم ها بارگذاری می کنیم. این توابع در مسیر opencv/data/haarcascades قرار دارند.

   در قسمت بعدی چون می خواهیم عمل تشخیص چهره را به صورت Real-time انجام دهیم، از دوربین استفاده می کنیم. برای این منظور دوربین را فراخوانی می کنیم و کد را درون یک حلقه می نویسیم.

   توجه داشته باشید که برای استفاده از اگوریتم haar cascade، حتماً باید تصویر به صورت سیاه و سفید باشد. به همین دلیل هر فریم را پس از دریافت از دوربین از حالت رنگی به سیاه و سفید تبدیل می کنیم.

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

   حال نوبت به شناسایی چشم ها می رسد. برای این منظور نیز مانند مرحله قبلی از دستور MultiScale استفاده خواهیم کرد ولی قبل از آن باید محدوده صورت را جدا کنیم.

   مجدداً با استفاده از یک مستطیل با رنگ سبز چشم ها را بر روی تصویر نشان می دهیم.

   و در مرحله آخر با فشردن کلید q از برنامه خارج می شویم. شکل زیر نتیجه این کد را نشان می دهد.

   همانطور که در کدهای بالا ملاحظه کردید، استفاده از این توابع از پیش آموزش دیده شده باعث کاهش حجم کدنویسی شده است. در پایان می توانید کد را به همراه توابع تشخیص از لینک زیر دانلد کنید.

[su_button url=”http://dl.microdroidprj.ir/2018/09/MicroDroidPrj.ir_Face-Detection.zip” target=”blank” style=”flat” background=”#3dbaf7″ color=”#ffffff” size=”4″ wide=”yes” center=”yes” radius=”0″ icon=”icon: arrow-circle-down” icon_color=”#000000″ text_shadow=”0px 0px 2px #ffffff”]دانلود پروژه فوق به همراه عکس[/su_button]

دیدگاه بگذارید

avatar