v4.5.6¶
يُعدّ الإصدار v4.5.6 الإصدار الكبير الخاص بتعلّم الآلة. فقد استُبدلت وحدة C الخاصة بـ TensorFlow tf بحزمة ml جديدة ومستقلة عن المحرّك ومدعومة بـ TensorFlow Lite Micro (TFLM)، ونُقل تحويل الصورة إلى موتر (image→tensor) إلى image.to_ndarray()، وانتقلت اللوحات ثنائية النواة إلى Open-AMP. هناك عدة تغييرات كاسرة للتوافق — اقرأها أدناه قبل ترقية البرامج النصية الخاصة بتعلّم الآلة.
أبرز النقاط¶
حزمة
mlجديدة — أُعيدت كتابة وحدةtfالقديمة في صورة حزمةmlمستقلة عن المحرّك (ml.Model،ml.preprocessing،ml.utils،ml.apps)؛ وتبقىtfبمثابة اسم مستعار.الواجهة الخلفية TFLM — استُبدلت مكتبة
libtfالمتقادمة بـ TensorFlow Lite Micro المبنية على المصدر الأصلي: استدلال أسرع بنحو 20% ومكتبات أصغر.ثنائية النواة عبر Open-AMP — تستخدم لوحتا GIGA وPortenta H7 الآن Open-AMP/RPMsg للاتصال بين نواتي M7/M4 (أُزيلت آلية CM4 القديمة).
Bluetooth مدمج — تم تمكين برنامج Bluetooth الثابت لـ CYW43 على Nicla Vision وPortenta H7 وGIGA.
MicroPython 1.23.0 وulab 6.5.2 (مع دعم ndarray رباعي الأبعاد).
تغيير كاسر: تغيّرت واجهة برمجة تطبيقات تعلّم الآلة بشكل كبير، وأصبحت سلاسل Haar معطّلة افتراضيًا على معظم اللوحات — راجع التغييرات الكاسرة.
ميزات جديدة¶
حزمة
ml—ml.Modelمعpredict()(roi،callback، قائمة متعددة المدخلات)، وسمات الشكل/النوع/المقياس/نقطة الصفر لكل موتر، وml.preprocessing.Normalization، وml.utils(NMS)، وml.apps(كاشف كلمات مفتاحيةMicroSpeechمكتوب بلغة Python الخالصة معlisten()وبثّ غير حاجب عبرtimeout=-1، إضافة إلىdraw_predictions()).نظام نماذج مدمج — تُدمج النماذج المدرجة في
models/index.txtبشكل مشروط حسب اللوحة (FOMO على جميع لوحات تعلّم الآلة، ونماذج الصوت على اللوحات المزوّدة بميكروفونات).image.to_ndarray(dtype, buffer=...)— تحويل صورة إلى ndarray من ulab (اختياريًا في المكان نفسه).Image()من مصفوفات خام — وسائط مفتاحية جديدةshape=وstrides=وscale=تنشئ صورًا بتدرج الرمادي/RGB565 من قوائم بكسلات خام.draw_circle()مع تنعيم الحواف.تجميد وحدة
sslداخل البرنامج الثابت على GIGA وNicla Vision وPortenta H7 وNano RP2040 Connect وOpenMV 4/4P/PRO/PT وRT1060 وPico.الصوت — اكتسبت
audio.init()وسيطة مفتاحيةsamples=(عيّنات PDM لكل قناة)؛ ويُطبَّقgain_dbالآن على ميكروفونات DFSDM (مثل Nicla Vision).بروتوكول التصحيح — يُرجع أمر
GET_STATEالجديد أعلام التشغيل/النص/JPEG وهندسة الإطار والنص في حزمة واحدة، مما يقلّل عدد جولات التبادل مع المضيف.مثال vuart الخاص بـ Open-AMP للاتصال بين النواتين.
تغييرات وتحسينات أخرى¶
تحديث MicroPython إلى 1.23.0؛ وulab إلى 6.5.2 مع دعم ndarray رباعي الأبعاد.
استدلال أسرع — تحتفظ الواجهة الخلفية لتعلّم الآلة بالحالة/الذاكرة الثابتة عبر الاستدعاءات (أسرع بنحو 20%، مع دعم نماذج بنمط LSTM).
أُعيد تنفيذ
get_similarity()على الواجهة الخلفيةdraw_image(دعم أوسع للتنسيقات/العمليات).انتقلت
morph()وعائلة مرشّحmean()إلى تحليل الوسائط المفتاحية؛ وأصبحتmask=تقبل الآن صورة قابلة للتعديل.إعادة هيكلة تخطيط الذاكرة — مناطق DMA محاذاة لأس العدد 2، وكتل GC قابلة لإعادة الترتيب، وأكوام متعددة؛ تجزؤ أقل للكومة المبكرة على اللوحات منخفضة RAM؛ ويكتسب RT1060 كومة GC إضافية.
يُلغى الآن تهيئة WiFi (CYW43) عند إعادة الضبط البرمجية؛ وتفرّغ شاشة SPI-TV منطقة مخزن الإطارات فقط من ذاكرة التخزين المؤقت لتحديثات أكثر سلاسة.
إصلاحات الأخطاء¶
الكاميرا والمستشعرات:
إصلاح إبطال ذاكرة التخزين المؤقت لوحدة المعالجة المركزية عرضًا في مسار مخزن الإطارات/المستشعر على STM32 وi.MX RT، وهو ما كان قد يُفسد بيانات الصورة.
إصلاح قراءات I2C الحرارية لـ MLX90640/MLX90641 على لوحات i.MX RT (أصبحت عمليات النقل الكبيرة مقسّمة الآن إلى أجزاء).
تعلّم الآلة:
إصلاح معالجة
load_to_fbفيml.Model، وتحديد حجمbytearrayللمدخلات، وفحوصاتndimلـ ndarray، والتحقق من تنسيق/شكل الصورة فيNormalization.
الصورة / النظام:
إضافة الثابت المفقود
image.BLACK_BACKGROUNDالخاص بتلميح الرسم وفحص سلامة طول مخزن الصورة/الموتر.إصلاح مؤشرات جذر GC الخاصة بـ FIR والصوت التي كان من الممكن أن تجعل المُجمِّع يحرّر مخازن قيد الاستخدام.
يستخدم مثال Servo Shield الآن
SoftI2Cبحيث يعمل على لوحات OpenMV RT.
دعم العتاد واللوحات¶
Arduino GIGA — دعم مستشعري HM01B0 / HM0360؛ وثنائية النواة عبر Open-AMP.
Bluetooth — برنامج CYW43 BT الثابت على Nicla Vision وPortenta H7 وGIGA.
Portenta H7 — Open-AMP M7/M4 RPMsg.
OpenMV RT1060 — كتل كومة GC إضافية (مزيد من ذاكرة Python).
تغييرات كاسرة في واجهة برمجة التطبيقات¶
حالات كسر واجهة برمجة التطبيقات المرئية للمستخدم بين v4.5.5 وv4.5.6. النطاق: وحدات Python C في modules/ ومكتبات Python في scripts/libraries/.
كل تغيير موسوم بمدى تأثيره:
رئيسي — تحتاج معظم البرامج النصية التي استخدمته إلى تعديلات.
ثانوي — واجهة برمجة تطبيقات ضيقة؛ يؤثر فقط على البرامج النصية التي استخدمته.
سلوكي — نفس الواجهة، نتائج مختلفة؛ أعد فحص البرامج النصية المضبوطة.
أدوات — يؤثر على آليات ثنائية النواة / اللوحات، لا على واجهة برمجة تطبيقات Python.
التغييرات مجمّعة حسب التأثير بهذا الترتيب. إذا كنت تريد فقط نقل شيفرتك، فانتقل إلى قائمة التحقق للترحيل في النهاية. ويرتبط كل تجزيء (hash) للالتزام بفرقه (diff) على GitHub.
استبدال وحدة tf بحزمة ml (رئيسي)¶
أُعيدت كتابة وحدة C الخاصة بـ TensorFlow tf في صورة حزمة ml مستقلة عن المحرّك (تبقى tf بمثابة اسم مستعار متوافق مع الإصدارات السابقة، لكن ينبغي للشيفرة الجديدة استخدام ml). أُزيلت الدوال على مستوى الوحدة tf.load وtf.load_builtin_model والطرق detect()/segment() وطرق التصنيف — أنشئ ml.Model واستدعِ predict(). وتُرجع ml.Model(path) الآن النموذج فقط (لا صفًا (labels, model))؛ والتسميات هي سمة model.labels. وتُرجع predict() الآن كائنات ndarray من ulab (لا صفوف أعداد عشرية)، وتدعم النماذج متعددة المدخلات (مرّر قائمة)، وانتقلت NMS إلى ml.utils؛ وانتقل تطبيع المدخلات إلى ml.preprocessing.Normalization. وأصبح ملف ml.py القديم الآن هو ml.apps.
الالتزامات: c7228cbb4، 6c212409c، 3e37f46db، 9a186f4e2، 70b89f474، 3f8491cb0، 4506682c2، 8b38f3837
إزالة image.unpack() — استخدم to_ndarray() (رئيسي)¶
أُزيلت الدالة قصيرة العمر image.unpack()؛ حوّل الصورة إلى موتر باستخدام image.to_ndarray(dtype, buffer=...) بدلًا من ذلك، وطبّق تطبيع المقياس/المتوسط/الانحراف المعياري باستخدام ml.preprocessing.Normalization بدلًا من مسار تحجيم الصورة المدمج القديم.
وسيطة scale للمصفوفة الخام في Image() (ثانوي)¶
عند إنشاء Image من مصفوفة بكسلات خام، تأخذ وسيطة scale الآن نطاق (min, max) بدلًا من (scale, add).
الالتزام: 7b79fb4c7
سلاسل Haar معطّلة افتراضيًا على معظم اللوحات (سلوكي)¶
لتحرير مساحة في ذاكرة فلاش، أصبح كشف الوجوه بسلاسل Haar (find_features() / image.HaarCascade()) معطّلًا افتراضيًا الآن على Arduino GIGA وNicla Vision وPortenta H7 وOpenMV 3 وOpenMV 4 / 4 Plus / PRO وOpenMV Pure Thermal. ويجب على البرامج النصية التي تستخدم سلاسل Haar على تلك اللوحات إعادة بناء البرنامج الثابت مع تمكين الميزة.
الالتزام: 6ce27c910
مقاطعة البرنامج النصي وتحجيم الموتر (سلوكي)¶
يقاطع مصحّح أخطاء USB الآن البرنامج النصي قيد التشغيل عبر ميزة إجهاض الآلة الافتراضية (VM-abort) في MicroPython بدلًا من قفزة PendSV القسرية (أنظف، لكن نقطة المقاطعة تختلف). وصُحّح تحجيم المدخلات SCALE_S128_127 بحيث يربط 0–255 بـ −128–127 دون كسب خاطئ — وستُنتج النماذج المعتمدة على التحجيم القديم (غير الصحيح) نتائج مختلفة.
استبدال المعالج المساعد CM4 بـ Open-AMP (أدوات)¶
أُزيلت آلية البرنامج الثابت للمعالج المساعد CM4 المهملة على GIGA / Nicla Vision / Portenta H7 واستُبدلت بـ Open-AMP/RPMsg. ويجب نقل الشيفرة ثنائية النواة إلى نموذج Open-AMP (يُوفَّر مثال vuart).
قائمة التحقق للترحيل¶
للحصول على نقل نظيف إلى v4.5.6، يكون العمل المعتاد كالآتي:
انقل شيفرة تعلّم الآلة إلى
ml: أنشئml.Model(path)، واستدعِpredict()، واقرأmodel.labels، وتوقّع مخرجاتndarray، وانقل التطبيع إلىml.preprocessing.NormalizationوNMS إلىml.utils(تغيير حزمة ml).استبدل
image.unpack()بـimage.to_ndarray()(إزالة unpack).حدّث أي وسيطة
scaleللمصفوفة الخام فيImage()إلى نطاق(min, max)(تغيير scale في Image).إذا كنت تستخدم سلاسل Haar على لوحة متأثرة، فأعد البناء مع تمكين الميزة (تغيير سلاسل Haar).
أعد التحقق من النماذج التي اعتمدت على
SCALE_S128_127(تغيير التحجيم).انقل الشيفرة ثنائية النواة إلى Open-AMP (تغيير CM4).