پیشبینی کنشهای انسانی
جزئیات
این پروژه، پروژه شماره 3 برای کلاس «رباتیک انسانمحور» دکتر ژانگ (CSCI473) در مدرسه معادن کلرادو در طول ترم بهار 2020 بود. این پروژه برای ارائه یک مقدمه بر یادگیری ماشین در رباتیک از طریق استفاده از ماشینهای بردار پشتیبان (SVM) طراحی شده بود. تحویلها/توضیحات اصلی پروژه را میتوان اینجا مشاهده کرد.
برای این پروژه، مجموعهداده فعالیت روزانه 3D MSR (شکل 2)، با برخی تغییرات، استفاده شد. این مجموعهداده شامل 16 فعالیت انسانی است که از یک حسگر Xbox Kinetic گردآوری و بهصورت اسکلتها ذخیره شدهاند. اسکلتها یک آرایه از مختصات دنیای واقعیِ (x, y, z) برای 20 مفصل یک انسان هستند که در یک فریم ثبت شدهاند. در اینجا شکلی آمده است که نشان میدهد یک اسکلت چیست:
برای دستیابی به پیشبینی کنش انسانی، دادههای خام باید در قالبی ارائه شوند که توسط یک SVM قابل پردازش باشد. برای این پروژه، بازنماییهای زیر استفاده شدند:
- بازنمایی زاویهها و فاصلههای نسبی (RAD)
- بازنمایی هیستوگرام اختلافهای موقعیت مفصلها (HJPD)
برای طبقهبندی، بازنمایی(ها) به یک SVM، که توسط LIBSVM پشتیبانی میشود، فرستاده میشود تا مدلی ایجاد شود که بتواند کنشهای انسانی را پیشبینی کند. دو مدل ساخته خواهد شد، یکی با استفاده از RAD و دیگری با استفاده از HJPD. هدف این است که این مدلها تا حد امکان دقیق باشند و ببینیم کدام بازنمایی بهترین عملکرد را دارد.
با دانستن این موضوع، در اینجا یک نمای کلی از کاری که کد انجام میدهد آمده است:
- بارگذاری دادههای خام از مجموعهداده تغییریافته
- حذف هرگونه داده پرت و/یا خطا از مجموعهداده بارگذاریشده
- تبدیل دادههای خام نهایی به بازنماییهای RAD و HJPD
- بازنماییها به SVM(های) تنظیمشده فرستاده میشوند تا دو مدل تولید شود
- سپس دو مدل با دادههای خامِ آزمون تغذیه میشوند و یک ماتریس درهمریختگی تولید میشود تا میزان عملکرد مدل(ها) اندازهگیری شود.
نتایج
پس از اجرای کد و تنظیم مدلها تا بهترین تواناییام، در اینجا ماتریس درهمریختگی نهایی برای هر دو مدل RAD و HJPD آمده است:
Representation: RAD
Accuracy: 62.5%
LIBSVM Classification 8.0 10.0 12.0 13.0 15.0 16.0
Actual Activity Number
8.0 8 0 0 0 0 0
10.0 1 5 0 0 1 1
12.0 0 1 1 0 3 3
13.0 0 0 0 6 1 1
15.0 0 0 0 1 5 2
16.0 0 0 0 0 3 5
Representation: HJPD
Accuracy: 70.83%
LIBSVM Classification 8.0 10.0 12.0 13.0 15.0 16.0
Actual Activity Number
8.0 7 1 0 0 0 0
10.0 1 5 0 0 0 2
12.0 0 0 7 0 1 0
13.0 2 0 1 5 0 0
15.0 0 0 0 0 7 1
16.0 0 2 0 0 3 3
نتیجهگیری
از آنجا که هر دو دقت بالای 50٪ هستند، این پروژه موفقیتآمیز بود. همچنین، به نظر میرسد بازنمایی HJPD بازنمایی دقیقتری برای استفاده در این طبقهبندیها باشد. با این وجود، مدلی(هایی) وجود دارد که کنشهای انسانی را با استفاده از دادههای اسکلتی پیشبینی میکند. مدل(های) اینجا بسیار دور از کامل بودن هستند، اما از حالت تصادفی بهترند. این پروژه همان چیزی بود که بعدها به پروژه Moving Pose جان بخشید.
یادداشتهای اضافی:
- این پروژه روی نسخه 3.8.13 پایتون آزمایش شد
- برای این پروژه، از مجموعهداده کامل MDA3 و یک مجموعهداده تغییریافته MDA3 استفاده شده است. MDA3 تغییریافته فقط شامل فعالیتهای 8، 10، 12، 13، 15 و 16 است. همچنین نسخه تغییریافته برخی نقاط داده «آسیبدیده» دارد در حالی که مجموعهداده کامل اینگونه نیست.
- نمایش فضازمانی افراد بر پایه دادههای اسکلتی سهبعدی: یک مرور
- یوتیوب: حسگر عمق Kinect چگونه در 2 دقیقه کار میکند
- مدیوم: درک مفاصل Kinect V2 و سیستم مختصات
- صفحه ویکیپدیا Kinect
- Jameco Xbox Kinect
- اطلاعات درباره SVM(ها) و LibSVM: cjlin libsvm، صفحه pypi libsvm، و libsvm github
- منطق و مستندات SVM و LIBSVM: مقاله راهنمای cjlin و مجموعهدادههای cjlin libsvmtools
- اطلاعات درباره مجموعهداده استفادهشده/تغییریافته