จบชุดบทเรียนนี้เราจะเดินครบ 4 เรื่อง แล้วปิดท้ายด้วยการรันโมเดลจริง:
edge_ai.models() / select() / result() อ่านผลสดๆปลายทางของวันนี้: เลือกโมเดลใน dropdown กด Load แล้วทำท่า/ส่งเสียง — จอโชว์คลาสที่ชนะ พร้อมแถบความมั่นใจ
วันนี้เราเน้น "รันได้ + อ่านผลเป็น" ส่วนโมเดลถูกฝึกมายังไง เก็บไว้เป็นเป้าหมายของ โมดูล 5 (Training)
Edge AI คือการรันโมเดล AI (การอนุมาน / inference) บน อุปกรณ์ตรงปลายทาง ที่ข้อมูลเกิดขึ้น ไม่ต้องส่งข้อมูลขึ้นไปให้เซิร์ฟเวอร์คิดแทน
"Edge" แปลตรงตัวว่า "ขอบ" — ขอบนอกสุดของเครือข่าย ที่ซึ่งข้อมูลเกิดจริง ตรงข้ามกับ "คลาวด์" ที่อยู่ศูนย์กลาง
การเอาโมเดลไปไว้ตรงปลายทางไม่ใช่แค่เท่ มันแก้ปัญหาจริง 4 ข้อที่คลาวด์ทำได้ไม่ดี:
ลองนึกถึงนาฬิกาที่ตรวจจับว่าคุณล้ม ถ้ามันต้องอัปโหลดคลิปขึ้นคลาวด์ก่อนถึงจะรู้ว่าคุณล้ม — สายเกินไป และคุณคงไม่อยากให้กล้องในบ้านส่งภาพออกไปตลอดเวลาด้วย นี่คือเหตุผลที่ Edge AI มีอยู่
ทั้งคู่ใช้โมเดลแบบเดียวกันได้ ต่างกันที่ การอนุมานเกิดขึ้นที่ไหน และตามมาด้วยข้อดี-ข้อแลกเปลี่ยนคนละชุด
ข้อแลกเปลี่ยนของ Edge คือ "โมเดลต้องเล็กและเร็วพอจะรันบนชิปเล็กๆ" — การทำให้มันเล็กโดยไม่เสียความแม่น คือหัวใจที่คอร์สนี้จะสอน (โดยเฉพาะ โมดูล 4 (Analysis) กับโมดูล 5 (Training))
โมเดล int8 ตัวเดียวไหลผ่านทุกเสา แล้วรันได้ทั้ง MCU · Web · PC · Cortex-A — train once, run everywhere
คอร์สนี้ไม่ได้สอนแค่ "เรียกโมเดลที่ฝึกมาแล้ว" แต่พาเดินครบวงจรที่วิศวกรทำจริง ตั้งแต่ข้อมูลดิบจนถึงโมเดลบนชิป — 5 ขั้น:
เกือบทุกคอร์ส Edge AI สอนแค่ขั้น 5 (เรียกโมเดลสำเร็จรูป) แต่เราจะเข้าใจว่า โมเดลเห็นอะไร และ ทำไมต้องบีบให้เล็ก เพราะเราเดินมาตั้งแต่ขั้น 1
น่าสนใจตรงที่วันนี้เราเริ่มจาก ขั้น 5 (Apps) ก่อน ทั้งๆ ที่มันเป็นขั้นสุดท้าย — นี่คือความตั้งใจ
เราอยากให้คุณรู้สึกว่า "ของนี้เป็นของเราตั้งแต่ชุดบทเรียนแรก" ก่อนจะลงลึกเรื่องยากๆ — ความเป็นเจ้าของมาก่อนไวยากรณ์เสมอ
หัวใจที่ทำให้ Edge AI น่าตื่นเต้น: โมเดลที่ฝึก ครั้งเดียว เอาไปรันได้ทั่วสเปกตรัมของฮาร์ดแวร์ แต่ละที่มีข้อแลกเปลี่ยนต่างกัน
คำถามวิศวกรที่คอร์สนี้ฝึกให้ตอบ: "โมเดลตัวนี้ควรอยู่ที่ไหน?" — บนชิป $3 หรือบน Jetson? แต่ละที่แลกอะไรกับอะไร นี่คือการตัดสินใจเชิงวิศวกรรมจริง
โมเดลหนึ่งไฟล์ (.tflite แบบ int8) คือ แหล่งความจริงเดียว จากนั้นแต่ละเป้าหมายหยิบไปใช้ต่อได้เอง
| เป้าหมาย | ทำอะไรกับไฟล์ .tflite |
รันด้วย |
|---|---|---|
| MCU + Ethos-U55 | คอมไพล์ผ่าน vela เพิ่มหนึ่งครั้ง |
TFLite-Micro บนบอร์ด |
| Web | ใช้ไฟล์เดิม ไม่แก้ | LiteRT.js (ในเบราว์เซอร์) |
| Cortex-A (Linux) | ใช้ไฟล์เดิม ไม่แก้ | ai-edge-litert (Python) |
| PC / Docker | ใช้ไฟล์เดิม | TensorFlow / LiteRT |
นี่คือบทเรียน "train once, run everywhere" ที่จับต้องได้ ไม่ใช่แค่สโลแกน — คุณจะได้ลงมือทำจริงใน โมดูล 5 (Training)
คอร์สนี้ให้คุณเรียนได้จากสามที่ โดย โค้ด MicroPython ชุดเดียวกัน รันได้ทั้งสาม เริ่มจากที่ไหนก็ได้ ไม่มีบอร์ดก็เริ่มได้
ชุดบทเรียนนี้ใช้ สองอันแรก: Emulator (กลับบ้านเปิดเล่นต่อได้ ไม่ต้องมีบอร์ด) และบอร์ดจริง — โค้ดบรรทัดต่อบรรทัดเหมือนกัน
ก่อนสั่งโค้ด มารู้จักของจริงก่อน นี่คือบอร์ดที่เราจะใช้ทั้งคอร์ส หัวใจคือชิป PSoC Edge E84 ที่มีทั้ง CPU และ NPU (หน่วยเร่งงาน AI) อยู่ในตัว
"NPU" ย่อจาก Neural Processing Unit — วงจรที่ออกแบบมาคูณเมทริกซ์ของ neural network โดยเฉพาะ เร็วและประหยัดไฟกว่าให้ CPU ทำเอง นี่คือเหตุผลที่ชิปเล็กๆ รันโมเดลได้
บอร์ดมี "สองสมอง" แบ่งงานกัน คล้ายกับที่คอร์สเกมเล่าเรื่องสองคอร์วาดจอ — แต่รอบนี้คู่หูคือ คอร์ควบคุมกับคอร์ AI
เวลาเราเรียก
edge_ai.result()โค้ด Python บน M33 จะ ดึง (pull) ผลจาก M55 มาให้ — ออกแบบให้ปลอดภัย ไม่ค้าง เราแค่เรียกใช้ ไม่ต้องรู้รายละเอียด IPC ในชุดบทเรียนนี้
บอร์ด TESAIoT Dev Kit มีโมเดล DEEPCRAFT 6 ตัว คอมไพล์รวมมาในเฟิร์มแวร์เดียว พร้อมใช้ ไม่ต้องต่อเน็ต แต่ละตัวใช้เซนเซอร์ต่างกันและมีคลาสของตัวเอง
| # | ชื่อโมเดล | เซนเซอร์ | คลาส (labels) |
|---|---|---|---|
| 0 | Motion Detection | IMU | idle, circle, shaking |
| 1 | Baby Cry Detection | MIC | unlabelled, baby_cry |
| 2 | Push Detection | RADAR | unlabelled, Push |
| 3 | Cough Detection | MIC | unlabelled, cough |
| 4 | Alarm Detection | MIC | unlabelled, alarm |
| 5 | Siren Detection | MIC | unlabelled, sirens |
edge_ai.models() แล้วมันจะตอบตารางนี้กลับมาสังเกตว่า 4 ใน 6 ตัวใช้ไมโครโฟน — งานเสียงเป็นสนามใหญ่ของ Edge AI (ตรวจเสียงไอ เสียงเตือน เสียงเด็กร้อง โดยไม่อัดเสียงส่งออกไปไหน)