تشخیص چهره با پایتون

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

در این پست قصد دارم یک اسکریپت ساده در پایتون برای تشخیص چهره معرفی کنم.

موارد لازما

همانطور که در تصویر زیر مشاهده می کنید

  • پوشه images درون این پوشه بانک تصاویر است چند تصویر از بازیگران را از گوگل گرفته در این پوشه قرار می دهیم.
  • فایل faceR4.py درون این فایل اسکریپت شناسایی چهره قرار دارد
  • چند تصویر بیرون از پوشه images این تصاویر با استفاده از استکریپت با محتوی پوشه images مقایسه می شوند. در صورتی که با یکی تطبیق شدند پیام match در خروجی چاپ خواهد شد.


اسکریپت به صورت زیر است در ادامه خط به خط استکریپت را توضیح می دهم:

خط ۲و ۳ کتابخانه های مورد نیاز را به برنامه اضافه می کند

خط ۶ لیست محتوی پوشه images را در متغییر images قرار می دهد. در پوشه images بانک تصاویر قرار دارد هر تصویری که در این پوشه قرار دارد را فرض می کنیم می شناسیم. تصاویر وارده با این تصاویر مطابقت داده شده و شناسایی خواهند شد.

خط ۹ با استفاده از تابع face_encoding بردارهای ویژگی تصویر مورد نظر مان را استخراج می کنیم(در این مثال تصویر خانم علیدوست. برای مقایسه تصاویر لازم از برداری از ویژگی های تصویر استخراج شود این بردار ها با بردار های تصاویر درون بانک مقایسه می شود در صورت نزدیک بودن به هم عمل تطابق پذیرفته می شود)

خط ۱۷ درون حلقه تصویر مورد نظر با تک تک تصاویر درون پوشه images مقایسه می شود.

خط ۱۹ یکی از تصاویر پوشه بانک لود می شود و درون متغییر current_imageقرار می گیرد.

خط ۲۱ برداری ویژگی تصویر تازه لود شده استخراج می شود.

خط ۲۳ بردار تصویر تازه لود شده با تصویر مورد جستجو درون تابع face_compare مقایسه شده نتیجه درون تغییر result قرار می گیرد در صورتی که دو تصویر متعلق به یک فرد باشد مقدار true برگردانده می شود.


منبع:

برای مطالعه بیشتر می توانید به آدرس سایت زیر مراجعه کنید. امیدوارم برای شما مفید واقع شود:

https://github.com/ageitgey/face_recognition