تشخیص چهره و احساسات با پایتون در فیلم (آموزش کامل)
یکی از سادهترین و مؤثرترین روشها برای تحلیل احساسات افراد، بررسی حالات چهره آنهاست. در بسیاری از مواقع، چهره بهترین توصیف از احساسات ما در یک لحظه خاص است. این بدان معناست که تشخیص احساسات، یک مسئله ساده در دستهبندی چندگانه است؛ یعنی شما باید چهره یک فرد را تحلیل کرده و آن را در یک دستهبندی خاص قرار دهید که هر دسته نمایانگر یک احساس مشخص است.
البته تحلیل چهرهها همیشه برای سنجش احساسات کافی نیست. انسانها اغلب تلاش میکنند احساسات خود را پنهان کنند، که این امر میتواند در صورت تکیه صرف بر تشخیص احساسات در تصاویر، منجر به نتایج نادرست شود. با این حال، ترکیب این تحلیل با تکنیکهای دیگر مانند بررسی زبان بدن در تصاویر یا تحلیل صدا در ویدئوها میتواند دید بهتری از احساسات فرد ارائه دهد.
حالا، اجازه دهید نشان دهیم که چقدر آسان است تشخیص احساسات را در تصاویر انجام دهیم. شما میتوانید از کتابخانههای آماده استفاده کنید که به شما امکان میدهند به سرعت و با کمترین کدنویسی، چهرهها را تحلیل و نتایج دلخواهتان را کسب کنید.
کتابخانه DeepFace در پایتون چیست؟
اولین کتابخانهای که قصد دارم معرفی کنم، DeepFace است. این احتمالاً محبوبترین کتابخانه برای تحلیل احساسات و وظایف مشابه است. DeepFace یک پروژه متن باز است که تحت مجوز MIT منتشر شده و به کاربران امکان استفاده، تغییر و توزیع آن را، چه برای مقاصد تجاری و چه غیرتجاری، میدهد. این ویژگی DeepFace را برای هر کسی که میخواهد آن را در فعالیتهای خود پیادهسازی کند، گزینهای ایدهآل میسازد.
این کتابخانه به عنوان یک چارچوب برای استفاده از مدلهای یادگیری عمیق از پیش آموزشدیده شده در تحلیل تصویر و ویدئو عمل میکند. هرچند تشخیص احساسات یکی از قابلیتهای آن است، این کتابخانه امکانات بیشتری ارائه میدهد.
مدلهای پیشرفته DeepFace
کتابخانه DeepFace از مدلهای پیشرفته (SOTA) از پیش آموزشدیده در پسزمینه استفاده میکند. مدلهای SOTA به مدلهایی گفته میشود که بهترین نتایج را برای یک وظیفه خاص در یک مجموعه داده معیار به دست میآورند. مدلهایی که DeepFace استفاده میکند شامل موارد زیر هستند:
- VGG-Face
- Google FaceNet
- OpenFace
- Facebook DeepFace
- DeepID
- ArcFace
- Dlib
این مدلها به قدری قوی هستند که توانایی تحلیل چهرهها (و حتی ویدئوها) را در سطحی بالاتر از توانایی انسان به نمایش میگذارند.
مراحل تشخیص چهره در DeepFace
فرآیند تشخیص چهره در DeepFace شامل چهار مرحله است:
- تشخیص
- تراز کردن
- نمایش
- تأیید
اکنون، اجازه دهید نشان دهیم که چگونه DeepFace تمام این وظایف را تنها با یک خط کد انجام میدهد.
حتما دانلود کنید: فیلم های صفر تا صد پایتون
چگونه از کتابخانه DeepFace استفاده کنیم؟
ابتدا باید کتابخانه را نصب کنید. از آنجا که در مخزن پکیجهای پایتون (PyPI) منتشر شده است، آسانترین راه نصب آن استفاده از دستور pip است:
pip install deepface
این دستور همه موارد مورد نیاز برای استفاده از این کتابخانه را به صورت خودکار نصب میکند.
استفاده از این کتابخانه بسیار ساده است. پس از وارد کردن بسته، فقط نیاز به ورود یک تصویر دارید. این کتابخانه تحلیل دقیقی از آن تصویر به شما ارائه میدهد.
اینگونه DeepFace در تصویر زیر کار میکند:
چهره زن خوشحال
برای شروع، موارد مورد نیاز را وارد کنید:
from deepface import DeepFace
سپس میتوانید چهره موجود در تصویر را تحلیل کنید:
face_analysis = DeepFace.analyze(img_path="happy_face_woman.png")
این تمام چیزی است که نیاز دارید، اگر نمیخواهید فرآیند تحلیل را بیش از حد سفارشی کنید. اجرای کد بالا نتیجه زیر را به شما میدهد:
{'emotion': {'angry': 4.476726101312781e-06,
'disgust': 1.6381327493892675e-06,
'fear': 0.0001274320160076828,
'happy': 99.06393880033129,
'sad': 0.02293923016927273,
'surprise': 3.946005002585829e-06,
'neutral': 0.9129819073070232},
'dominant_emotion': 'happy',
'region': {'x': 77, 'y': 104, 'w': 163, 'h': 163},
'age': 31,
'gender': 'Woman',
'race': {'asian': 2.069193683564663,
'indian': 7.127643376588821,
'black': 0.4860048647969961,
'white': 24.476712942123413,
'middle eastern': 17.554299533367157,
'latino hispanic': 48.28614890575409},
'dominant_race': 'latino hispanic'}
دانلود کنید: ۴ جزوه عالی pdf آموزش پایتون
چگونه مدلهای دستهبندی را ارزیابی کنیم؟
همانطور که میبینید، تحلیل بسیار دقیقی به شما ارائه میشود. این اطلاعات شامل موارد زیر است:
- درصد هر یک از ۷ احساس اصلی انسانی و احساس غالب
- مختصات جعبه محدود کننده برای چهره در تصویر با پارامتر region
- سن پیشبینی شده فرد
- جنسیت پیشبینی شده فرد
- نژاد پیشبینی شده فرد (با درصدهای مختلف برای نژادهای مختلف)
پایتون برای چه سنی مناسب است؟ چقدر طول می کشد؟
از آنجا که نتیجهای که دریافت میکنید یک دیکشنری است، میتوانید به راحتی به بخشهای مختلف آن با استفاده از کلیدهای دیکشنری دسترسی پیدا کنید:
print(face_analysis["emotion"])
print(face_analysis["dominant_emotion"])
کد بالا نتیجه زیر را به شما میدهد:
{'angry': 4.476726101312781e-06, 'disgust': 1.6381327493892675e-06, 'fear': 0.0001274320160076828, 'happy': 99.06393880033129, 'sad': 0.02293923016927273, 'surprise': 3.946005002585829e-06, 'neutral': 0.9129819073070232}
Happy
DeepFace همچنین با تصاویر سیاه و سفید کار میکند.
بیایید به مثالی از تحلیل احساسات موجود در تصویر سیاه و سفید زیر بپردازیم:
آموزش کامل هوش مصنوعی: آموزش هوش مصنوعی از صفر تا صد با 14 درس+ جزوه
زن خندان
برای تحلیل تصویر بالا با استفاده از DeepFace، از همان کدی که برای تصویر رنگی استفاده کردید، استفاده کنید:
face_analysis_2 = DeepFace.analyze(img_path="happy_face_grayscale.png")
print(face_analysis_2["emotion"])
print(face_analysis_2["dominant_emotion"])
این نتیجه زیر را به شما میدهد:
{'angry': 2.8718812601394677e-18, 'disgust': 2.5457508031498726e-35, 'fear': 1.3584258743615688e-23, 'happy': 100.0, 'sad': 1.4448950023722881e-16, 'surprise': 1.16495389723692e-09, 'neutral': 4.1699252051330404e-06}
Happy
چگونه خطاها را در برنامهنویسی مدیریت کنیم در حالی که DeepFace ممکن است در همه موارد بهترین راهحل به نظر برسد، اما یک نکته منفی وجود دارد. از آنجا که تصویر باید تمام مراحل در خطوط لوله را طی کند، گاهی ممکن است در یکی از مراحل "گیر" کند.
بیایید نگاهی به این تصویر بیندازیم:
تفاوت هوش مصنوعی رو با این یکی یاد بگیرید: آموزش هوش تجاری از صفر تا صد با 30 درس
زن خوشحال در سیاه و سفید
این یکی از تصاویر مجموعه داده FER (Face Emotion Recognition) است که شامل تصاویر 48x48 پیکسل است که چهرههای نمایشدهنده احساسات مختلف را نشان میدهد. DeepFace در مرحله تشخیص چهره به مشکل برخورد میکند و خطای زیر را برمیگرداند:
ValueError: Face could not be detected. Please confirm that the picture is a face photo or consider to set enforce_detection param to False.
ر این صورت، دو راه برای حل این مشکل وجود دارد:
- پیروی از آنچه DeepFace پیشنهاد میدهد و تنظیم پارامتر enforce_detection به False OR
- استفاده از کتابخانه دیگری
تمرین های برنامه نویسی پایتون+ مثال برنامه نویسی پایتون
با پیروی از پیشنهاد داده شده توسط کتابخانه DeepFace، میتوانید کد زیر را اجرا کنید:
face_analysis_3 = DeepFace.analyze(img_path="happy_face.png", enforce_detection=False)
این کد به شما نتیجه زیر را میدهد:
{'emotion': {'angry': 6.94968106589815e-09,
'disgust': 5.045683923493526e-17,
'fear': 1.8882920286663343e-11,
'happy': 100.0,
'sad': 3.4951789346768836e-12,
'surprise': 4.146157533456863e-07,
'neutral': 8.966524262206363e-06},
'dominant_emotion': 'happy',
'region': {'x': 0, 'y': 0, 'w': 48, 'h': 48},
'age': 28,
'gender': 'Woman',
'race': {'asian': 14.217264235019684,
'indian': 16.003269970417023,
'black': 11.656318604946136,
'white': 17.284339487552643,
'middle eastern': 18.065309524536133,
'latino hispanic': 22.773597180843353},
'dominant_race': 'latino hispanic'}
دانلود کنید: یادگیری ماشین با پایتون با 12 درس+ کتاب یادگیری ماشین
جمعبندی
در این مقاله، من به شما یک کتابخانه تحلیل احساسات عالی در پایتون به نام DeepFace معرفی کردم. این کتابخانه به شما این امکان را میدهد که احساسات، سن، جنسیت و نژاد افراد را تنها با یک خط کد تحلیل کنید. این کتابخانه برای شروع کار با یادگیری عمیق و تشخیص احساسات بسیار مناسب است.