وظیفه MediaPipe Gesture Recognizer به شما امکان می دهد حرکات دست را در زمان واقعی تشخیص دهید و نتایج تشخیص دست را همراه با نشانه های دست های شناسایی شده ارائه می دهد. شما می توانید از این کار برای تشخیص حرکات دست خاص از یک کاربر و فراخوانی ویژگی های برنامه که مطابق با آن حرکات است استفاده کنید.
این وظیفه بر روی داده های تصویری با مدل یادگیری ماشین (ML) عمل می کند و داده های ثابت یا جریان پیوسته را می پذیرد. این کار، نشانه های دست را در مختصات تصویر، نشانه های دستی در مختصات جهان، دستی (چپ/راست)، و دسته های اشاره دست چند دست را نشان می دهد.
شروع کنید
استفاده از این کار را با دنبال کردن یکی از این راهنماهای پیاده سازی برای پلتفرم هدف خود شروع کنید. این راهنماهای مخصوص پلتفرم شما را با استفاده از یک مدل توصیهشده، پیادهسازی اولیه این کار را راهنمایی میکنند و نمونههایی از کد را با گزینههای پیکربندی توصیهشده ارائه میکنند:
جزئیات کار
این بخش قابلیت ها، ورودی ها، خروجی ها و گزینه های پیکربندی این کار را شرح می دهد.
ویژگی ها
- پردازش تصویر ورودی - پردازش شامل چرخش تصویر، تغییر اندازه، عادی سازی و تبدیل فضای رنگی است.
- آستانه امتیاز - نتایج را بر اساس نمرات پیش بینی فیلتر کنید.
- برچسبگذاری لیست مجاز و فهرست رد - دستههای اشارهای که توسط مدل شناسایی میشوند را مشخص کنید.
ورودی های وظیفه | خروجی های وظیفه |
---|---|
Gesture Recognizer ورودی یکی از انواع داده های زیر را می پذیرد:
| Gesture Recognizer نتایج زیر را خروجی می دهد:
|
گزینه های پیکربندی
این کار دارای گزینه های پیکربندی زیر است:
نام گزینه | توضیحات | محدوده ارزش | مقدار پیش فرض | |
---|---|---|---|---|
running_mode | حالت اجرا را برای کار تنظیم می کند. سه حالت وجود دارد: IMAGE: حالت برای ورودی های تک تصویر. VIDEO: حالت برای فریم های رمزگشایی شده یک ویدیو. LIVE_STREAM: حالت پخش زنده داده های ورودی، مانند دوربین. در این حالت، resultListener باید فراخوانی شود تا شنونده ای را برای دریافت نتایج به صورت ناهمزمان تنظیم کند. | { IMAGE, VIDEO, LIVE_STREAM } | IMAGE | |
num_hands | حداکثر تعداد دست ها را می توان توسط GestureRecognizer شناسایی کرد. | Any integer > 0 | 1 | |
min_hand_detection_confidence | حداقل امتیاز اطمینان برای تشخیص دست برای موفقیت در مدل تشخیص کف دست. | 0.0 - 1.0 | 0.5 | |
min_hand_presence_confidence | حداقل امتیاز اطمینان امتیاز حضور دست در مدل تشخیص نقطه عطف دست. در حالت ویدیو و حالت پخش زنده Gesture Recognizer، اگر امتیاز مطمئن حضور دست از مدل نقطه عطف دست کمتر از این آستانه باشد، مدل تشخیص کف دست را فعال میکند. در غیر این صورت، یک الگوریتم ردیابی دست سبک وزن برای تعیین محل دست(ها) برای تشخیص نقطه عطف بعدی استفاده می شود. | 0.0 - 1.0 | 0.5 | |
min_tracking_confidence | حداقل امتیاز اطمینان برای ردیابی دست که موفقیت آمیز در نظر گرفته شود. این آستانه جعبه محدود کننده IoU بین دست ها در فریم فعلی و آخرین فریم است. در حالت ویدیو و حالت جریان تشخیص حرکت، اگر ردیابی ناموفق باشد، تشخیص حرکت تشخیص دست را فعال میکند. در غیر این صورت، تشخیص دست نادیده گرفته می شود. | 0.0 - 1.0 | 0.5 | |
canned_gestures_classifier_options | گزینه هایی برای پیکربندی رفتار طبقه بندی کننده حرکات کنسرو شده. حرکات کنسرو شده عبارتند از ["None", "Closed_Fist", "Open_Palm", "Pointing_Up", "Thumb_Down", "Thumb_Up", "Victory", "ILoveYou"] |
|
| |
custom_gestures_classifier_options | گزینه هایی برای پیکربندی رفتار طبقه بندی کننده حرکات سفارشی. |
|
| |
result_callback | شنونده نتیجه را طوری تنظیم میکند که وقتی تشخیصدهنده اشاره در حالت پخش زنده است، نتایج طبقهبندی را بهصورت ناهمزمان دریافت کند. فقط زمانی قابل استفاده است که حالت اجرا روی LIVE_STREAM تنظیم شده باشد | ResultListener | N/A | N/A |
مدل ها
Gesture Recognizer از یک بسته مدل با دو بسته مدل از پیش بسته بندی شده استفاده می کند: یک بسته مدل نقطه عطف دستی و یک بسته مدل دسته بندی حرکتی. مدل نقطه عطف وجود دست ها و هندسه دست را تشخیص می دهد و مدل تشخیص ژست حرکات را بر اساس هندسه دست تشخیص می دهد.
نام مدل | شکل ورودی | نوع کوانتیزاسیون | مدل کارت | نسخه ها |
---|---|---|---|---|
دسته بندی HandGesture | 192 x 192، 224 x 224 | شناور 16 | اطلاعات | آخرین |
این وظیفه همچنین از تغییر بسته مدل با استفاده از Model Maker پشتیبانی می کند. برای اطلاعات بیشتر در مورد استفاده از Model Maker برای سفارشی کردن مدلها برای این کار، به صفحه سفارشی کردن مدلها برای تشخیص حرکت مراجعه کنید.
بسته مدل شاخص دستی
بسته مدل نقطه عطف دست، مکان یابی نقطه کلیدی 21 مختصات بند انگشتی دست را در نواحی دست شناسایی شده تشخیص می دهد. این مدل بر روی تقریباً 30 هزار تصویر دنیای واقعی و همچنین چندین مدل دست مصنوعی ارائه شده در پسزمینههای مختلف آموزش داده شد. تعریف 21 نشانه را در زیر ببینید:
بسته مدل نشانگر دستی شامل مدل تشخیص کف دست و مدل تشخیص نشانه های دستی است. مدل تشخیص کف دست، ناحیه دستها را از کل تصویر ورودی بومیسازی میکند، و مدل تشخیص نشانههای دست، نشانههای روی تصویر دست بریده شده را که توسط مدل تشخیص کف تعریف شده است، پیدا میکند.
از آنجایی که مدل تشخیص کف دست بسیار وقت گیرتر است، در حالت ویدیو یا حالت پخش زنده، Gesture Recognizer از کادر محدود تعریف شده توسط نشانه های دست شناسایی شده در کادر فعلی برای بومی سازی ناحیه دست ها در فریم بعدی استفاده می کند. این زمانها را کاهش میدهد که تشخیص حرکت مدل تشخیص کف دست را فعال میکند. تنها زمانی که مدل نشانههای دست دیگر نمیتواند تعداد کافی حضور دستها را شناسایی کند، یا ردیابی دست با شکست مواجه میشود، مدل تشخیص کف دست برای تغییر مکان دستها فراخوانی میشود.
بسته مدل طبقهبندی اشاره
بسته مدل طبقهبندی ژست میتواند این حرکات رایج دست را تشخیص دهد:
0 - Unrecognized gesture, label: Unknown
1 - Closed fist, label: Closed_Fist
2 - Open palm, label: Open_Palm
3 - Pointing up, label: Pointing_Up
4 - Thumbs down, label: Thumb_Down
5 - Thumbs up, label: Thumb_Up
6 - Victory, label: Victory
7 - Love, label: ILoveYou
اگر مدل دستها را تشخیص دهد اما اشارهای را تشخیص ندهد، تشخیصدهنده اشاره نتیجه «هیچ» را برمیگرداند. اگر مدل دستها را تشخیص ندهد، تشخیصدهنده اشاره خالی برمیگردد.
بسته مدل طبقهبندی ژست شامل خط لوله شبکه عصبی دو مرحلهای با یک مدل جاسازی اشاره و به دنبال آن یک مدل طبقهبندی ژست است. جزئیات بیشتر را در کارت مدل طبقه بندی ژست مشاهده کنید.
مدل جاسازی اشاره ویژگیهای تصویر را در یک بردار ویژگی رمزگذاری میکند و مدل طبقهبندی یک طبقهبندی حرکتی سبک وزن است که بردار ویژگی را به عنوان ورودی دریافت میکند. بسته مدل طبقهبندی ژستهای ارائهشده شامل طبقهبندی حرکات کنسرو شده است که 7 حرکت رایج دست معرفیشده در بالا را شناسایی میکند. میتوانید با آموزش طبقهبندیکننده اشاره سفارشی خود، بسته مدل را گسترش دهید تا حرکات بیشتری را تشخیص دهد. جزئیات بیشتر را در بخش مدل های سفارشی زیر مشاهده کنید.
در صورتی که هر دو طبقهبندی کننده ژست یکسانی را در دستههای خود تشخیص دهند، تشخیص حرکت با هر دو دستهبندی اشاره اشارهای و دستهبندی اشارهای سفارشی، ژست سفارشی را ترجیح میدهد. اگر فقط یک طبقهبندی ژست اشاره را تشخیص دهد، Gesture Recognizer ژست شناسایی شده را مستقیماً خروجی میدهد.
معیارهای وظیفه
در اینجا معیارهای کار برای کل خط لوله بر اساس مدل های از پیش آموزش دیده بالا آمده است. نتیجه تأخیر، متوسط تأخیر پیکسل 6 با استفاده از CPU / GPU است.
نام مدل | تأخیر CPU | تاخیر GPU |
---|---|---|
Gesture Recognizer | 16.76 میلیثانیه | 20.87 میلیثانیه |
مدل های سفارشی
اگر میخواهید قابلیتهای مدلهای ارائهشده در این کار را بهبود یا تغییر دهید، میتوانید از Model Maker برای اصلاح مدلهای موجود استفاده کنید. مدل های سفارشی مورد استفاده با MediaPipe باید در قالب .task
باشند که یک فایل باندل مدل است. قبل از اینکه مدل خود را بسازید، باید از Model Maker برای اصلاح مدل های ارائه شده برای این کار استفاده کنید.
برای اطلاعات بیشتر در مورد سفارشی کردن مدل برای این کار، به سفارشی کردن مدلها برای تشخیص حرکت مراجعه کنید.