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