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