ml --- Machine Learning

โมดูล ml มีฟังก์ชันสำหรับโหลดและรันโมเดล TensorFlow Lite บน OpenMV Cam โมดูลนี้เปิดเผยคลาสสำหรับผู้ใช้งานเพียงหนึ่งคลาสคือ ml.Model ซึ่งครอบคลุมคลาส C Model ระดับล่างพร้อมความสะดวกเพิ่มเติมฝั่ง Python (การโหลดป้ายกำกับอัตโนมัติและการแปลงภาพเป็นเทนเซอร์อัตโนมัติ)

โมดูลย่อย

class Model -- Model Container

class ml.Model(path: str, *, postprocess: object = None) Model

โหลดโมเดล TensorFlow Lite จาก path ลงในหน่วยความจำและเตรียมพร้อมสำหรับการอนุมาน path อาจเป็นไฟล์บนระบบไฟล์หรือชื่อโมเดลที่ฝังอยู่ในเฟิร์มแวร์

postprocess คือคอลแบ็กหลังประมวลผลแบบ optional ที่ถูกเรียกโดย Model.predict หลังจากการอนุมาน รับพารามิเตอร์ (model, inputs, outputs) และอาจคืนค่าใด ๆ ก็ได้ (เช่น รายการกรอบล้อมรอบ) เมื่อกำหนดไว้ ตัวประมวลผลหลังการทำงานจะรับเทนเซอร์เอาต์พุตดิบของโมเดล (ที่ยังไม่ถูก dequantize) เพื่อประสิทธิภาพสูงสุด

เมื่อสร้างออบเจ็กต์ wrapper จะพยายามโหลดไฟล์ .txt ที่มีชื่อฐานเดียวกับ path ด้วย หากพบ แต่ละบรรทัดจะถูกโหลดเข้า Model.labels มิฉะนั้น Model.labels จะเป็น None

predict(inputs: list, *, callback: object = None) list

รันการอนุมานบนโมเดลและคืนค่าเทนเซอร์เอาต์พุต

inputs คือรายการที่มีหนึ่งรายการต่อเทนเซอร์อินพุตของโมเดล แต่ละรายการอาจเป็น:

  • ndarray ที่มี shape ตรงกับรายการที่สอดคล้องกันใน Model.input_shape ค่าจะถูก quantize โดยใช้ scale และ zero point ของเทนเซอร์อินพุต (อินพุต float32 จะถูกส่งผ่านโดยไม่เปลี่ยนแปลง)

  • ออบเจ็กต์ image.Image wrapper จะครอบด้วยออบเจ็กต์ ml.preprocessing.Normalization โดยอัตโนมัติเพื่อแปลงเป็นเทนเซอร์ที่คาดหวัง

  • คอลแบ็ก จะถูกเรียกด้วย (bytearray, shape, dtype) และคาดว่าจะเติมข้อมูลลงใน bytearray ด้วยข้อมูลเทนเซอร์อินพุต

callback คือคอลแบ็กหลังประมวลผลแบบ optional ต่อการเรียก เมื่อระบุไว้จะแทนที่ postprocess ที่ตั้งไว้ใน constructor สำหรับการเรียกนี้เท่านั้น คอลแบ็กรับ (model, inputs, outputs) และค่าที่คืนจะถูกส่งคืนโดย predict

คืนรายการเอาต์พุต ndarray หนึ่งรายการต่อเทนเซอร์เอาต์พุตของโมเดล หากไม่มีตัวประมวลผลหลังการทำงานที่ใช้งาน เอาต์พุตจะถูก dequantize เป็น float32 หากมีตัวประมวลผลหลังการทำงาน เทนเซอร์เอาต์พุตดิบ (ใช้ dtype ดั้งเดิมของแต่ละเทนเซอร์) จะถูกส่งผ่านแทน

len: int

ขนาดของโมเดลที่โหลดในหน่วยไบต์

ram: int

ปริมาณ RAM ที่ใช้โดย tensor arena ของโมเดล ในหน่วยไบต์

input_shape: list[tuple[int, ...]]

รายการของ tuple ที่ระบุ shape ของเทนเซอร์อินพุตแต่ละตัว

input_dtype: list[str]

รายการของสตริงอักขระเดี่ยวที่ระบุ dtype ของเทนเซอร์อินพุตแต่ละตัว: 'b' (int8), 'B' (uint8), 'h' (int16), 'H' (uint16), 'f' (float32)

input_scale: list[float]

รายการของค่า float ที่ระบุ quantization scale ของเทนเซอร์อินพุตแต่ละตัว

input_zero_point: list[int]

รายการของค่า int ที่ระบุ quantization zero point ของเทนเซอร์อินพุตแต่ละตัว

output_shape: list[tuple[int, ...]]

รายการของ tuple ที่ระบุ shape ของเทนเซอร์เอาต์พุตแต่ละตัว

output_dtype: list[str]

รายการของสตริงอักขระเดี่ยวที่ระบุ dtype ของเทนเซอร์เอาต์พุตแต่ละตัว: 'b' (int8), 'B' (uint8), 'h' (int16), 'H' (uint16), 'f' (float32)

output_scale: list[float]

รายการของค่า float ที่ระบุ quantization scale ของเทนเซอร์เอาต์พุตแต่ละตัว

output_zero_point: list[int]

รายการของค่า int ที่ระบุ quantization zero point ของเทนเซอร์เอาต์พุตแต่ละตัว

postprocess: object

คอลแบ็กหลังประมวลผลที่ส่งให้ constructor หรือ None

labels: list[str]

รายการของสตริงป้ายกำกับที่โหลดจากไฟล์ .txt ควบคู่กับโมเดล หรือ None หากไม่มีไฟล์ดังกล่าว