ml --- التعلم الآلي

تحتوي الوحدة ml على وظائف لتحميل وتشغيل نماذج TensorFlow Lite على OpenMV Cam. تعرض الوحدة فئة واحدة موجهة للمستخدم، وهي ml.Model، التي تغلف فئة C الأساسية Model مع تسهيلات إضافية على جانب Python (التحميل التلقائي للتسميات والتحويل التلقائي من الصورة إلى موتر).

الوحدات الفرعية

class Model -- حاوية النموذج

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

تحمّل نموذج TensorFlow Lite من path إلى الذاكرة وتجهزه للاستدلال. قد يكون path ملفًا على نظام الملفات أو اسم نموذج مدمج في صورة البرنامج الثابت.

postprocess هو دالة معالجة لاحقة اختيارية يستدعيها Model.predict بعد الاستدلال. تتلقى (model, inputs, outputs) ويمكنها إرجاع أي قيمة (مثل قائمة بمربعات الإحاطة). عند توفيرها، تتلقى المعالجة اللاحقة موترات إخراج النموذج الخام (غير منزوعة الكمّنة) لتحسين الأداء.

عند الإنشاء، يحاول الغلاف إضافةً إلى ذلك تحميل ملف .txt يحمل نفس الاسم الأساسي لـ path؛ وإذا وُجد، يُحمَّل كل سطر إلى Model.labels. وإلا فإن Model.labels تكون None.

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

يشغّل الاستدلال على النموذج ويُرجع موترات الإخراج.

inputs هي قائمة تحتوي على مدخل واحد لكل موتر إدخال للنموذج. قد يكون كل مدخل:

  • كائن ndarray يطابق شكله المدخل المقابل في Model.input_shape. تُكمّن القيم باستخدام مقياس موتر الإدخال ونقطة الصفر الخاصة به (تُمرَّر مدخلات float32 دون تغيير).

  • كائن image.Image. يغلفه الغلاف تلقائيًا في كائن ml.preprocessing.Normalization لتحويله إلى الموتر المتوقع.

  • دالة قابلة للاستدعاء. ستُستدعى بـ (bytearray, shape, dtype) ويُتوقع منها ملء الـ bytearray ببيانات موتر الإدخال.

callback هي دالة معالجة لاحقة اختيارية لكل استدعاء. عند توفيرها، فإنها تتجاوز postprocess المضبوطة في المُنشئ لهذا الاستدعاء فقط. تتلقى دالة رد النداء (model, inputs, outputs) وتُرجع predict قيمتها المُعادة.

يُرجع قائمة من مخرجات ndarray، واحدًا لكل موتر إخراج للنموذج. إذا لم تكن هناك معالجة لاحقة نشطة، تُنزَع كمّنة المخرجات إلى float32؛ وإذا كانت هناك معالجة لاحقة نشطة، تُمرَّر إليها موترات الإخراج الخام (باستخدام النوع الأصلي لكل موتر) بدلًا من ذلك.

len: int

حجم النموذج المُحمَّل بالبايت.

ram: int

مقدار الـ RAM الذي يستخدمه ساحة موترات النموذج، بالبايت.

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

قائمة من الصفوف (tuples) تعطي شكل كل موتر إدخال.

input_dtype: list[str]

قائمة من السلاسل المؤلفة من حرف واحد تعطي نوع البيانات لكل موتر إدخال: 'b' (int8)، 'B' (uint8)، 'h' (int16)، 'H' (uint16)، 'f' (float32).

input_scale: list[float]

قائمة من قيم الفاصلة العائمة تعطي مقياس الكمّنة لكل موتر إدخال.

input_zero_point: list[int]

قائمة من الأعداد الصحيحة تعطي نقطة صفر الكمّنة لكل موتر إدخال.

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

قائمة من الصفوف (tuples) تعطي شكل كل موتر إخراج.

output_dtype: list[str]

قائمة من السلاسل المؤلفة من حرف واحد تعطي نوع البيانات لكل موتر إخراج: 'b' (int8)، 'B' (uint8)، 'h' (int16)، 'H' (uint16)، 'f' (float32).

output_scale: list[float]

قائمة من قيم الفاصلة العائمة تعطي مقياس الكمّنة لكل موتر إخراج.

output_zero_point: list[int]

قائمة من الأعداد الصحيحة تعطي نقطة صفر الكمّنة لكل موتر إخراج.

postprocess: object

دالة المعالجة اللاحقة المُمرَّرة إلى المُنشئ، أو None.

labels: list[str]

قائمة بسلاسل التسميات المُحمَّلة من ملف .txt المرافق للنموذج، أو None إذا لم يوجد مثل هذا الملف.