7.9. TensorFlow Lite for Microcontrollers¶
TFLM คือรันไทม์ที่กล้องส่วนใหญ่ใช้ในการรันโมเดลที่โหลดมา มันแยกวิเคราะห์ไฟล์ .tflite -- FlatBuffer ของตัวดำเนินการ น้ำหนัก และรูปร่างเทนเซอร์ -- และประมวลผลรายการตัวดำเนินการตามลำดับ โดยส่งต่อแต่ละตัวดำเนินการไปยัง kernel ที่สร้างเทนเซอร์กลางถัดไป
เทนเซอร์กลางอยู่ใน tensor arena ขนาดคงที่ที่จัดสรรในเวลาโหลด กล้องกำหนดขนาด arena ในสองรอบ: ก่อนอื่น สร้าง interpreter แบบชั่วคราวกับ heap ว่างสูงสุดเพื่อให้โมเดลรายงานหน่วยความจำทำงานที่ต้องการ จากนั้น interpreter ถาวรจะถูกจัดสรรด้วยขนาดนั้นพอดีบวก margin เล็กน้อย โมเดลขนาดเล็กจะทิ้ง heap ว่างไว้มากขึ้นสำหรับส่วนที่เหลือของสคริปต์
TFLM คือ engine บน H7, RT1062 และ AE3
7.9.1. op resolver¶
TFLM ไม่ได้จัดส่ง kernel ทุกตัว กล้องเชื่อมโยง resolver ที่แสดงรายการตัวดำเนินการที่สามารถรันได้ และโมเดลที่โหลดกับ resolver จะล้มเหลวในเวลาโหลดหากมีตัวดำเนินการที่ไม่อยู่ในรายการ บิลด์ที่จัดส่งลงทะเบียนตัวดำเนินการที่ใช้บ่อยในเครือข่ายการมองเห็นและการประมวลผลสัญญาณ -- เลเยอร์ convolution และ dense เลเยอร์ pool และ activation ตัวดำเนินการ reshape และ concat ตัวดำเนินการ quantize และ dequantize -- ดังนั้นโมเดลที่เทรนกับสถาปัตยกรรมมาตรฐาน (YOLO, MediaPipe, MobileNet) จะโหลดได้โดยไม่ต้องขยายรายการ
บิลด์ AE3 ยังลงทะเบียน Ethos-U operator เพิ่มเติมด้วย โมเดลที่คอมไพล์ด้วย Vela เป็น .tflite ปกติอยู่แล้ว และ TFLM ประมวลผลตามปกติ subgraph ที่ Vela ทำเครื่องหมายจะตี Ethos-U operator และส่งต่อไปยัง NPU