پروژه کلاسه بندی احساسات چهره با استفاده از یادگیری عمیق

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

بخش ۱

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

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

ما برای پردازش تصویر باید از OpenCV استفاده کنیم . با استفاده از این برنامه می توانیم چهره اشخاص را از دوربین وب به چهره زنده ، شناسایی و سپس پردازش کرده تا آن ها را برای تشخیص احساسات ، به شبکه عصبی آموزش دیده ارائه کنیم . مجموعه داده ای که در اینجا استفاده کرده ایم FER 2013 می باشد . این مجموعه داده شامل ۳۲۲۹۸ تصویر است که به دو دسته ۲۸۷۰۹ تصویر آموزش و ۳۵۸۹ تصویر آزمایش تقسیم شده اند.

بخش ۱ خلاصه ای از نمای کلی پروژه را ارائه می دهد . بخش ۲ به بررسی اصطلاحات و مفاهیم گفته شده در این پروژه می پردازد. بخش ۳ به بحث درباره عملکرد و توانایی های سیستم پرداخته و بخش ۴ کاربرد های این مدل را معرفی خواهد کرد. بخش ۵ درباره تحویل و محدودیت های زمانی صحبت کرده و بخش ششم به مشارکت های اعضای تیم می پردازد. و در بخش آخر به نتیجه گیری این گزارش ها به کمک شواهدی که نشان دهنده موفقیت هستند ، خواهیم پرداخت .

بخش ۲ : بررسی اصطلاحات و مفاهیم

هدف پروژه ما این است که با استفاده از CNN احساسات چهره افراد را در زمان واقعی پیش بینی کنیم . این نوع مخصوصی از تکنیک های یادگیری عمیق است که به ما راه حل بسیاری از مسائل شناسایی احساسات چهره را بعد از انجام دامنه وسیعی از آموزش ها، ارائه می دهد . مزیت اصلی CNN حذف کامل یا کاهش قابل توجه وابستگی بر مدل های مبتنی بر فیزیک و/یا تکنیک های پیش از پردازش ، با انجام یادگیری End-to-End از داده های ورودی است.

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

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

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

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

CNN از لایه های زیر تشکیل می شود :

  • لایه ورودی : این لایه شامل مقادیر خام پیکسل های تصاویر است . عملیات پیش پردازش قبل از ورود پیکسل ها به این لایه انجام می شود .
  • لایه کانولوشنی : این لایه ضرب نقطه ای بین وزن ها را محاسبه می کند و ناحیه کوچکی است که نورون ها در ورودی به هم متصل می شوند . به دنبال آن یک لایه ادغام ( Pooling ) وجود دارد که از ابعاد در امتداد عرض و ارتفاع نمونه برداری می کند تا به خاطر تعداد زیاد لایه های کانولوشنی ، زمان محاسبات را کاهش دهد .
  • لایه متراکم : ویژگی ها را از طریق لایه هایی که به وزن های قابل آموزش مرتبط هستند تبدیل می کند . این لایه ویژگی های پیچیده تصویر را شناسایی می کند که در واقع نشان دهنده ای از کل تصویر می باشد.
  • لایه خروجی : این لایه به لایه کاملا متصل ( Fully Connected ) قبل از آن اتصال دارد و کلاس های مورد نیاز و احتمال آن ها را بیرون می کشد .
مراحل تشخص احساس با شبکه های عصبی کانولوشنی

۷ احساس پایه انسان شامل خوشحال ، غمگین ، عصبانی ، منزجر شده ، ترسیده ، متعجب و خنثی می باشد . احساسات مرکب ، ترکیبی از دو احساس پایه می باشد . در کل ۲۲ احساس توسط انسان نشان داده می شود که از این ۲۲ احساس ، ۷ احساس پایه و ۱۲ احساس مرکب می باشد . ۳ احساس دیگر نیز شامل احساسات اضافی انسان ( دلهره ، نفرت و هراس ) است . احساسات جزئی ( Micro expressions ) نیز نمایانگر حرکات ظریفی است که در چهره به طور خود به خود و غیر ارادی اتفاق می افتد . این احساسات برای این هستند که در مدت زمان کوتاهی ، احساسات واقعی و اساسی فرد را آشکار کنند .

جدول ماهیچه های چهره دخیل در احساسات داروین

بخش ۳ : عملکرد و توانایی های سیستم

سیستم ما بعد از ۲۰ دوره آموزش بر روی سیستم عامل مکینتاش به دقت بیش از ۷۰٫۶۲% دستیابی پیدا کرده است . این مدل می تواند در زمان واقعی چند چهره را به طور همزمان شناسایی کند . در ابتدا ، احساسات موجود در هر یک از چهره های شناخته شده را تشخیص داده و سپس احساسات را در نزدیک کادر های محصور کننده چهره ها ، برچسب گذاری می کند. به این ترتیب احساسات هر فرد در کنار چهره اش نمایش داده می شود .

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

شبکه عصبی کانولوشنی تشخیص احساس

بخش ۴ : کاربرد ها

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

  • درمان – در انجام تحلیل های اولیه در چهره عدم توانایی یا عدم صحبت کردن فرد ، بررسی میزان راحتی بیماران در هنگام معالجه و کمک به انجام تجزیه و تحلیل روانشناختی بسیار مفید خواهد بود .
  • سرگرمی – عملکرد این مدل را می توان به برنامه های دوربین سگ رباتی AIBO سونی و همچنین ربات وکتور Anki اختصاص داد: اگر چهره تشخیص داده شده در دوربین لبخند نزند ، دستگاه به فرد آب می پاشد و سعی در خوشحال کردن وی می نماید . این عملکرد فقط زمانی رخ می دهد که شما آن را فعال کرده باشید به خاطر این که ممکن است اشخاص بخواهند احساسات مختلفی را در هر تصویر نشان دهند پس نیازی نیست که هر بار این کار را انجام دهید .
  • توسعه کسب و کار – زمانی که یک نظر سنجی اینترنتی را پر می کنید ، دوربین وب تشخیص می دهد که در واقع شما خوشحال هستید یا ناراحت ( این روش نقض حریم خصوصی است ، با این حال یک پنجره از شما سوال می کند که آیا به وب سایت مورد نظر اجازه استفاده از دوربین وبکم را می دهید یا خیر ) . نمونه اولیه می تواند در ارزیابی بازار نیز استفاده شود ( وبکم ها و دوربین هایی که در فروشگاه ها نصب می شوند احساس نهایی مشتریان را نسبت به کالای خاصی ثبت می کنند ) .

بخش ۵ : موارد تحویل و محدودیت های زمانی

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

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

تعدادی از نقایص این سیستم شامل موارد زیر می شوند :

  • دقت کم ( ۷۶٫۴% ) در تشخیص احساساتی نظیر غمگین
  • اگر شخص در تصویر کلاه ، ماسک یا عینک ایمنی پوشیده باشد و یا حتی چشمانش بسته باشد ، احساسش قابل تشخیص نیست .
  • مجموعه داده مورد استفاده دارای داده های نویزی بود از این رو نتوانستیم دقت لازم در حدود ۹۰ درصد را بدست آوریم .
  • تشخیص احساسات نمی تواند انگیزه واقعی شخص و یا احساس واقعی فرد را آشکار سازد و فقط یک تحلیل گذرا و تشخیص احساسات انسانی را انجام می دهد .
  • مجموعه داده استفاده شده در FER2013 دسترسی به دیگر مجموعه داده های خصوصی ندارد .
نتایج تشخیص احساسات با یادگیری عمیق
خروجی شبکه عمیق تشخیص احساس
نتایج شبکه عمیق تشخیص احساسات

برای دسترسی به کد های این پروژه و اطلاعات موجود در صفحه گیت هاب آن به لینک زیر مراجعه کنید :

پروژه تشخیص احساسات با یادگیری عمیق در Github

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

منبع Medium
0/5 (0 نظر)

درباره‌ی احمدرضا جعفری

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

هوش مصنوعی

دیپ فیک و چگونگی تشخیص آن توسط هوش مصنوعی

هوش مصنوعی که دیپ فیک ها را پدید می آورد، سؤالات و ابهامات مختلفی را …

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

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