TinyML: नन्हीं चिप्स पर AIमध्यमपाठ 2766 मिनट का पाठ

सेंसर डेटा इकट्ठा करना

एक TinyML मॉडल उतना ही अच्छा होता है जितना कि उसका डेटा। जानें कि एक्सेलेरोमीटर और माइक्रोफ़ोन डेटा कैसे बनाते हैं, उसे लेबल कैसे करते हैं, और उसे विंडोज़ (windows) में कैसे काटते हैं।

पाठ वीडियो में

60 सेकंड में

सेंसर डेटा इकट्ठा करना

एक TinyML मॉडल उतना ही अच्छा होता है जितना कि उसका डेटा। जानें कि एक्सेलेरोमीटर और माइक्रोफ़ोन डेटा कैसे बनाते हैं, उसे लेबल कैसे करते हैं, और उसे विंडोज़ (windows) में कैसे काटते…

1/5
आसान शब्दों में
सोचिए कि आप किसी दोस्त को सिर्फ़ बैट के मूवमेंट को महसूस करके क्रिकेट के शॉट्स पहचानना सिखा रहे हैं। आप कई शॉट्स रिकॉर्ड करेंगे, और लिखकर रखेंगे कि कौन सा कवर ड्राइव था और कौन सा पुल। उन नोट्स के बिना, आपका दोस्त बैट को महसूस तो कर सकता है पर उनके नाम कभी नहीं जान पाएगा। डेटा इकट्ठा करना और उसे लेबल करना बिल्कुल ऐसा ही है।

दो आम सेंसर

एक accelerometer तीन axes (धुरियों) पर एक्सेलेरेशन मापता है: x, y और z। जब डिवाइस स्थिर (still) होता है, तब भी यह लगभग 1 g की रीडिंग देता है, क्योंकि यह गुरुत्वाकर्षण (gravity) को महसूस करता है। इसलिए ये संख्याएँ आपको बताती हैं कि डिवाइस किस तरह झुका हुआ है और कैसे हिल रहा है। फ़ोनों, फ़िटनेस बैंड्स और कई छोटे बोर्ड्स में यह होता है।
एक microphone हवा के दबाव में होने वाले बदलावों को एक सेकंड में कई हज़ार बार मापता है। बातचीत (speech) के लिए, एक सामान्य दर 16,000 सैंपल्स प्रति सेकंड होती है। ऑडियो मॉडल आमतौर पर सीधे रॉ सैंपल्स का इस्तेमाल नहीं करते; वे पहले ऑडियो के छोटे टुकड़ों को एक spectrogram में बदलते हैं, जो इस बात की तस्वीर होती है कि समय के साथ कौन सी फ़्रीक्वेंसीज़ कितनी तेज़ हैं।
सेंसरआमतौर पर मिलने वाला डेटाइन कामों के लिए अच्छा है
Accelerometerएक सेकंड में दसियों से लेकर सैकड़ों बार 3 संख्याएँ (x, y, z)जेस्चर, एक्टिविटी (स्थिर रहना, चलना, दौड़ना), गिरना, मशीनों का कंपन (vibration)
Gyroscopeघूमने की गति (rotation speed) के लिए 3 संख्याएँमुड़ने और मरोड़ने वाले जेस्चर, अक्सर एक्सेलेरोमीटर के साथ इस्तेमाल होता है
Microphoneएक सेकंड में हज़ारों सैंपल्सवेक वर्ड्स, खाँसी जैसी आवाज़ें, अलार्म या मशीनों का शोर
छोटा कैमराकम रेजोल्यूशन वाली तस्वीरेंइंसान मौजूद है या नहीं, आसान चीज़ें पहचानना

सैंपलिंग रेट और विंडोज़

Sampling rate वह दर है जिससे सेंसर हर सेकंड रीडिंग देता है। एक मॉडल किसी एक रीडिंग को नहीं देखता; वह एक window को देखता है, उदाहरण के लिए एक सेकंड का डेटा। विंडोज़ आम तौर पर overlap (एक दूसरे पर चढ़ती) करती हैं: हर आधे सेकंड में एक नई विंडो शुरू होती है, ताकि जो जेस्चर एक विंडो के किनारे पर कट जाए, वह दूसरी विंडो के अंदर पूरी तरह आ सके।
Python: two seconds of made-up walking data, with labelspython
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))

लेबलिंग

एक label डेटा के एक टुकड़े का सही जवाब होता है: "चलना", "स्थिर", "वेक वर्ड", "बैकग्राउंड"। मॉडल डेटा और लेबल्स के बीच का रिश्ता सीखता है, इसलिए खराब लेबल्स से वह गलत चीज़ें सीखेगा।
  1. 1

    क्लासेज़ की योजना बनाएं

    तय करें कि आपको किन कुछ क्लासेज़ की ज़रूरत है। हमेशा "इनमें से कोई नहीं" या "background" को शामिल करें।
  2. 2

    असली परिस्थितियों में रिकॉर्ड करें

    उसी बोर्ड, सेंसर लगाने की उसी जगह और उन्हीं जगहों का इस्तेमाल करें जहाँ इसे असल में इस्तेमाल किया जाएगा।
  3. 3

    रिकॉर्ड करते समय ही लेबल करें

    कोई बटन दबाएं या लेबल बोलें, ताकि आपको बाद में अंदाज़ा न लगाना पड़े।
  4. 4

    अलग-अलग लोगों और जगहों को शामिल करें

    अलग-अलग लोग, स्पीड, कमरे, शोर का स्तर और डिवाइस को पकड़ने के अलग-अलग तरीके।
  5. 5

    कुछ डेटा अलग रखें

    टेस्टिंग के लिए कुछ लोगों या दिनों की रिकॉर्डिंग्स को अलग बचाकर रखें। उन पर मॉडल को कभी ट्रेन न करें।
डेटा जो आपको धोखा देता है
  • एक ही व्यक्ति द्वारा एक ही दिन में रिकॉर्ड किया गया सारा "चलना"
  • एक व्यस्त किचन में इस्तेमाल होने वाले वेक वर्ड के लिए सिर्फ़ शांत कमरे की रिकॉर्डिंग्स
  • टेस्ट विंडोज़ को उसी रिकॉर्डिंग से काटना जिससे ट्रेनिंग विंडोज़ काटी गई हैं
  • कोई "background" क्लास नहीं, इसलिए हर आवाज़ एक कमांड ही समझी जाएगी
डेटा जो काम आता है
  • कई लोग, कई दिन, अलग-अलग जूते और फ़र्श
  • पंखा, टीवी, ट्रैफ़िक और प्रेशर कुकर की सीटी के साथ रिकॉर्डिंग्स
  • ट्रेनिंग से अलग लोगों या सेशन्स का टेस्ट डेटा
  • एक बड़ी और विविध "background" या "unknown" क्लास
सावधान रहें
लोगों की आवाज़ें या मूवमेंट रिकॉर्ड करना पर्सनल डेटा होता है। साफ़ तौर पर इजाज़त लें, समझाएं कि आप क्या रिकॉर्ड करेंगे और क्यों, इसे सुरक्षित रखें, और काम पूरा होने पर इसे डिलीट कर दें। उन लोगों को रिकॉर्ड न करें जिन्होंने सहमति नहीं दी है।
नोट
कई TinyML प्लेटफ़ॉर्म किसी समर्थित बोर्ड या फ़ोन से सीधे एक लेबल्ड डेटासेट में डेटा इकट्ठा कर सकते हैं। यह बहुत सुविधाजनक है, लेकिन नियम वही लागू होते हैं: विविधता, साफ़ लेबल्स और एक अलग टेस्ट सेट।
यह आज़माएं। ऊपर दिए गए कोड में, रेट को 100 सैंपल्स प्रति सेकंड में बदलें। अब 2 सेकंड में कितने सैंपल्स होंगे? एक विंडो के लिए ज़रूरी मेमोरी पर क्या असर पड़ता है?

और देखें और पढ़ें

लैब

एक काम करने वाला विंडोइंग फ़ंक्शन जो एक लेबल्ड एक्सेलेरोमीटर रिकॉर्डिंग को ट्रेनिंग के उदाहरणों में बदलता है।

~25 min

समस्या

शुरुआती कोड 50 सैंपल्स प्रति सेकंड पर 23 सेकंड की एक बनावटी एक्सेलेरोमीटर रिकॉर्डिंग (still, walking, shaking, still) बनाता है, जिसमें हर सैंपल के लिए एक लेबल है। यह सिग्नल को दिखाता भी है।

  1. make_windows(signal, labels, size, step) लिखें। जब तक पूरी विंडो समा सकती है, तब तक विंडो को 0, step, 2 × step आदि से शुरू करें। हर विंडो signal[start:start+size] होगी।
  2. किसी विंडो को तभी रखें जब उसके सभी लेबल्स एक जैसे हों, और उसे वही लेबल दें। जिन विंडोज़ में दो एक्टिविटीज़ मिक्स हों, उन्हें हटा दें।
  3. (windows, size, 3) शेप वाला X और प्रति विंडो एक लेबल वाला y लौटाएं।
  4. इसे size 50 और step 25 के साथ चलाएं। फिर step 50 (बिना ओवरलैप के) आज़माएं। अब आपको कितनी विंडोज़ मिलती हैं?

प्रैक्टिस लैब

कोड में बदलाव करें और इसे रन करें। Python आपके ब्राउज़र में चलता है — हमारे सर्वर पर कुछ नहीं भेजा जाता।

आउटपुट

कोई आउटपुट नहीं। वैल्यूज़ देखने के लिए print(...) जोड़ें।

आपका काम तब पूरा होगा जब

कठिन सवाल

उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।

Q1जिन विंडोज़ में दो लेबल्स मिक्स हों, उन्हें मेजॉरिटी (बहुमत वाला) लेबल देने के बजाय हटाया क्यों जाता है?दिखाएं

एक विंडो जो आधी "still" और आधी "walking" है, वह दोनों में से किसी का भी साफ़ उदाहरण नहीं है। उस पर किसी एक लेबल के साथ ट्रेनिंग देने से मॉडल को धुंधली सीमाएं सीखने को मिलती हैं। इसे हटा देना आसान और सुरक्षित है। कुछ प्रोजेक्ट्स ऐसी विंडोज़ को मेजॉरिटी लेबल के साथ रख लेते हैं, या एक "transition" क्लास जोड़ते हैं, लेकिन यह फैसला आपको सोच-समझकर करना चाहिए।

Q2आपका जेस्चर मॉडल आपके लिए काम करता है लेकिन आपके दोस्त के लिए फ़ेल हो जाता है। डेटा से जुड़ी दो संभावित समस्याएं बताएं।दिखाएं

पहला, सारा ट्रेनिंग डेटा एक ही व्यक्ति से आया था, इसलिए मॉडल ने आम जेस्चर के बजाय आपकी स्पीड और स्टाइल को सीख लिया। दूसरा, डिवाइस को किसी अलग पोज़ीशन में पकड़ा या पहना गया हो सकता है, जिससे यह बदल जाता है कि कौन सा axis गुरुत्वाकर्षण और मूवमेंट को देखता है। ज़्यादा लोगों और अलग-अलग जगहों पर रखकर डेटा इकट्ठा करें, और ऐसे लोगों पर टेस्ट करें जो ट्रेनिंग डेटा में शामिल नहीं हैं।

जारी रखने के लिए कृपया साइन इन करें।

अक्सर पूछे जाने वाले सवाल

मुझे कितने डेटा की ज़रूरत है?

इसकी कोई तय संख्या नहीं है। अपनी उम्मीद के मुताबिक विविधता को कवर करने लायक डेटा से शुरुआत करें: कई लोग, जगहें और हर एक्शन को करने के अलग-अलग तरीके। ट्रेन करें, अलग रखे गए डेटा पर टेस्ट करें, और गलतियों को देखें। अगर कोई क्लास बार-बार फ़ेल हो रही है, तो ठीक उसी तरह के और डेटा इकट्ठा करें।

क्या मैं इंटरनेट से डेटा इस्तेमाल कर सकता हूँ?

पब्लिक डेटासेट्स अभ्यास के लिए और कुछ आवाज़ों के लिए काम आते हैं। लेकिन आपका सेंसर, बोर्ड और उसे लगाने की जगह बहुत मायने रखती है। फ़ोन के डेटा पर ट्रेन किया गया मॉडल कलाई पर पहने जाने वाले बैंड पर शायद खराब काम करे। हमेशा अपने डिवाइस का डेटा भी जोड़ें, और हर डेटासेट का लाइसेंस ज़रूर चेक करें।

विंडोज़ ओवरलैप क्यों करती हैं?

किसी जेस्चर या शब्द को नहीं पता होता कि आपकी विंडोज़ कहाँ से शुरू होती हैं। ओवरलैप होने से, जो घटना एक विंडो में आधी कट जाती है, वह अगली विंडो में पूरी आने की संभावना होती है। इससे एक ही रिकॉर्डिंग से सीखने के लिए ज़्यादा ट्रेनिंग उदाहरण भी मिल जाते हैं।

क्या मैं फ़ेक (सिंथेटिक) डेटा बना सकता हूँ?

सिंथेटिक डेटा सीखने और कोड टेस्ट करने के लिए बहुत बढ़िया होता है, जैसा कि यहाँ की लैब्स में है। यह विविधता जोड़ने में भी मदद कर सकता है, जैसे साफ़ रिकॉर्डिंग्स में बैकग्राउंड का शोर मिलाना। लेकिन किसी मॉडल पर भरोसा करने से पहले उसे असली रिकॉर्डिंग्स पर टेस्ट किया जाना चाहिए।

पाठ का टेस्ट

5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।

टेस्ट देने और अपनी प्रोग्रेस सेव करने के लिए साइन इन करें