सेंसर डेटा इकट्ठा करना
एक TinyML मॉडल उतना ही अच्छा होता है जितना कि उसका डेटा। जानें कि एक्सेलेरोमीटर और माइक्रोफ़ोन डेटा कैसे बनाते हैं, उसे लेबल कैसे करते हैं, और उसे विंडोज़ (windows) में कैसे काटते हैं।
60 सेकंड में
सेंसर डेटा इकट्ठा करना
एक TinyML मॉडल उतना ही अच्छा होता है जितना कि उसका डेटा। जानें कि एक्सेलेरोमीटर और माइक्रोफ़ोन डेटा कैसे बनाते हैं, उसे लेबल कैसे करते हैं, और उसे विंडोज़ (windows) में कैसे काटते…
दो आम सेंसर
| सेंसर | आमतौर पर मिलने वाला डेटा | इन कामों के लिए अच्छा है |
|---|---|---|
| Accelerometer | एक सेकंड में दसियों से लेकर सैकड़ों बार 3 संख्याएँ (x, y, z) | जेस्चर, एक्टिविटी (स्थिर रहना, चलना, दौड़ना), गिरना, मशीनों का कंपन (vibration) |
| Gyroscope | घूमने की गति (rotation speed) के लिए 3 संख्याएँ | मुड़ने और मरोड़ने वाले जेस्चर, अक्सर एक्सेलेरोमीटर के साथ इस्तेमाल होता है |
| Microphone | एक सेकंड में हज़ारों सैंपल्स | वेक वर्ड्स, खाँसी जैसी आवाज़ें, अलार्म या मशीनों का शोर |
| छोटा कैमरा | कम रेजोल्यूशन वाली तस्वीरें | इंसान मौजूद है या नहीं, आसान चीज़ें पहचानना |
सैंपलिंग रेट और विंडोज़
import numpy as np
import pandas as pd
RATE = 50 # samples per second
SECONDS = 2
t = np.arange(RATE * SECONDS) / RATE
rng = np.random.default_rng(0)
# 2 seconds of made-up "walking" on the z axis: gravity + a step rhythm + noise
z = 1.0 + 0.3 * np.sin(2 * np.pi * 1.8 * t) + rng.normal(0, 0.02, len(t))
df = pd.DataFrame({"time_s": t, "z_g": z.round(3), "label": "walking"})
print(len(df), "samples in", SECONDS, "seconds")
print(df.head(6))लेबलिंग
- 1
क्लासेज़ की योजना बनाएं
तय करें कि आपको किन कुछ क्लासेज़ की ज़रूरत है। हमेशा "इनमें से कोई नहीं" या "background" को शामिल करें। - 2
असली परिस्थितियों में रिकॉर्ड करें
उसी बोर्ड, सेंसर लगाने की उसी जगह और उन्हीं जगहों का इस्तेमाल करें जहाँ इसे असल में इस्तेमाल किया जाएगा। - 3
रिकॉर्ड करते समय ही लेबल करें
कोई बटन दबाएं या लेबल बोलें, ताकि आपको बाद में अंदाज़ा न लगाना पड़े। - 4
अलग-अलग लोगों और जगहों को शामिल करें
अलग-अलग लोग, स्पीड, कमरे, शोर का स्तर और डिवाइस को पकड़ने के अलग-अलग तरीके। - 5
कुछ डेटा अलग रखें
टेस्टिंग के लिए कुछ लोगों या दिनों की रिकॉर्डिंग्स को अलग बचाकर रखें। उन पर मॉडल को कभी ट्रेन न करें।
- एक ही व्यक्ति द्वारा एक ही दिन में रिकॉर्ड किया गया सारा "चलना"
- एक व्यस्त किचन में इस्तेमाल होने वाले वेक वर्ड के लिए सिर्फ़ शांत कमरे की रिकॉर्डिंग्स
- टेस्ट विंडोज़ को उसी रिकॉर्डिंग से काटना जिससे ट्रेनिंग विंडोज़ काटी गई हैं
- कोई "background" क्लास नहीं, इसलिए हर आवाज़ एक कमांड ही समझी जाएगी
- कई लोग, कई दिन, अलग-अलग जूते और फ़र्श
- पंखा, टीवी, ट्रैफ़िक और प्रेशर कुकर की सीटी के साथ रिकॉर्डिंग्स
- ट्रेनिंग से अलग लोगों या सेशन्स का टेस्ट डेटा
- एक बड़ी और विविध "background" या "unknown" क्लास
और देखें और पढ़ें
लैब
एक काम करने वाला विंडोइंग फ़ंक्शन जो एक लेबल्ड एक्सेलेरोमीटर रिकॉर्डिंग को ट्रेनिंग के उदाहरणों में बदलता है।
समस्या
शुरुआती कोड 50 सैंपल्स प्रति सेकंड पर 23 सेकंड की एक बनावटी एक्सेलेरोमीटर रिकॉर्डिंग (still, walking, shaking, still) बनाता है, जिसमें हर सैंपल के लिए एक लेबल है। यह सिग्नल को दिखाता भी है।
make_windows(signal, labels, size, step)लिखें। जब तक पूरी विंडो समा सकती है, तब तक विंडो को 0,step, 2 ×stepआदि से शुरू करें। हर विंडोsignal[start:start+size]होगी।- किसी विंडो को तभी रखें जब उसके सभी लेबल्स एक जैसे हों, और उसे वही लेबल दें। जिन विंडोज़ में दो एक्टिविटीज़ मिक्स हों, उन्हें हटा दें।
- (windows, size, 3) शेप वाला
Xऔर प्रति विंडो एक लेबल वालाyलौटाएं। - इसे size 50 और step 25 के साथ चलाएं। फिर step 50 (बिना ओवरलैप के) आज़माएं। अब आपको कितनी विंडोज़ मिलती हैं?
प्रैक्टिस लैब
कोड में बदलाव करें और इसे रन करें। Python आपके ब्राउज़र में चलता है — हमारे सर्वर पर कुछ नहीं भेजा जाता।
कोई आउटपुट नहीं। वैल्यूज़ देखने के लिए print(...) जोड़ें।
आपका काम तब पूरा होगा जब
कठिन सवाल
उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।
Q1जिन विंडोज़ में दो लेबल्स मिक्स हों, उन्हें मेजॉरिटी (बहुमत वाला) लेबल देने के बजाय हटाया क्यों जाता है?दिखाएं
एक विंडो जो आधी "still" और आधी "walking" है, वह दोनों में से किसी का भी साफ़ उदाहरण नहीं है। उस पर किसी एक लेबल के साथ ट्रेनिंग देने से मॉडल को धुंधली सीमाएं सीखने को मिलती हैं। इसे हटा देना आसान और सुरक्षित है। कुछ प्रोजेक्ट्स ऐसी विंडोज़ को मेजॉरिटी लेबल के साथ रख लेते हैं, या एक "transition" क्लास जोड़ते हैं, लेकिन यह फैसला आपको सोच-समझकर करना चाहिए।
Q2आपका जेस्चर मॉडल आपके लिए काम करता है लेकिन आपके दोस्त के लिए फ़ेल हो जाता है। डेटा से जुड़ी दो संभावित समस्याएं बताएं।दिखाएं
पहला, सारा ट्रेनिंग डेटा एक ही व्यक्ति से आया था, इसलिए मॉडल ने आम जेस्चर के बजाय आपकी स्पीड और स्टाइल को सीख लिया। दूसरा, डिवाइस को किसी अलग पोज़ीशन में पकड़ा या पहना गया हो सकता है, जिससे यह बदल जाता है कि कौन सा axis गुरुत्वाकर्षण और मूवमेंट को देखता है। ज़्यादा लोगों और अलग-अलग जगहों पर रखकर डेटा इकट्ठा करें, और ऐसे लोगों पर टेस्ट करें जो ट्रेनिंग डेटा में शामिल नहीं हैं।
अक्सर पूछे जाने वाले सवाल
मुझे कितने डेटा की ज़रूरत है?
इसकी कोई तय संख्या नहीं है। अपनी उम्मीद के मुताबिक विविधता को कवर करने लायक डेटा से शुरुआत करें: कई लोग, जगहें और हर एक्शन को करने के अलग-अलग तरीके। ट्रेन करें, अलग रखे गए डेटा पर टेस्ट करें, और गलतियों को देखें। अगर कोई क्लास बार-बार फ़ेल हो रही है, तो ठीक उसी तरह के और डेटा इकट्ठा करें।
क्या मैं इंटरनेट से डेटा इस्तेमाल कर सकता हूँ?
पब्लिक डेटासेट्स अभ्यास के लिए और कुछ आवाज़ों के लिए काम आते हैं। लेकिन आपका सेंसर, बोर्ड और उसे लगाने की जगह बहुत मायने रखती है। फ़ोन के डेटा पर ट्रेन किया गया मॉडल कलाई पर पहने जाने वाले बैंड पर शायद खराब काम करे। हमेशा अपने डिवाइस का डेटा भी जोड़ें, और हर डेटासेट का लाइसेंस ज़रूर चेक करें।
विंडोज़ ओवरलैप क्यों करती हैं?
किसी जेस्चर या शब्द को नहीं पता होता कि आपकी विंडोज़ कहाँ से शुरू होती हैं। ओवरलैप होने से, जो घटना एक विंडो में आधी कट जाती है, वह अगली विंडो में पूरी आने की संभावना होती है। इससे एक ही रिकॉर्डिंग से सीखने के लिए ज़्यादा ट्रेनिंग उदाहरण भी मिल जाते हैं।
क्या मैं फ़ेक (सिंथेटिक) डेटा बना सकता हूँ?
सिंथेटिक डेटा सीखने और कोड टेस्ट करने के लिए बहुत बढ़िया होता है, जैसा कि यहाँ की लैब्स में है। यह विविधता जोड़ने में भी मदद कर सकता है, जैसे साफ़ रिकॉर्डिंग्स में बैकग्राउंड का शोर मिलाना। लेकिन किसी मॉडल पर भरोसा करने से पहले उसे असली रिकॉर्डिंग्स पर टेस्ट किया जाना चाहिए।
पाठ का टेस्ट
5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।