मानव क्रियाओं की भविष्यवाणी
विवरण
यह प्रोजेक्ट 2020 वसंत सेमेस्टर के दौरान कोलोराडो स्कूल ऑफ माइन्स में डॉ. झांग की ह्यूमन सेंटर्ड रोबोटिक्स (CSCI473) कक्षा के लिए प्रोजेक्ट #3 था। इसे सपोर्ट वेक्टर मशीनों (SVM) के उपयोग के माध्यम से रोबोटिक्स में मशीन लर्निंग का परिचय प्रदान करने के लिए डिज़ाइन किया गया था। मूल प्रोजेक्ट विवरण/निर्देशन को यहाँ देखा जा सकता है।
इस प्रोजेक्ट के लिए MSR डेली एक्टिविटी 3D डेटासेट (चित्र 2), कुछ संशोधनों के साथ, उपयोग किया गया था। इस डेटासेट में Xbox Kinetic सेंसर से एकत्रित और कंकालों के रूप में संग्रहीत 16 मानव गतिविधियाँ शामिल हैं। कंकाल एक मानव के 20 जोड़ो के वास्तविक-विश्व (x, y, z) निर्देशांकों की एक सरणी है, जिसे एक फ्रेम में रिकॉर्ड किया गया है। यहाँ एक चित्र है जो दिखाता है कि कंकाल क्या होता है:
मानव क्रिया की भविष्यवाणी प्राप्त करने के लिए, कच्चे डेटा को एक ऐसे रूप में निरूपित किया जाना चाहिए जिसे SVM द्वारा संसाधित किया जा सके। इस प्रोजेक्ट के लिए, निम्नलिखित निरूपणों का उपयोग किया गया:
- सापेक्ष कोण और दूरी (RAD) निरूपण
- संयुक्त स्थिति अंतरों का हिस्टोग्राम (HJPD) निरूपण
वर्गीकरण के लिए, निरूपण(ओं) को LIBSVM द्वारा संचालित एक SVM में भेजा जाता है, ताकि एक ऐसा मॉडल बनाया जा सके जो मानव क्रियाओं की भविष्यवाणी कर सके। दो मॉडल बनाए जाएँगे, एक RAD का उपयोग करके और दूसरा HJPD का उपयोग करके। लक्ष्य इन मॉडलों को यथासंभव सटीक बनाना और यह देखना है कि कौन-सा निरूपण सबसे बेहतर प्रदर्शन करता है।
यह जानते हुए, यहाँ कोड क्या करता है उसका एक अवलोकन दिया गया है:
- संशोधित डेटासेट से कच्चा डेटा लोड करें
- लोड किए गए डेटासेट से किसी भी आउट्लायर और/या त्रुटि डेटा को हटाएँ
- अंतिम कच्चे डेटा को RAD और HJPD निरूपणों में परिवर्तित करें
- निरूपणों को ट्यून किए गए SVM(ओं) में भेजकर दो मॉडल उत्पन्न करें
- फिर इन दो मॉडलों को परीक्षण कच्चा डेटा दिया जाता है और यह मापने के लिए एक confusion matrix उत्पन्न की जाती है कि मॉडल(ओं) ने कैसा प्रदर्शन किया।
परिणाम
कोड चलाने और मॉडलों को अपनी क्षमता के अनुसार सर्वश्रेष्ठ रूप से ट्यून करने के बाद, RAD और HJPD दोनों मॉडलों के लिए अंतिम confusion matrix यहाँ है:
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(ओं) और LibSVM के बारे में जानकारी: cjlin libsvm, libsvm pypi पृष्ठ, और libsvm github
- SVM और LIBSVM तर्क एवं प्रलेखन: cjlin guide paper और cjlin libsvmtools datasets
- उपयोग/संशोधित डेटासेट के बारे में जानकारी