تشخیص چهره ، بازشناسی و تشخیص احساسات فقط با ۸ خط کد نویسی!!!

معرفی

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

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

تشخیص چهره و بازشناسی موضوع بسیار سنگینی برای تحقیق است و هزاران منبع انلاین در اینترنت برای این موضوع وجود دارد. ما چندین پروژه منبع باز را امتحان کرده ایم تا ضمن دقیق بودن ، پروژه هایی را پیدا کنیم که از نظر اجرا، ساده ترین باشد. ما همچنین خط لوله ای ( Pipeline ) را برای شناسایی ، تشخیص و درک احساسات بر روی هر تصویر ورودی با تنها ۸ خط کد پس از بارگذاری تصاویر ایجاد کرده ایم! این کد بر روی سایت Github به صورت منبع باز در دسترس قرار دارد.

تشخیص و بازشناسی چهره
بیومتریک چهره

این مقاله به ۳ بخش تقسیم شده است:

  1. شناسایی چهره : توانایی شناسایی موقعیت صورت در هر گونه تصویر یا فریم ورودی. خروجی یک جعبه با مختصات چهره شناخته شده است.
  2. بازشناسی چهره : مقایسه همزمان چند چهره برای اینکه مشخص شود این چهره متعلق به کدام شخص می باشد. این کار با مقایسه بردارهای تعبیه شده صورت انجام می شود.
  • تشخیص احساسات : طبقه بندی احساسات موجود در چهره به صورت خوشحال، غمگین، عصبانی، طبیعی، متعجب، منزجر و ترسیده.

شناسایی چهره

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

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

در زیر کد های کتابخانه پایتون را که برای تشخیص چهره به کار می رود را مشاهده می کنید:

face_locations = face_recognition.face_locations(image)
top, right, bottom, left = face_locations[0]
face_image = image[top:bottom, left:right]

نحوه نصب کتابخانه پایتون و استفاده از شناسایی چهره به طور کامل بر روی سایت Github قابل مشاهده است.

بازشناسی چهره

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

مراحل دخیل در بازشناسی چهره عبارتند از:

  • یافتن چهره در تصویر
  • تحلیل و بررسی ویژگی های صورت
  • مقایسه ویژگی های دو تصویر ورودی
  • اگر یکسان بود جواب بله و در غیر این صورت جواب خیر خواهد بود.

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

encoding_1 = face_recognition.face_encodings(image1)[0]

encoding_2 = face_recognition.face_encodings(image1)[0]

results = face_recognition.compare_faces([encoding_1], encoding_2,tolerance=0.50)

بیایید مدل را بر دو تصویر زیر آزمایش کنیم:

چهره لئوناردو دیکاپریو تمام رخ
چهره ۲
چهره لئوناردو دیکاپریو سه رخ
چهره ۱

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

تشخیص احساسات

تشخیص احساس چهره

انسان ها به دریافت نشانه های غیر کلامی را از طریق احساسات چهره افراد عادت دارند. حالا سیستم ها و کامپیوتر ها نیز در راستای خواندن احساسات در حال بهتر شدن هستند. خب ما چگونه احساسات فردی در یک تصویر را تشخیص دهیم؟

ما از مجموعه داده های منابع باز در کتابخانه تشخیص احساسات چهره ( FER ) از Kaggle استفاده کرده و برای تشخیص احساسات چهره ها، یک شبکه عصبی کانولوشنی ( CNN ) را ایجاد می کنیم. احساسات می توانند در ۷ طبقه دسته بندی شوند – خوشحال، عصبانی، ناراحت، متعجب، طبیعی، منزجر و ترسیده.

در این مدل ما یک شبکه عصبی کانولوشنی یا CNN را در ۶ لایه در Keras ایجاد کرده ایم و از تقویت تصویر برای بهبود عملکرد مدل استفاده می کنیم. ما  مدل های بسیار متفاوتی را امتحان و بهترین آن ها را به صورت منبع باز پیاده سازی کردیم که از این لینک می توانید به آن دسترسی داشته باشید.

شما می توانید این مدل را بارگذاری کنید و فقط با استفاده از ۲ خط کد زیر، آن را بر روی عکس های خود استفاده کنید:

model = load_model("./emotion_detector_models/model.hdf5")
predicted_class = np.argmax(model.predict(face_image)

نتیجه گیری

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

بیشتر بخوانید :

منبع Towards Data Science

همچنین ببینید

فناوری تشخیص چهره و کاربردهای آن، تاریخچه تکنولوژی تشخیص چهره

فناوری تشخیص چهره و کاربردهای آن + تاریخچه

فناوری تشخیص چهره یک فناوری بیومتریک است که با استفاده از تجزیه و تحلیل الگوهایی …

3 نظر

  1. ممنون از مطالب خوبتون🌷میشه این کد هارو ب متلب تبدیل کرد؟

    • کتابخانه هایی که برای این کد ها استفاده شده در پایتون هستن
      شاید بتونید از این روش توی متلب فراخونیشون کنید
      https://www.mathworks.com/help/matlab/getting-started-with-python.html
      البته توصیه می کنیم برای کار توی این حوزه حتما پایتون رو یاد بگیرید و از پایتون استفاده کنید چون زبان بهینه تر و مرسوم تری برای این کار هست ولی متلب برای این کار به صورت حرفه ای و تجاری اصلا مناسب نیست.

  2. سلام چگونه میتوانم یک برنامه بسازم که با ان توسط کد پایتون عکس را شناسایی کند توسط جستجو
    در گوگل و نتیجه انرا در کمپیوتر ذخیره کند

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *