TinyML: การรันโมเดลการเรียนรู้เชิงลึกบนไมโครคอนโทรลเลอร์

TinyML นำพลังของ Deep Learning มาใช้กับไมโครคอนโทรลเลอร์

TinyML: การรันโมเดลการเรียนรู้เชิงลึกบนไมโครคอนโทรลเลอร์

การแนะนำ

การเรียนรู้ของเครื่องเป็นศาสตร์ที่ต้องใช้ทรัพยากรมาก เติบโตได้ดีในระบบคลาวด์และศูนย์ข้อมูล ขับเคลื่อนด้วย GPU และอินเทอร์เน็ตความเร็วสูง แต่จะเป็นอย่างไรถ้าเราสามารถนำความชาญฉลาดนั้นมาใช้กับอุปกรณ์ที่ใช้ แบตเตอรี่แบบเหรียญ และมีหน่วยความจำน้อยกว่ารูปถ่ายได้

นั่นคือที่  มาของ TinyML ซึ่งเป็นสาขาที่มีการเติบโตอย่างรวดเร็ว ซึ่ง ผสมผสาน ระบบฝังตัวการเรียนรู้เชิงลึกและ การประมวลผลแบบเอจ เพื่อเปิดใช้งานแอปพลิเคชัน AI แบบเรียลไทม์และใช้พลังงานต่ำบนไมโครคอนโทรลเลอร์

TinyML คืออะไรกันแน่?

TinyML (Tiny Machine Learning) หมายถึงการปรับใช้ โมเดลการเรียนรู้ของเครื่อง บนอุปกรณ์ฮาร์ดแวร์ขนาดเล็กที่ประหยัดพลังงาน เช่น ไมโครคอนโทรลเลอร์ (MCU) ที่มีข้อจำกัดด้านหน่วยความจำ การประมวลผล และพลังงานอย่างรุนแรง

ลักษณะเฉพาะทั่วไปของระบบ TinyML:

  • หน่วยความจำ : RAM น้อยกว่า 256 KB
  • การคำนวณ : ไม่มีหน่วยจุดลอยตัว (มักเป็นจุดคงที่)
  • การใช้พลังงาน : วัดเป็นมิลลิวัตต์
  • ไม่มีระบบปฏิบัติการหรือระบบปฏิบัติการแบบเรียลไทม์ (RTOS)

แม้จะมีข้อจำกัดเหล่านี้ แต่ด้วยการออกแบบและเพิ่มประสิทธิภาพโมเดลที่มีประสิทธิภาพ คุณสามารถดำเนินการ งานอนุมาน ได้ เช่น:

  • การระบุคีย์เวิร์ด
  • การจดจำท่าทาง
  • การตรวจจับความผิดปกติ
  • การติดตามกิจกรรม
  • การจำแนกประเภทภาพ

เหตุใด TinyML จึงมีความสำคัญ

นี่คือเหตุผลว่าทำไมสิ่งนี้ถึงเป็นมากกว่าความอยากรู้อยากเห็นทางวิชาการ:

ตามการวิจัยของ ABI พบว่า อุปกรณ์มากกว่า 2.5 พันล้านเครื่อง จะมาพร้อมกับความสามารถ TinyML ภายในปี 2030

ท่อส่ง TinyML

ความเข้าใจที่ชัดเจนเกี่ยวกับเวิร์กโฟลว์ TinyML จะช่วยรวบรวมทุกอย่างเข้าด้วยกัน ตั้งแต่การรวบรวมข้อมูลจนถึงการปรับใช้ขั้นสุดท้าย

ไดอะแกรมไปป์ไลน์ TinyML

นี่คือภาพตัวแทนของกระบวนการ:

การพังทลายของท่อส่ง

1. การรวบรวมข้อมูล

- รวบรวมข้อมูลเซ็นเซอร์ (เช่น เสียงจากไมโครโฟน การสั่นสะเทือนจากเครื่องวัดความเร่ง)

2. การประมวลผลเบื้องต้นและการสกัดคุณลักษณะ

- แปลงสัญญาณดิบเป็นคุณสมบัติที่ใช้งานได้ เช่น MFCC สำหรับเสียงหรือ FFT สำหรับการสั่นสะเทือน

3. การฝึกอบรมแบบจำลอง

- ใช้กรอบงานเช่น TensorFlow/Keras เพื่อฝึกเครือข่ายประสาทเทียมแบบกะทัดรัดหรือโมเดล ML แบบคลาสสิก

4. การเพิ่มประสิทธิภาพโมเดล

- ลดขนาดและความซับซ้อนโดยใช้การวัดปริมาณ การตัดแต่ง หรือการกลั่น

5. การแปลงเป็นรูปแบบการใช้งาน

- แปลงโมเดลที่ผ่านการฝึกอบรมเป็น อาร์เรย์ .tflite, .onnx, หรือ C (สำหรับการใช้งานระดับต่ำสุด)

6. การปรับใช้บน MCU

- แฟลชโมเดลลงในไมโครคอนโทรลเลอร์ (เช่น Arduino Nano, ESP32, STM32) สำหรับการอนุมานบนอุปกรณ์

7. การอนุมานและผลลัพธ์แบบเรียลไทม์

- MCU ทำการทำนายทันทีโดยใช้ข้อมูลเซ็นเซอร์สด

ตัวอย่างโค้ดจริง: การตรวจจับคำปลุกบน Arduino

มาสร้างโมเดล TinyML ที่สามารถจดจำคำว่า "ใช่" จากเสียงกัน

ขั้นตอนที่ 1: ติดตั้งข้อกำหนด

pip install tensorflow tensorflow-model-optimization

ขั้นตอนที่ 2: ฝึก CNN ง่ายๆ

import tensorflow as tf
from tensorflow.keras import layers

model = tf.keras.Sequential([
    layers.Input(shape=(49, 10, 1)),  # 49 MFCC frames, 10 coefficients
    layers.Conv2D(8, (3, 3), activation='relu'),
    layers.MaxPooling2D(),
    layers.Conv2D(16, (3, 3), activation='relu'),
    layers.MaxPooling2D(),
    layers.Flatten(),
    layers.Dense(32, activation='relu'),
    layers.Dense(2, activation='softmax')  # yes/no
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

ฝึกอบรมโดยใช้ชุดข้อมูลที่ประมวลผลโดย MFCC (เช่น คำสั่งเสียงของ Google)

ขั้นตอนที่ 3: การหาปริมาณสำหรับไมโครคอนโทรลเลอร์

converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()

with open("yes_model.tflite", "wb") as f:
    f.write(tflite_model)

ตอนนี้โมเดลของคุณมีขนาดประมาณ 20–50 KB — พร้อมที่จะปรับใช้แล้ว!

ขั้นตอนที่ 4: แฟลชเป็น Arduino Nano 33 BLE Sense

ใช้ไลบรารี Arduino_TensorFlowLite และแฟลชโมเดล .tflite ตอนนี้คุณสามารถรันการตรวจหาคำสำคัญบนอุปกรณ์ด้วยอินพุตเสียงแบบเรียลไทม์จากไมโครโฟนในตัวได้แล้ว

ความท้าทายใน TinyML

เครื่องมือที่คุณควรลอง

การเริ่มต้น: แผนที่เส้นทางสำหรับผู้เริ่มต้น

  1. เลือกปัญหา : เสียง การเคลื่อนไหว ท่าทาง การตรวจจับความผิดปกติ
  2. เลือกบอร์ดของคุณ : เริ่มต้นด้วย Arduino Nano 33 BLE Sense หรือ ESP32
  3. รวบรวมข้อมูล : ใช้เซ็นเซอร์ออนบอร์ดหรือนำเข้าชุดข้อมูล
  4. ฝึกโมเดลขนาดเล็ก : ใช้ TensorFlow/Keras
  5. วัดปริมาณและแปลง : ตัวแปลง TFLite
  6. ปรับใช้และทดสอบ : แฟลชและแสดงภาพเอาท์พุตผ่าน Serial Monitor

อนาคตของ TinyML

ด้วยการเพิ่มขึ้นของ ตัวเร่งความเร็วฮาร์ดแวร์ Edge TPUและ ระบบนิเวศโอเพนซอร์สอนาคตของ TinyML ดูมีแนวโน้มดี:

  • การเรียนรู้แบบรวมศูนย์บนอุปกรณ์ขอบ
  • การเรียนรู้อย่างต่อเนื่องบนอุปกรณ์
  • สถาปัตยกรรมคลาวด์ไฮบริด + เอจ
  • การค้นหาสถาปัตยกรรมประสาท (NAS) สำหรับการฝังตัว

TinyML กำลังนิยามใหม่ว่าระบบอัจฉริยะจะอยู่ที่ไหนและทำงานอย่างไร แทนที่จะแค่ฝึกอบรมโมเดลที่ชาญฉลาดขึ้น ตอนนี้เรากำลังสร้างอุปกรณ์ที่ชาญฉลาดขึ้น

ความคิดสุดท้าย

TinyML ไม่ได้เป็นแค่ "ML เวอร์ชันย่อ" เท่านั้น แต่มันคือการเปลี่ยนแปลงอย่างสิ้นเชิงในมุมมองของเราเกี่ยวกับการนำปัญญาประดิษฐ์ไปใช้ในโลกแห่งความเป็นจริง TinyML ช่วยให้สามารถใช้ งาน AI แบบเรียลไทม์ เป็นส่วนตัว และประหยัดพลังงาน ปลดล็อกแอปพลิเคชันที่เคยคิดว่าเป็นไปไม่ได้มาก่อน

ไม่ว่าคุณจะเป็นนักวิจัย ผู้สร้าง หรือผู้ที่ชื่นชอบ ML TinyML ถือเป็น ขอบเขตอันทรงอิทธิพล ที่สุด ที่ควรสำรวจในขณะนี้

TinyML: การรันโมเดลการเรียนรู้เชิงลึกบนไมโครคอนโทรลเลอร์

TinyML นำพลังของ Deep Learning มาใช้กับไมโครคอนโทรลเลอร์

นักเขียนบทความ
by 
นักเขียนบทความ
TinyML: การรันโมเดลการเรียนรู้เชิงลึกบนไมโครคอนโทรลเลอร์

TinyML: การรันโมเดลการเรียนรู้เชิงลึกบนไมโครคอนโทรลเลอร์

TinyML นำพลังของ Deep Learning มาใช้กับไมโครคอนโทรลเลอร์

การแนะนำ

การเรียนรู้ของเครื่องเป็นศาสตร์ที่ต้องใช้ทรัพยากรมาก เติบโตได้ดีในระบบคลาวด์และศูนย์ข้อมูล ขับเคลื่อนด้วย GPU และอินเทอร์เน็ตความเร็วสูง แต่จะเป็นอย่างไรถ้าเราสามารถนำความชาญฉลาดนั้นมาใช้กับอุปกรณ์ที่ใช้ แบตเตอรี่แบบเหรียญ และมีหน่วยความจำน้อยกว่ารูปถ่ายได้

นั่นคือที่  มาของ TinyML ซึ่งเป็นสาขาที่มีการเติบโตอย่างรวดเร็ว ซึ่ง ผสมผสาน ระบบฝังตัวการเรียนรู้เชิงลึกและ การประมวลผลแบบเอจ เพื่อเปิดใช้งานแอปพลิเคชัน AI แบบเรียลไทม์และใช้พลังงานต่ำบนไมโครคอนโทรลเลอร์

TinyML คืออะไรกันแน่?

TinyML (Tiny Machine Learning) หมายถึงการปรับใช้ โมเดลการเรียนรู้ของเครื่อง บนอุปกรณ์ฮาร์ดแวร์ขนาดเล็กที่ประหยัดพลังงาน เช่น ไมโครคอนโทรลเลอร์ (MCU) ที่มีข้อจำกัดด้านหน่วยความจำ การประมวลผล และพลังงานอย่างรุนแรง

ลักษณะเฉพาะทั่วไปของระบบ TinyML:

  • หน่วยความจำ : RAM น้อยกว่า 256 KB
  • การคำนวณ : ไม่มีหน่วยจุดลอยตัว (มักเป็นจุดคงที่)
  • การใช้พลังงาน : วัดเป็นมิลลิวัตต์
  • ไม่มีระบบปฏิบัติการหรือระบบปฏิบัติการแบบเรียลไทม์ (RTOS)

แม้จะมีข้อจำกัดเหล่านี้ แต่ด้วยการออกแบบและเพิ่มประสิทธิภาพโมเดลที่มีประสิทธิภาพ คุณสามารถดำเนินการ งานอนุมาน ได้ เช่น:

  • การระบุคีย์เวิร์ด
  • การจดจำท่าทาง
  • การตรวจจับความผิดปกติ
  • การติดตามกิจกรรม
  • การจำแนกประเภทภาพ

เหตุใด TinyML จึงมีความสำคัญ

นี่คือเหตุผลว่าทำไมสิ่งนี้ถึงเป็นมากกว่าความอยากรู้อยากเห็นทางวิชาการ:

ตามการวิจัยของ ABI พบว่า อุปกรณ์มากกว่า 2.5 พันล้านเครื่อง จะมาพร้อมกับความสามารถ TinyML ภายในปี 2030

ท่อส่ง TinyML

ความเข้าใจที่ชัดเจนเกี่ยวกับเวิร์กโฟลว์ TinyML จะช่วยรวบรวมทุกอย่างเข้าด้วยกัน ตั้งแต่การรวบรวมข้อมูลจนถึงการปรับใช้ขั้นสุดท้าย

ไดอะแกรมไปป์ไลน์ TinyML

นี่คือภาพตัวแทนของกระบวนการ:

การพังทลายของท่อส่ง

1. การรวบรวมข้อมูล

- รวบรวมข้อมูลเซ็นเซอร์ (เช่น เสียงจากไมโครโฟน การสั่นสะเทือนจากเครื่องวัดความเร่ง)

2. การประมวลผลเบื้องต้นและการสกัดคุณลักษณะ

- แปลงสัญญาณดิบเป็นคุณสมบัติที่ใช้งานได้ เช่น MFCC สำหรับเสียงหรือ FFT สำหรับการสั่นสะเทือน

3. การฝึกอบรมแบบจำลอง

- ใช้กรอบงานเช่น TensorFlow/Keras เพื่อฝึกเครือข่ายประสาทเทียมแบบกะทัดรัดหรือโมเดล ML แบบคลาสสิก

4. การเพิ่มประสิทธิภาพโมเดล

- ลดขนาดและความซับซ้อนโดยใช้การวัดปริมาณ การตัดแต่ง หรือการกลั่น

5. การแปลงเป็นรูปแบบการใช้งาน

- แปลงโมเดลที่ผ่านการฝึกอบรมเป็น อาร์เรย์ .tflite, .onnx, หรือ C (สำหรับการใช้งานระดับต่ำสุด)

6. การปรับใช้บน MCU

- แฟลชโมเดลลงในไมโครคอนโทรลเลอร์ (เช่น Arduino Nano, ESP32, STM32) สำหรับการอนุมานบนอุปกรณ์

7. การอนุมานและผลลัพธ์แบบเรียลไทม์

- MCU ทำการทำนายทันทีโดยใช้ข้อมูลเซ็นเซอร์สด

ตัวอย่างโค้ดจริง: การตรวจจับคำปลุกบน Arduino

มาสร้างโมเดล TinyML ที่สามารถจดจำคำว่า "ใช่" จากเสียงกัน

ขั้นตอนที่ 1: ติดตั้งข้อกำหนด

pip install tensorflow tensorflow-model-optimization

ขั้นตอนที่ 2: ฝึก CNN ง่ายๆ

import tensorflow as tf
from tensorflow.keras import layers

model = tf.keras.Sequential([
    layers.Input(shape=(49, 10, 1)),  # 49 MFCC frames, 10 coefficients
    layers.Conv2D(8, (3, 3), activation='relu'),
    layers.MaxPooling2D(),
    layers.Conv2D(16, (3, 3), activation='relu'),
    layers.MaxPooling2D(),
    layers.Flatten(),
    layers.Dense(32, activation='relu'),
    layers.Dense(2, activation='softmax')  # yes/no
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

ฝึกอบรมโดยใช้ชุดข้อมูลที่ประมวลผลโดย MFCC (เช่น คำสั่งเสียงของ Google)

ขั้นตอนที่ 3: การหาปริมาณสำหรับไมโครคอนโทรลเลอร์

converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()

with open("yes_model.tflite", "wb") as f:
    f.write(tflite_model)

ตอนนี้โมเดลของคุณมีขนาดประมาณ 20–50 KB — พร้อมที่จะปรับใช้แล้ว!

ขั้นตอนที่ 4: แฟลชเป็น Arduino Nano 33 BLE Sense

ใช้ไลบรารี Arduino_TensorFlowLite และแฟลชโมเดล .tflite ตอนนี้คุณสามารถรันการตรวจหาคำสำคัญบนอุปกรณ์ด้วยอินพุตเสียงแบบเรียลไทม์จากไมโครโฟนในตัวได้แล้ว

ความท้าทายใน TinyML

เครื่องมือที่คุณควรลอง

การเริ่มต้น: แผนที่เส้นทางสำหรับผู้เริ่มต้น

  1. เลือกปัญหา : เสียง การเคลื่อนไหว ท่าทาง การตรวจจับความผิดปกติ
  2. เลือกบอร์ดของคุณ : เริ่มต้นด้วย Arduino Nano 33 BLE Sense หรือ ESP32
  3. รวบรวมข้อมูล : ใช้เซ็นเซอร์ออนบอร์ดหรือนำเข้าชุดข้อมูล
  4. ฝึกโมเดลขนาดเล็ก : ใช้ TensorFlow/Keras
  5. วัดปริมาณและแปลง : ตัวแปลง TFLite
  6. ปรับใช้และทดสอบ : แฟลชและแสดงภาพเอาท์พุตผ่าน Serial Monitor

อนาคตของ TinyML

ด้วยการเพิ่มขึ้นของ ตัวเร่งความเร็วฮาร์ดแวร์ Edge TPUและ ระบบนิเวศโอเพนซอร์สอนาคตของ TinyML ดูมีแนวโน้มดี:

  • การเรียนรู้แบบรวมศูนย์บนอุปกรณ์ขอบ
  • การเรียนรู้อย่างต่อเนื่องบนอุปกรณ์
  • สถาปัตยกรรมคลาวด์ไฮบริด + เอจ
  • การค้นหาสถาปัตยกรรมประสาท (NAS) สำหรับการฝังตัว

TinyML กำลังนิยามใหม่ว่าระบบอัจฉริยะจะอยู่ที่ไหนและทำงานอย่างไร แทนที่จะแค่ฝึกอบรมโมเดลที่ชาญฉลาดขึ้น ตอนนี้เรากำลังสร้างอุปกรณ์ที่ชาญฉลาดขึ้น

ความคิดสุดท้าย

TinyML ไม่ได้เป็นแค่ "ML เวอร์ชันย่อ" เท่านั้น แต่มันคือการเปลี่ยนแปลงอย่างสิ้นเชิงในมุมมองของเราเกี่ยวกับการนำปัญญาประดิษฐ์ไปใช้ในโลกแห่งความเป็นจริง TinyML ช่วยให้สามารถใช้ งาน AI แบบเรียลไทม์ เป็นส่วนตัว และประหยัดพลังงาน ปลดล็อกแอปพลิเคชันที่เคยคิดว่าเป็นไปไม่ได้มาก่อน

ไม่ว่าคุณจะเป็นนักวิจัย ผู้สร้าง หรือผู้ที่ชื่นชอบ ML TinyML ถือเป็น ขอบเขตอันทรงอิทธิพล ที่สุด ที่ควรสำรวจในขณะนี้

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

TinyML: การรันโมเดลการเรียนรู้เชิงลึกบนไมโครคอนโทรลเลอร์

TinyML: การรันโมเดลการเรียนรู้เชิงลึกบนไมโครคอนโทรลเลอร์

TinyML นำพลังของ Deep Learning มาใช้กับไมโครคอนโทรลเลอร์

Lorem ipsum dolor amet consectetur adipiscing elit tortor massa arcu non.

การแนะนำ

การเรียนรู้ของเครื่องเป็นศาสตร์ที่ต้องใช้ทรัพยากรมาก เติบโตได้ดีในระบบคลาวด์และศูนย์ข้อมูล ขับเคลื่อนด้วย GPU และอินเทอร์เน็ตความเร็วสูง แต่จะเป็นอย่างไรถ้าเราสามารถนำความชาญฉลาดนั้นมาใช้กับอุปกรณ์ที่ใช้ แบตเตอรี่แบบเหรียญ และมีหน่วยความจำน้อยกว่ารูปถ่ายได้

นั่นคือที่  มาของ TinyML ซึ่งเป็นสาขาที่มีการเติบโตอย่างรวดเร็ว ซึ่ง ผสมผสาน ระบบฝังตัวการเรียนรู้เชิงลึกและ การประมวลผลแบบเอจ เพื่อเปิดใช้งานแอปพลิเคชัน AI แบบเรียลไทม์และใช้พลังงานต่ำบนไมโครคอนโทรลเลอร์

TinyML คืออะไรกันแน่?

TinyML (Tiny Machine Learning) หมายถึงการปรับใช้ โมเดลการเรียนรู้ของเครื่อง บนอุปกรณ์ฮาร์ดแวร์ขนาดเล็กที่ประหยัดพลังงาน เช่น ไมโครคอนโทรลเลอร์ (MCU) ที่มีข้อจำกัดด้านหน่วยความจำ การประมวลผล และพลังงานอย่างรุนแรง

ลักษณะเฉพาะทั่วไปของระบบ TinyML:

  • หน่วยความจำ : RAM น้อยกว่า 256 KB
  • การคำนวณ : ไม่มีหน่วยจุดลอยตัว (มักเป็นจุดคงที่)
  • การใช้พลังงาน : วัดเป็นมิลลิวัตต์
  • ไม่มีระบบปฏิบัติการหรือระบบปฏิบัติการแบบเรียลไทม์ (RTOS)

แม้จะมีข้อจำกัดเหล่านี้ แต่ด้วยการออกแบบและเพิ่มประสิทธิภาพโมเดลที่มีประสิทธิภาพ คุณสามารถดำเนินการ งานอนุมาน ได้ เช่น:

  • การระบุคีย์เวิร์ด
  • การจดจำท่าทาง
  • การตรวจจับความผิดปกติ
  • การติดตามกิจกรรม
  • การจำแนกประเภทภาพ

เหตุใด TinyML จึงมีความสำคัญ

นี่คือเหตุผลว่าทำไมสิ่งนี้ถึงเป็นมากกว่าความอยากรู้อยากเห็นทางวิชาการ:

ตามการวิจัยของ ABI พบว่า อุปกรณ์มากกว่า 2.5 พันล้านเครื่อง จะมาพร้อมกับความสามารถ TinyML ภายในปี 2030

ท่อส่ง TinyML

ความเข้าใจที่ชัดเจนเกี่ยวกับเวิร์กโฟลว์ TinyML จะช่วยรวบรวมทุกอย่างเข้าด้วยกัน ตั้งแต่การรวบรวมข้อมูลจนถึงการปรับใช้ขั้นสุดท้าย

ไดอะแกรมไปป์ไลน์ TinyML

นี่คือภาพตัวแทนของกระบวนการ:

การพังทลายของท่อส่ง

1. การรวบรวมข้อมูล

- รวบรวมข้อมูลเซ็นเซอร์ (เช่น เสียงจากไมโครโฟน การสั่นสะเทือนจากเครื่องวัดความเร่ง)

2. การประมวลผลเบื้องต้นและการสกัดคุณลักษณะ

- แปลงสัญญาณดิบเป็นคุณสมบัติที่ใช้งานได้ เช่น MFCC สำหรับเสียงหรือ FFT สำหรับการสั่นสะเทือน

3. การฝึกอบรมแบบจำลอง

- ใช้กรอบงานเช่น TensorFlow/Keras เพื่อฝึกเครือข่ายประสาทเทียมแบบกะทัดรัดหรือโมเดล ML แบบคลาสสิก

4. การเพิ่มประสิทธิภาพโมเดล

- ลดขนาดและความซับซ้อนโดยใช้การวัดปริมาณ การตัดแต่ง หรือการกลั่น

5. การแปลงเป็นรูปแบบการใช้งาน

- แปลงโมเดลที่ผ่านการฝึกอบรมเป็น อาร์เรย์ .tflite, .onnx, หรือ C (สำหรับการใช้งานระดับต่ำสุด)

6. การปรับใช้บน MCU

- แฟลชโมเดลลงในไมโครคอนโทรลเลอร์ (เช่น Arduino Nano, ESP32, STM32) สำหรับการอนุมานบนอุปกรณ์

7. การอนุมานและผลลัพธ์แบบเรียลไทม์

- MCU ทำการทำนายทันทีโดยใช้ข้อมูลเซ็นเซอร์สด

ตัวอย่างโค้ดจริง: การตรวจจับคำปลุกบน Arduino

มาสร้างโมเดล TinyML ที่สามารถจดจำคำว่า "ใช่" จากเสียงกัน

ขั้นตอนที่ 1: ติดตั้งข้อกำหนด

pip install tensorflow tensorflow-model-optimization

ขั้นตอนที่ 2: ฝึก CNN ง่ายๆ

import tensorflow as tf
from tensorflow.keras import layers

model = tf.keras.Sequential([
    layers.Input(shape=(49, 10, 1)),  # 49 MFCC frames, 10 coefficients
    layers.Conv2D(8, (3, 3), activation='relu'),
    layers.MaxPooling2D(),
    layers.Conv2D(16, (3, 3), activation='relu'),
    layers.MaxPooling2D(),
    layers.Flatten(),
    layers.Dense(32, activation='relu'),
    layers.Dense(2, activation='softmax')  # yes/no
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

ฝึกอบรมโดยใช้ชุดข้อมูลที่ประมวลผลโดย MFCC (เช่น คำสั่งเสียงของ Google)

ขั้นตอนที่ 3: การหาปริมาณสำหรับไมโครคอนโทรลเลอร์

converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()

with open("yes_model.tflite", "wb") as f:
    f.write(tflite_model)

ตอนนี้โมเดลของคุณมีขนาดประมาณ 20–50 KB — พร้อมที่จะปรับใช้แล้ว!

ขั้นตอนที่ 4: แฟลชเป็น Arduino Nano 33 BLE Sense

ใช้ไลบรารี Arduino_TensorFlowLite และแฟลชโมเดล .tflite ตอนนี้คุณสามารถรันการตรวจหาคำสำคัญบนอุปกรณ์ด้วยอินพุตเสียงแบบเรียลไทม์จากไมโครโฟนในตัวได้แล้ว

ความท้าทายใน TinyML

เครื่องมือที่คุณควรลอง

การเริ่มต้น: แผนที่เส้นทางสำหรับผู้เริ่มต้น

  1. เลือกปัญหา : เสียง การเคลื่อนไหว ท่าทาง การตรวจจับความผิดปกติ
  2. เลือกบอร์ดของคุณ : เริ่มต้นด้วย Arduino Nano 33 BLE Sense หรือ ESP32
  3. รวบรวมข้อมูล : ใช้เซ็นเซอร์ออนบอร์ดหรือนำเข้าชุดข้อมูล
  4. ฝึกโมเดลขนาดเล็ก : ใช้ TensorFlow/Keras
  5. วัดปริมาณและแปลง : ตัวแปลง TFLite
  6. ปรับใช้และทดสอบ : แฟลชและแสดงภาพเอาท์พุตผ่าน Serial Monitor

อนาคตของ TinyML

ด้วยการเพิ่มขึ้นของ ตัวเร่งความเร็วฮาร์ดแวร์ Edge TPUและ ระบบนิเวศโอเพนซอร์สอนาคตของ TinyML ดูมีแนวโน้มดี:

  • การเรียนรู้แบบรวมศูนย์บนอุปกรณ์ขอบ
  • การเรียนรู้อย่างต่อเนื่องบนอุปกรณ์
  • สถาปัตยกรรมคลาวด์ไฮบริด + เอจ
  • การค้นหาสถาปัตยกรรมประสาท (NAS) สำหรับการฝังตัว

TinyML กำลังนิยามใหม่ว่าระบบอัจฉริยะจะอยู่ที่ไหนและทำงานอย่างไร แทนที่จะแค่ฝึกอบรมโมเดลที่ชาญฉลาดขึ้น ตอนนี้เรากำลังสร้างอุปกรณ์ที่ชาญฉลาดขึ้น

ความคิดสุดท้าย

TinyML ไม่ได้เป็นแค่ "ML เวอร์ชันย่อ" เท่านั้น แต่มันคือการเปลี่ยนแปลงอย่างสิ้นเชิงในมุมมองของเราเกี่ยวกับการนำปัญญาประดิษฐ์ไปใช้ในโลกแห่งความเป็นจริง TinyML ช่วยให้สามารถใช้ งาน AI แบบเรียลไทม์ เป็นส่วนตัว และประหยัดพลังงาน ปลดล็อกแอปพลิเคชันที่เคยคิดว่าเป็นไปไม่ได้มาก่อน

ไม่ว่าคุณจะเป็นนักวิจัย ผู้สร้าง หรือผู้ที่ชื่นชอบ ML TinyML ถือเป็น ขอบเขตอันทรงอิทธิพล ที่สุด ที่ควรสำรวจในขณะนี้