मानव क्रियाओं की भविष्यवाणी

विवरण
यह प्रोजेक्ट कोलोराडो स्कूल ऑफ़ माइन्स में स्प्रिंग 2020 सेमेस्टर के दौरान डॉ. झांग की ह्यूमन सेंटरड रोबोटिक्स (CSCI473) कक्षा के लिए प्रोजेक्ट #3 था। इसे रोबोटिक्स में मशीन लर्निंग का परिचय देने के लिए सपोर्ट वेक्टर मशीन (SVM) के उपयोग के माध्यम से डिज़ाइन किया गया था। मूल प्रोजेक्ट डिलिवरेबल्स/विवरण यहाँ देखा जा सकता है यहाँ।

इस प्रोजेक्ट के लिए MSR Daily Activity 3D Dataset (चित्र 2), कुछ संशोधनों के साथ, उपयोग किया गया। इस डेटासेट में Xbox Kinetic सेंसर से एकत्रित 16 मानव गतिविधियाँ हैं और इन्हें कंकाल के रूप में संग्रहीत किया गया है। कंकाल वास्तविक दुनिया के (x, y, z) निर्देशांक का एक एरे है, जिसमें एक फ्रेम में रिकॉर्ड किए गए मानव के 20 जोड़ों के निर्देशांक होते हैं। यहाँ एक चित्र है जो दिखाता है कि कंकाल क्या है:

मानव क्रिया भविष्यवाणी प्राप्त करने के लिए, कच्चे डेटा को ऐसी रूप में प्रस्तुत किया जाना चाहिए जिसे SVM द्वारा प्रोसेस किया जा सके। इस प्रोजेक्ट के लिए, निम्नलिखित प्रतिनिधित्वों का उपयोग किया गया:
- रिलेटिव एंगल्स एंड डिस्टेंस (RAD) प्रतिनिधित्व
- हिस्टोग्राम ऑफ जॉइंट पोजीशन डिफरेंसेस (HJPD) प्रतिनिधित्व
वर्गीकरण के लिए, प्रतिनिधित्व को एक SVM में भेजा जाता है, जो LIBSVM द्वारा संचालित है, ताकि एक मॉडल बनाया जा सके जो मानव क्रियाओं की भविष्यवाणी कर सके। दो मॉडल बनाए जाएंगे, एक RAD का उपयोग करके और दूसरा HJPD का उपयोग करके। लक्ष्य इन मॉडलों को यथासंभव सटीक बनाना है और देखना है कि कौन सा प्रतिनिधित्व सबसे बेहतर प्रदर्शन करता है।
इसे जानते हुए, यहाँ कोड क्या करता है इसका एक अवलोकन है:
- संशोधित डेटासेट से कच्चा डेटा लोड करें
- लोड किए गए डेटासेट से किसी भी आउट्लायर और/या त्रुटि डेटा को हटाएँ
- अंतिम कच्चे डेटा को RAD और HJPD प्रतिनिधित्व में परिवर्तित करें
- प्रतिनिधित्व को ट्यून किए गए SVM(s) में भेजा जाता है ताकि दो मॉडल उत्पन्न हों
- फिर दो मॉडलों को परीक्षण कच्चा डेटा दिया जाता है और एक कन्फ्यूजन मैट्रिक्स उत्पन्न किया जाता है ताकि मॉडल(स) के प्रदर्शन को मापा जा सके।
परिणाम
कोड चलाने और अपनी क्षमता के अनुसार मॉडलों को ट्यून करने के बाद, यहाँ 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 प्रोजेक्ट को जन्म दिया।
अतिरिक्त नोट्स:
- यह प्रोजेक्ट Python संस्करण 3.8.13 पर परीक्षण किया गया था
- इस प्रोजेक्ट के लिए, पूर्ण MDA3 डेटासेट और एक संशोधित MDA3 डेटासेट का उपयोग किया गया है। संशोधित MDA3 में केवल गतिविधियाँ 8, 10, 12, 13, 15, और 16 शामिल हैं। साथ ही संशोधित संस्करण में कुछ “करप्ट” डेटा पॉइंट्स हैं जबकि पूर्ण डेटासेट में नहीं।
- 3D कंकाल डेटा पर आधारित लोगों की स्पेस-टाइम प्रतिनिधित्व: एक समीक्षा
- YouTube: Kinect डेप्थ सेंसर कैसे काम करता है 2 मिनट में
- Medium: Kinect V2 जोड़ों और कॉर्डिनेट सिस्टम को समझना
- Kinect विकिपीडिया पृष्ठ
- Jameco Xbox Kinect
- SVM(s) और LibSVM के बारे में जानकारी: cjlin libsvm, libsvm pypi page, & libsvm github
- SVM और LIBSVM लॉजिक और दस्तावेज़ीकरण: cjlin guide paper & cjlin libsvmtools datasets
- उपयोग किए गए/संशोधित डेटासेट के बारे में जानकारी