دوره آموزش تشخیص چهره با پایتون (با پکیج MediaPipe گوگل)
آموزش تشخیص چهره با پکیج MediaPipe گوگل در زبان برنامه نویسی پایتون به صورت کاملاً مفهومی و با تدریس کاملاً روان که باعث میشه دغدغهای برای فهمیدن مباحث رو نداشته باشید.
آنچه در دوره تشخیص چهره با پایتون خواهید دید.
برخی از کاربردهای تشخیص چهره با پایتون.
یکی از مواردی که شخص در کدنویسی برنامههای مختلف (چه برنامههای گوشی و چه برنامههای کامپیوتر) بِهِش نیاز پیدا میکنه، همین تشخیص چهره است. بذارید چند مثالِ «خیلی ساده» که همه افراد تا حالا باهاش برخورد کردن بزنم:
اپهای سوالات چالشی و صندلی داغ.
قطعاً این اپهایی رو دیدید که به محض تشخیص چهره شخص، یک سری سوالات چالشی بالای سر شخص نشون میده. مثلاً سوالاتی مثل اینکه: «خاطرهای در بچگی که تا حالا به کسی نگفتی!» یا «دوست داری چطوری بمیری؟» و … یه زمانی من و دو تا از دوستام، یکی از فانتزیهامون همین بود. دور هم که جمع میشدیم، بعضی اوقات، همین رو میذاشتیم و از این سوالات نشون میداد و صحبت میکردیم. خیلی باحال بود و سر بحثهای دیگه رو باز میکرد و عموماً در مورد خاطرات قدیمی بود [البته اپ به اپ سوالاتش فرق میکنه]. در این اپها «کارِ اصلکاری» برای پیادهسازی همچین چیزی، همون تشخیص چهره است. بقیهش که فقط کافیه شخص یه بانک از این سوالات جمعآوری کنه و بعد فقط بالای سر شخص در قالب یه کادر نسبتاً قشنگی، به صورت رندوم و تصادفی یکی از اون سوالات رو نشون بده!
اپهای سوالات «این» یا «آن».
مشابه مثال قبلی، برنامههایی که حالت «این» یا «آن» هستن رو دیدین قطعاً. که اون هم دوباره در بالای سر فرد، سوالهای «این» یا «آن» میپرسه. حتی فیلترهای اینا در اینستاگرام هم پرمخاطبه.
اپهای اعمال فیلترهای چهره.
یا حتی این برنامههایی که روی صورت عینک میندازن، دماغ نوع خاصی میذارن و الی آخر…! اینا هم خیلی ساده هستن، مثلاً در مورد اون عینک، فقط کافیه اصطلاحاً landmark [= به معنی نقطه کلیدی] چشم تشخیص داده بشه. بعد اون شخص میتونه عینک رو بندازه اونجا. که مثلاً در این دوره تشخیص 6تا از landmarkهای اصلی [چشم راست، چشم چپ، دماغ، دهان، گوش راست و گوش چپ] آموزش داده میشه.
و کاربردهای دیگر…
و کلی مثال دیگه که میشه از کاربرد تشخیص چهره در برنامههای مختلف زد.
- فارغ از این، یکی از مواردی که شخص بعد از یادگیری دورهای مثل OpenCV که قبلاً داشتیم باید یاد بگیره، [حداقل به نظر من]، همین تشخیص چهره است. هم خیلی از اون مباحثی که قبلاً یاد گرفته براش مرور میشه. و هم سطح تسلطش به بینایی ماشین رو افزایش میده. و تشخیص چهره یکی از مهمترین موارد در بینایی ماشین (Computer Vision) است.
برخی از مزیتهای این دوره.
تفکیک مطالب به صورت جلسه به جلسه.
برای اینکه بتونید در فرآیند مطالعه برای خودتون برنامهریزی بکنید و بدونید بهتره با چه نرخی پیشروی داشته باشید، ما تفکیک جلسه به جلسه انجام دادیم. یعنی بعد از دانلود فایلها میبینید اسم پوشهها به صورت مثلا Session01 و Session02 و الی آخر است (لفظ Session در زبان انگلیسی یعنی «جلسه»). این شکلی شما میتونید برای مطالعه خودتون و برای نرخ پیشروی خودتون برنامهریزی کنید.
ترکیبی از تئوری و عملی.
در این دوره، خیلی جاها نیازه که مثلاً پسزمینه متن در فلان مختصات قرار بگیره. یه راهش اینه که مثلاً بگیم فرمولش فلان است و همین! ولی خب به نظر من این جالب نیست! چون شخص اینطوری چیزی یاد نمیگیره و اصلاً منطق پشتش رو درک نمیکنه و فقط چهارتا چیز حفظ میکنه. و حتی این حفظیاتش رو نمیتونه برای دو تا مسأله دیگه تعمیم بده! اما ما تمام مواردی که گفته میشه رو کاملاً توضیح میدیم. مثلاً دقیقاً برای اینکه کادر تصویر باید کجا قرار بگیره، متن و پسزمینهی متن کجا باید قرار بگیره و الی آخر… کلی روی اسلاید توضیح دادیم که چرا باید اونها در فلان مختصات قرار بگیرن. چون اگر شخص، دلیل اینا رو ندونه، خودش نمیتونه اینو تعمیم بده! برای همین علاوه به توضیح کامل عملی (= در خود زبان برنامه نویسی پایتون)، به صورت تئوری (= در اسلاید) هم مطالب توضیح داده شده.
به همراه فایلهای تصاویر و سایر موارد مورد نیاز برای تمرین.
من در طول این دوره، با کلی تصویر و فیلم کار میکنم. مثلاً تصاویر مختلف رو به عنوان نمونه میام رووووشووون تشخیص چهره انجام میدم. یا مثلاً یک فیلم رو میام روووش تشخیص چهره انجام میدم. و طبیعتاً تمام این فایلها در اختیار شما هم قرار میگیره (چه تصاویر و چه فیلم). تا شما هم بتونید مثل من، با همونها کار کنید و پیشروی داشته باشید.
تفکیک مباحث در قالب فیلمهای کوتاه برای مرورهای سادهتر و یادگیری بهتر.
بجای اینکه مثلاً 10 تا مبحث رو در یک ویدئو 1 ساعته بگیم (که برای مخاطب هم نگاه کردنش خیلی سخته) سعی کردیم مباحث رو در قالب فیلمهای کوتاهتر (عموماً در حدود 10 دقیقه) ضبط کنیم.
- هم بعدها میتونید به سادگی از عنوان ویدئو، متوجه بشید در هر ویدئو در مورد چه چیزی صحبت شده. و برای مرور و … خیلی مفیدتره.
- و هم حتی در کتابهای روانشناسی (مثل کتاب خُرده عادتها از جیمز کلییر) هم اینو میگن که وقتی شخص با یک فیلم 10 دقیقهای مواجهه، چون یک کار خُرد حساب میشه، تمایلش به انجام اون بیشتره. و بعد از تموم کردن اون فیلم، یه حس پیروزی کوچیک بهش دست میده که خودش باعث میشه اون شخص تمایل بیشتری به ادامه فرآیند داشته باشه.
توجه: تصویر بالا صرفاً فایلهای داخل پوشه Session02 (یعنی جلسه 2) را نشان میدهد. این دوره چندین جلسه دارد. و این فایلها که در تصویر بالا مشاهده میکنید، صرفاً و صرفاً بخش کوچکی از کُل فایلها است و صرفاً مربوط به یکی از جلسات است.
بروزرسانی رایگان.
ما معمولاً سعی میکنیم در گذر زمان، برخی بروزرسانیها رو در دورهها انجام بدیم. و این بروزرسانیها در همون دوره، و برای افرادی که دوره رو دارن، به صورت رایگان قرار میگیره. یعنی اینطور نیست که بگیم برای این بروزرسانی پول جداگانه بدید! نه اینطور نیست. مثلاً دقیقاً قبل از انتشار این دوره، یه بروزرسانی برای دوره OpenCV و به آخرش اضافه شد. حالا این بروزرسانی یه وقتایی از جنس اصلاح مطلبه، یه وقتایی از جنس اضافه شدن مطلب جدید به دوره.
- مثلاً PyCharm که در دوره پایتون (همون دوره اول ما) ازش استفاده میکنیم، هِی بروزرسانی ارائه میده. در یکسال اخیر این PyCharm کلی ظاهر خودش و ظاهر سایتش رو عوض کرده. خب ما هم برای همین سعی کردیم، اون آموزشها نصب رو اصلاح کنیم و بروزرسانی انجام بدیم.
- یا مثلاً چیزی که قبل از انتشار این دوره، به دوره OpenCV اضافه شد، از جنس اضافه شدن یک مبحث کاملاً جدید بوده. ما یک مبحث کلاً جدید رو به دوره OpenCV اضافه کردیم.
این بروزرسانی، از نظر من که مزیت خیلی خوبی حساب میشه.
بررسی جزئیات کاربردی زیاد که حتی در دورههای خارجی هم پیدا نمیکنید.
در این دوره به جزئیاتی در مورد تشخیص چهره با پایتون اشاره شده که به جرأت میگم حتی در آموزشهای خارجی هم بهش اشاره نشده. و این باعث میشه نیاز نباشه هِی سرچ بکنید و یا دنبال منابع دیگه باشید.
فایلهای سورس کُد در اختیار شما قرار میگیره.
در طول آموزش، من یک سری کدها مینویسیم. این کدها در قالب فایل txt در کنار فیلمها قرار گرفته. به چند دلیل:
- ممکنه شخص کدی که خودش مینویسه، به یک سری نکات حواسش نبوده باشه و موقع اجرا به خطا بخوره. ولی اون کُد میتونه به عنوان راهنما عمل کنه که هم به اشتباهات خودش پی ببره و هم در اجراش به خطا نمیخوره.
- کارکرد دومش مشابه یک کتاب مرجعه. یعنی هر وقت، در هر پروژهای به اون موضوع خاص نیاز داشتید، میتونید به این سورس کُدها (Source Code) که براتون قرار دادیم مراجعه کنید و ازشون استفاده کنید. و این شکلی نیازی نیست که یه عالمه تایپ کنید و به سادگی میتونید copy و paste کنید.
توجه: تصویر بالا صرفاً فایلهای داخل پوشه Session02 (یعنی جلسه 2) را نشان میدهد. این دوره چندین جلسه دارد. و این فایلها که در تصویر بالا مشاهده میکنید، صرفاً و صرفاً بخش کوچکی از کُل فایلها است و صرفاً مربوط به یکی از جلسات است.
استفاده از پکیج MediaPipe برای تشخیص چهره با پایتون که مال Google است.
یکی از چیزهایی که من زیاد میبینم استفاده از Haar Cascade برای تشخیص چهره با پایتون است. هر چند شاید دَمدستیترین چیزی باشه که شخص میتونه انجام بده. اما از نظر من کیفیت خوبی نداره. اما پکیج MediaPipe مربوط به Google است. و از نظر من کیفیت خیلی بهتری داره. به همین دلیل ما در این دوره از پکیج MediaPipe و OpenCV استفاده میکنیم.
بخشی از رضایت نهادها و افراد از دورههامون.
در زیر بخشی از رضایتهایی که شما برامون فرستادید رو قرار میدم.
- اگر میبینید تصاویر کیفیت کمتری دارن، دلیلش اینه که کیفیتش رو کم کردیم تا زمان کمتری برای لود صفحه طول بکشه تا شما راحتتر باشید.
اول با یک فیلم شروع کنیم:
رضایت دبیرخانه رقابتهای فتح پرچم (CTF) بنیاد ملی نخبگان از تدریس پایتون:
بریم سراغ بقیه رضایتها:
رضایتهای دیگهای هم هست که اینجا آپلود نشده. صرفاً بخشی از اونها اینجا قرار گرفته. اگر کافی نبود و بیشتر دوست داشتید ببینید، میتونید برید توی پیج اینستاگرامون، هایلایت «رضایت دوره» رو نگاه کنید. هرچند خیلی موارد هست که حتی اونجا هم هنوز نذاشتیم. اما خب اونجا یه کوچولو بیشتر از بقیه جاها قرار دادیم.
درباره مدرس.
من سجاد رحمانی هستم.
موارد زیر رو نه از سر خودنمایی، بلکه به این دلیل میگم که شما احتمالاً با خودتون میگید خب چرا باید به این مدرس اعتماد کنم؟ از کجا معلوم که خوب درس بده! برای همین سعی میکنم برخی از سوابق تدریسم رو در زیر بیارم.
سوابق مرتبط با تدریس پایتون من:
- سابقه تدریس پایتون برای رقابتهای فتح پرچم (CTF) برای بنیاد ملی نخبگان.
- سابقه تدریس یادگیری ماشین با پایتون برای کارگاههای کنفرانس بینالمللی تحقیق در عملیات.
- سابقه تدریس پایتون برای بیش از 10 انجمن علمی برتر کشور (صنعتی شریف، دانشگاه تهران، امیرکبیر، علم و صنعت، خواجه نصیر، الزهرا و کلی موارد دیگه).
- سابقه تدریس پایتون به زبان انگلیسی برای مخاطبهای انگلیسی زبان از سال 2020.
آیا دوره پشتیبانی هم داره؟
هدف من این بوده که قیمت دوره، تا حدی که راه داره زیاد نشه. به همین دلیل پشتیبانی رو جزء خود دوره قرار ندادم. اما شما میتونید به صورت جداگانه، اشتراک ماهانه پشتیبانی تهیه کنید و همینطور که دوره رو دارید میبینید، سوالاتتون رو بپرسید. برای کسب اطلاعات بیشتر در این مورد، اینجا کلیک کنید.
سوالات پرتکرار شما.
- بعد از خرید، فایلها چطور در اختیار ما قرار میگیره؟
- بلافاصله بعد از خرید، فقط کافیه برید توی پروفایل کاربریتون. میبینید که در بخش دانلودها از پنلکاربریتون، دورهای که خریدید به صورت اتومات و سیستمی به پنلکاربری شما اضافه شده و میتونید همون لحظه شروع کنید به نگاه کردن دوره.
- آیا امکان دانلود فایلها وجود داره؟
- در حال حاضر بله، امکان دانلود وجود داره و بعد از تهیه دوره میتونید، دوره رو دانلود کنید.
سرفصلهای کلی دوره تشخیص چهره با پایتون.
خب. همین اول تاکید بکنم که در طول دوره، خیلی موارد جزئیتر دیگهای هم بحث میشه. اما در پایین، به صورت کلی، سرفصلهای اصلی که در این دوره بحث میشه رو آوردم.
خواندن تصویر و سپس اِعمال مدل تشخیص چهره بر روی آن.
اول کار با تصویر شامل یک چهره شروع میکنیم، اما اون اواخر به تصاویر با چند چهره، وبکم، وبکم با گوشی، فیلم و … هم میرسیم.
تفسیر خروجیهای مدل تشخیص چهره در پایتون به صورت خیلی جزئی.
اینو یه توضیح بدم: وقتی شما تصویر رو میخونید و میدید به مدل تشخیص چهره، و بعد مثلاً از خروجیش یک print میگیرید. میبینید که کلی اطلاعات بهتون نشون میده! کلی عددهای بین صفر و یک عجیب و غریب که معلوم نیست چی مالِ چی است! و اصلاً در نگاه اول اینجوری به نظر میرسه که معلوم نیست هر کدوم مربوط به کدوم بخش است! ما برای توضیح این خروجیها، در قالب چند فیلم سعی میکنیم خیلی با جزئیات در موردشون صحبت کنیم. حتی میریم در اسلاید، و به صورت عددی اونا رو باهم حساب میکنیم تا قشنگ و کامل منظور اون موارد رو متوجه بشید.
بررسی landmarks یا همان key points که در فارسی بهشون میگیم نقاط کلیدی.
در این دوره، مدلی که پکیج mediapipe (که پشتش Google هست) استفاده میکنه، از 6 نقطه کلیدی (6 تا landmark) استفاده میکنه. این نقاط کلیدی عبارتاند از چشم راست، چشم چپ، دماغ، دهان، گوش راست، گوش چپ. که ما در مورد ترتیبشون، مکان و مختصاتشون، جایی که شخص میتونه این موارد رو در خروجی پیدا کنه و نحوه تبدیل اون اعداد به اعداد دستگاه مختصات و با جزئیات صحبت میکنیم!
بررسی BBox (یا همان Bounding Box) که در واقع کادری است که دور چهره شخص کشیده میشه.
ما در مورد اینکه، این کادر رو بر اساس خروجی که mediapipe میده، چطور میشه رسم کرد، خیلی کامل صحبت میکنیم و حتی کلی توضیحات توی اسلاید میدیم تا شخص کاملاً منطق و نحوه کشیدن این کادر رو متوجه بشه. تمام این فرآیند کشیدن کادر، با پکیج OpenCV انجام میشه.
پیادهسازی score با پسزمینه.
از موارد دیگه که شاید در نگاه اول به نظرتون برسه که با یک خط کُد میشه انجامش داد، همون نمایش میزان اطمینان تشخیص چهره است. ولی اصلاً این طور نیست!!! و ما چندین فیلم، به همین یه موضوع میپردازیم! و میایم خیلی جزئی در مورد این صحبت میکنیم که این متن کجا قرار بگیره، با چه فونت و چه اندارهای، چطور پسزمینهش رو عوض کنیم، چطور نوشته رو طوری تنظیم کنیم که از کادر پسزمینه و همچنین BBox بیرون نزنه و کلی موارد جزئی که هم در اسلاید و هم در قالب کد، سعی میکنیم خیلی جزئی توضیح بدیم! بعد از پیادهسازی این بخش، به محض تشخیص چهره، میزان «اطمینانِ مدل» از اون تشخیص چهره رو خیلی قشنگ در بالای سر شخص و به صورت اتومات نشون میده.
تشخیص «چندین چهره» در یک تصویر به طور همزمان.
در اینجا میایم این رو توضیح میدیم که مثلاً اگر در یک تصویر چندین چهره داشت، چیکار باید بکنید تا بتونه همه اون چهرهها رو تشخیص بده.
کدنویسی برای تشخیص چهرههای دورتر از دوربین و نزدیک به دوربین.
پکیج MediaPipe برای چهرههایی که به دوربین نزدیک هستن یه مدل داره. برای چهرههایی که از دوربین دورتر هستن، یه مدل دیگه! و شما موقع تشخیص چهره باید حواستون به این نکته باشه. وگرنه خروجی که میگیرید به هیچوجه مناسب نخواهد بود! و اگر اینو رعایت نکنید، میبینید که بعضی چهرهها رو اصلاً تشخیص نداده و یا اطمینانش در تشخیص چهره خیلی پایینه.
رفع مشکلات کادر دور چهره (BBox) در چهرههای دورتر.
وقتی چهره دورتر میشه، طبیعتاً کادر دور تصویر (BBox) کوچیک میشه و این باعث میشه مثلاً score (همون اطمینانی که روی چهره میندازید) از کادر بزنه بیرون! که اینو باید خودتون در کدنویسی حتماً یه جوری رفعش کنید. که ما برای رفع این مشکل، 3 روش رو اشاره میکنیم. اما یکی از این 3 روش بهتره که همونو مفصل و حتی در در قالب اسلاید و کُد توضیح میدیم. البته اون 2 راه دیگه رو هم توضیح میدیم.
تشخیص چهره از وبکم در پایتون.
شما میتونید وبکم خودتون رو روشن کنید و بعد سیستم خودش به صورت اتومات هر چهرهای که ببینه رو تشخیص میده و دورش کادر میکشه و الی آخر.
چطور از گوشی تلفن همراه به عنوان وبکم و برای تشخیص چهره با پایتون استفاده کنیم؟
شما میتونید حتی از گوشیتون به عنوان وبکم استفاده کنید. چندین خوبی داره. یکی از واضحترینهاش اینه که کیفیت گوشی خیلی خیلی بهتر از کیفیت وبکم معمولی است. دوماً بعضی لپتاپها کلاً وبکم ندارن. سوماً اگر وبکمهای اکسترنال رو بذاریم کنار، وبکمهای معمولی که روی لپتاپ سوار هستن، امکان چرخش، حرکت و غیره ندارن. اما گوشی این قابلیت رو داره. برای همین ما نحوه تشخیص چهره با پایتون با استفاده از دوربین تلفن همراه رو هم توضیح میدیم.
استفاده از گوشی به عنوان وبکم با کابل و بدون نیاز به Wifi.
یکی از رایجترین چیزهایی که بعضی آموزشهای انگلیسیزبان اشاره میکنن، استفاده از wifi برای این هدف هست. منظورم از هدف، استفاده از گوشی تلفن همراه به عنوان وبکم هست. ولی میشه با کابل گوشیتون هم همین کار رو انجام داد. فقط کافیه کمی تنظیمات انجام بدید، که این رو هم در دوره بهش اشاره میکنیم و این تنظیمات رو روی یک گوشی Samsung (مدل A51) انجام میدیم. ولی شما میتونید به طور مشابه در مورد گوشی خودتون هم اون رو انجام بدید و برای فعالکردن اون قابلیت، کمی سرچ بکنید. که نحوه سرچ و اینکه چی سرچ بکنید و غیره رو توضیح میدیم در دوره.
تشخیص چهره با پایتون روی ویدئو.
این هم خیلی وقتها نیازه. شما یه ویدئو میرید ضبط میکنید و بعد، «ویدئو ضبط شده» رو میخواید بدید پایتون تا براتون تشخیص چهره بده. این کار رو هم در این دوره آموزش میدیم.
نحوه گرفتن اسامی landmarkها و ترتیب آنها از پکیج MediaPipe به کمک کُد.
نحوه گرفتن اسم و اندیس تمام landmarkها از خود پکیج MediaPipe به کمک کُد، توضیح داده میشه.
پیشنیازهای این دوره.
برای این دوره، سه پیشنیاز وجود داره:
دوره پایتون خودمون (لینک: دوره آموزش پایتون کولاک).
دوره NMP خودمون (لینک: دوره آموزش NMP کولاک).
- NMP مخفف سه پکیج NumPy و Matplotlib و Pandas پایتون است که به شدت پرکاربرد و پراستفادهاند.
دوره OpenCV خودمون (لینک: دوره آموزش OpenCV کولاک).
ترتیب بالا کاملاً ترتیبی است که یک شخص باید این موارد رو ببینه. یعنی اون شخص، اول باید دوره پایتون، بعد NMP و بعد OpenCV رو ببینه. بعد از گذروندن این سه پیشنیاز میتونه بیاد سراغ این دوره تشخیص چهره.
شاید بگید چرا پیشنیاز؟ نمیشد توی همین دوره دوباره پیشنیازها رو میگفتید؟
جواب: باور کنید نمیشه. مثلاً فرض کنید یک معلم ریاضی، در مدرسه میخواد انتگرال درس بده. آیا میتونه برگرده از اول دبستان و همه ریاضیات مربوطه و مثلاً چه میدونم جدولضرب سوم دبستان و غیره رو دوباره درس بده؟! طبیعتاً نه. یا مثلاً فرض کنید یکی میخواد مشتق رو در ریاضی درس بده، آیا میتونه از اول دبستان شروع کنه و دوباره همه مباحث ریاضیاتی پایههای قبلی رو از اول بگه؟! طبیعتاً نه.
پس پیشنیازیها رو نمیشه مجدداً در همه دورهها تکرار کرد. برای همین میگیم این دوره پیشنیاز داره.
به امید رضایت 100 درصدی شما عزیزان.
هنوز بررسیای ثبت نشده است.