TensorFlow Lite สำหรับไมโครคอนโทรลเลอร์ออกแบบมาเพื่อเรียกใช้โมเดลแมชชีนเลิร์นนิงบนไมโครคอนโทรลเลอร์และอุปกรณ์อื่นๆ ที่มีหน่วยความจำเพียงไม่กี่กิโลไบต์ รันไทม์หลักมีขนาดเพียง 16 KB ใน Arm Cortex M3 และรองรับการใช้งานในรุ่นพื้นฐานต่างๆ ไม่ต้องใช้การสนับสนุนระบบปฏิบัติการ ไลบรารี C หรือ C++ มาตรฐาน หรือการจัดสรรหน่วยความจำแบบไดนามิก
ทำไมไมโครคอนโทรลเลอร์จึงมีความสำคัญ
ไมโครคอนโทรลเลอร์มักเป็นอุปกรณ์ประมวลผลขนาดเล็กที่ใช้พลังงานต่ำซึ่งฝังอยู่ในฮาร์ดแวร์ที่จำเป็นต้องมีการคำนวณขั้นพื้นฐาน การนำการเรียนรู้ของเครื่องมาใช้ในไมโครคอนโทรลเลอร์ขนาดเล็ก ทำให้เราเพิ่มความอัจฉริยะของอุปกรณ์หลายพันล้านเครื่องที่เราใช้ในชีวิตได้ ซึ่งรวมถึงเครื่องใช้ไฟฟ้าในบ้านและอุปกรณ์อินเทอร์เน็ตของสรรพสิ่ง โดยไม่ต้องอาศัยฮาร์ดแวร์ราคาแพงหรือการเชื่อมต่ออินเทอร์เน็ตที่เสถียร ซึ่งมักขึ้นอยู่กับข้อจำกัดด้านแบนด์วิดท์และพลังงาน และส่งผลให้เวลาในการตอบสนองสูง วิธีนี้ช่วยรักษาความเป็นส่วนตัวได้ด้วย เนื่องจากจะไม่มีข้อมูลใดหลุดออกไปจากอุปกรณ์ ลองจินตนาการถึงเครื่องใช้อัจฉริยะที่สามารถปรับตัวเข้ากับกิจวัตรประจำวัน เซ็นเซอร์อัจฉริยะเชิงอุตสาหกรรมที่เข้าใจความแตกต่างระหว่างปัญหาต่างๆ กับการทำงานตามปกติ ตลอดจนของเล่นวิเศษที่ช่วยให้เด็กๆ เรียนรู้ได้อย่างสนุกสนานและเพลิดเพลิน
แพลตฟอร์มที่รองรับ
TensorFlow Lite สำหรับไมโครคอนโทรลเลอร์เขียนด้วย C++ 17 และจำเป็นต้องใช้แพลตฟอร์ม 32 บิต โดยได้รับการทดสอบอย่างครอบคลุมกับโปรเซสเซอร์จำนวนมากที่ใช้สถาปัตยกรรม Arm Cortex-M Series และได้รับการพอร์ตไปยังสถาปัตยกรรมอื่นๆ ซึ่งรวมถึง ESP32 ด้วย โดยมีเฟรมเวิร์กเป็นไลบรารี Arduino และยังสร้างโปรเจ็กต์สำหรับสภาพแวดล้อม การพัฒนา เช่น Mbed ได้อีกด้วย เป็นโอเพนซอร์สและรวมอยู่ใน โปรเจ็กต์ C++ 17 ใดก็ได้
รองรับบอร์ดการพัฒนาต่อไปนี้
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- ชุด Discovery STM32F746
- ป้าย Adafruit EdgeBadge
- Adafruit TensorFlow Lite สำหรับชุดไมโครคอนโทรลเลอร์
- Adafruit Circuit Playground Bluefruit
- Espressif ESP32-DevKitC
- Espressif ESP-EYE
- เทอร์มินัล Wio: ATSAMD51
- Himax WE-I Plus EVB Endpoint AI Development Board
- แพลตฟอร์มการพัฒนาซอฟต์แวร์ Synopsys DesignWare ARC EM
- Sony Spresense
ดูตัวอย่าง
ตัวอย่างแอปพลิเคชันแต่ละรายการจะอยู่ใน GitHub และมีไฟล์ README.md
ที่อธิบายวิธีทำให้แอปพลิเคชันใช้งานได้ในแพลตฟอร์มที่รองรับ ตัวอย่างบางส่วนยังมีบทแนะนำตั้งแต่ต้นจนจบโดยใช้แพลตฟอร์มเฉพาะดังที่แสดงด้านล่าง
- สวัสดีโลก - แสดงพื้นฐานที่แท้จริงของการใช้ TensorFlow Lite สำหรับไมโครคอนโทรลเลอร์
- ไมโครคำพูด - บันทึกเสียงด้วยไมโครโฟนเพื่อตรวจจับคำว่า "ใช่" และ "ไม่"
- การตรวจจับคน - บันทึกข้อมูลจากกล้องด้วยเซ็นเซอร์รูปภาพเพื่อตรวจจับว่ามีคนอยู่หรือไม่
ขั้นตอนการทำงาน
คุณต้องทำตามขั้นตอนต่อไปนี้เพื่อทำให้ใช้งานได้และเรียกใช้โมเดล TensorFlow บนไมโครคอนโทรลเลอร์
- ฝึกโมเดล
- สร้างโมเดล TensorFlow ขนาดเล็กที่เหมาะกับอุปกรณ์เป้าหมายและมีการดำเนินการที่รองรับ
- แปลงเป็นโมเดล TensorFlow Lite โดยใช้ตัวแปลง TensorFlow Lite
- แปลงเป็นอาร์เรย์ C ไบต์โดยใช้เครื่องมือมาตรฐานเพื่อจัดเก็บไว้ในหน่วยความจำโปรแกรมแบบอ่านอย่างเดียวบนอุปกรณ์
- เรียกใช้การอนุมานในอุปกรณ์โดยใช้ไลบรารี C++ และประมวลผลผลลัพธ์
ข้อจำกัด
TensorFlow Lite สำหรับไมโครคอนโทรลเลอร์ออกแบบมาเพื่อข้อจำกัดเฉพาะของการพัฒนาไมโครคอนโทรลเลอร์ หากคุณกำลังใช้งานอุปกรณ์ที่มีประสิทธิภาพมากกว่า (เช่น อุปกรณ์ Linux แบบฝังอย่าง Raspberry Pi) เฟรมเวิร์ก TensorFlow Lite มาตรฐานอาจผสานรวมได้ง่ายกว่า
โดยควรพิจารณาข้อจำกัดต่อไปนี้
- รองรับชุดย่อยแบบจำกัดของการดำเนินการ TensorFlow
- การรองรับอุปกรณ์บางกลุ่ม
- C++ API ระดับต่ำที่ต้องการการจัดการหน่วยความจำด้วยตนเอง
- ไม่รองรับการฝึกในอุปกรณ์
ขั้นตอนถัดไป
- เริ่มต้นใช้งานไมโครคอนโทรลเลอร์เพื่อลองใช้แอปพลิเคชันตัวอย่างและเรียนรู้วิธีใช้ API
- ทำความเข้าใจไลบรารี C++ เพื่อเรียนรู้วิธีใช้ไลบรารีในโปรเจ็กต์ของคุณเอง
- สร้างและแปลงโมเดลเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการฝึกและการแปลงโมเดลสำหรับการติดตั้งใช้งานในไมโครคอนโทรลเลอร์