v3.0.0¶
الإصدار v3.0.0 هو إصدار v2 ← v3 الرئيسي. يقدم OpenMV Cam M7 (STM32F7) ووحدة الشبكة العصبية nn الجديدة المعتمدة على CMSIS-NN (لتحل محل دالتي find_number() / classify_object() القديمتين المُبرمجتين بشكل صلب)، ويضيف دعم مستشعر MT9V034 ذي الغالق العام وFLIR Lepton، وأحجام الإطارات sensor.WVGA، ويحدّث النواة إلى MicroPython 1.9.4. تغيّرت عدة سلوكيات في image / sensor / WiFi — اقرأ التغييرات الجذرية أدناه.
أبرز النقاط¶
OpenMV Cam M7 — لوحة STM32F7 جديدة.
وحدة
nn— استدلال CMSIS-NN:nn.load()،Net.forward()،Net.search()، مع مُحوّل نماذج وأمثلة.مستشعرات جديدة — MT9V034 ذو الغالق العام (يُطلق بـ FSIN) وFLIR Lepton.
تحديث النواة إلى MicroPython 1.9.4.
تغيير جذري: أُزيلت دالتا
image.find_number()/image.classify_object()المُبرمجتان بشكل صلب، وأصبحتsensor.sleep()تطلق استثناءً، وتعيد منافذ WINC أعداد البايتات الحقيقية، وتعيدimage.binary()صورة جديدة، وأصبحتfind_apriltags()محدودة بـ 64K بكسل — انظر التغييرات الجذرية.
ميزات جديدة¶
nn— وحدة شبكة عصبية جديدة معتمدة على CMSIS-NN:nn.load(path)،Net.forward(img, roi=, softmax=, dry_run=)(تعيد أعداداً عشرية بين 0.0 و1.0)،Net.search()للكشف متعدد المقاييس/المواضع، وNet.test()، بالإضافة إلى مُحوّل نماذج CMSIS-NN (nn_convert.py/nn_quantizer.py)، ونماذج CIFAR-10 / LeNet / smile المُجمّعة، وأمثلة لبرامج NN وNN-search النصية.المستشعرات — دعم MT9V034 ذي الغالق العام (لقطة تُطلق بـ FSIN) على OpenMV 4، ومُشغّل FLIR Lepton مُحدّث مع لقطة Lepton، وأحجام الإطارات الجديدة
sensor.WVGA(720x480) /sensor.WVGA2(752x480).التصوير — اكتسبت
image.find_circles()الكلمات المفتاحيةr_min/r_max/r_step(تحويل Hough أسرع)، وأصبحتfind_keypoints()ودالة Haarfind_features()تقبلان صور RGB، وأصبحتimage.compress()/ ترميز JPEG تدعم الصور الثنائية (الخريطة النقطية).الإقلاع — يعمل
boot.pyالآن قبل تهيئة USB بحيث يمكنه تجاوز وضع USB (مثل HID).الأمثلة — أُضيفت أمثلة AprilTag صغيرة/عالية الدقة، ومثال I2C LIDAR-Lite V3، وأدوات مجموعات البيانات (
augment_images.py/make_patches.py).
تغييرات وتحسينات أخرى¶
تحديث MicroPython المُجمّع إلى 1.9.4 (مع التراجع عن تحليل/تجميع/تنفيذ pyexec وإصلاح PendSV)؛ رسائل خطأ نفاد الذاكرة في
fb_alloc/xallocأكثر وضوحاً؛ كتم ضوضاء printf الخاصة بـnnأثناء تحميل الشبكة؛ إعادة تنظيم المستودع (الأمثلة ←scripts/، الأدوات ←tools/، مُتتاليات Haar ←ml/). وحدةnnغير متوفرة على OpenMV 2 (ذاكرة فلاش غير كافية).
إصلاحات الأخطاء¶
التصوير:
إصلاح
fast_atan2fللقيم x≤0 (كانت سابقاً دائماً 0 — أعد فحص زوايا الكتل / الخطوط / النقاط المفتاحية)، ومعالجة الذاكرة فيfind_apriltags()(إسقاط المحتويات وعملية realloc سيئة عند نفاد الذاكرة)، ومؤشرات صفوف الثنائي/الخريطة النقطية لكل bpp (نتائج ثنائية تالفة)، وfind_edges(EDGE_CANNY)مع منطقة اهتمام، وماكروTO_GS_PIXEL(التكامل / المورفولوجيا)، وبث الخريطة النقطية/JPEG لإطارات تدرج الرمادي (bpp==0)، وpop_frontلقائمة النقاط المفتاحية/الكتل، ونتائجmatch_descriptor.
النظام والكاميرا:
إصلاح أرقام واجهة/نقطة طرفية USB HID، وتغيير تردد XCLK ديناميكياً وقت التشغيل، وإعادة
Net.forward()للعدد الصحيح من المخرجات، وعطل عتادي عند مقاطعة تحليل البرنامج النصي.
دعم العتاد واللوحات¶
OpenMV Cam M7 (STM32F7) — لوحة جديدة.
مستشعر MT9V034 ذو الغالق العام (OpenMV 4، يُطلق بـ FSIN).
FLIR Lepton — مُشغّل مُحدّث مع دعم اللقطة.
تغييرات API الجذرية¶
تغييرات API المرئية للمستخدم بين v2.9.0 وv3.0.0. النطاق: وحدات Python بلغة C في modules/ ومكتبات Python في scripts/libraries/.
يُوسم كل تغيير بمدى تأثيره:
رئيسي — يؤثر على معظم البرامج النصية التي استخدمت الميزة؛ ستحتاج إلى نقل التعليمات البرمجية.
طفيف — واجهة API ضيقة؛ لا يؤثر إلا على البرامج النصية التي استخدمتها.
سلوك — نفس واجهة API بنتائج مختلفة؛ أعد فحص البرامج النصية المضبوطة.
تُجمَّع التغييرات حسب التأثير بهذا الترتيب. إذا كنت ترغب فقط في نقل التعليمات البرمجية الخاصة بك، فانتقل إلى قائمة مراجعة الترحيل في النهاية. يرتبط كل تجزئة (hash) للالتزام بالفرق (diff) الخاص به على GitHub.
إزالة image.find_number() / image.classify_object() (رئيسي)¶
أُزيلت دالتا image.find_number() (LeNet) وimage.classify_object() (CMSIS CNN) المُبرمجتان بشكل صلب لصالح وحدة nn الجديدة. استبدلهما بـ net = nn.load('/model.network'); out = net.forward(img).
الالتزامات: d151f7e38
sensor.sleep() / sensor.reset() تطلقان استثناءً عند الفشل (طفيف)¶
أصبحت sensor.sleep() وsensor.reset() الآن تطلقان استثناءً عند الفشل بدلاً من إعادة True / False. يجب على التعليمات البرمجية التي فحصت القيمة المنطقية المُعادة من sensor.sleep() أن تغلّف الاستدعاء بـ try / except بدلاً من ذلك.
الالتزامات: 7d16d008f
منافذ WINC تعيد عدد البايتات الحقيقي (سلوك)¶
كانت دوال منفذ WINC1500 send / recv / sendto / recvfrom تعيد سابقاً 0 دائماً؛ وأصبحت الآن تعيد العدد الفعلي للبايتات المنقولة. يجب على التعليمات البرمجية التي افترضت إعادة 0 (أو كرّرت/تعطّلت بناءً عليها) أن تتعامل مع الأعداد الحقيقية.
الالتزامات: a07fb2f60
image.binary() تعيد صورة جديدة (سلوك)¶
اكتسبت image.binary() الكلمتين المفتاحيتين to_bitmap / copy وأصبحت الآن تعيد كائن صورة جديد بدلاً من إعادة/تعديل الصورة المصدر في مكانها. يجب على التعليمات البرمجية التي اعتمدت على تعديل binary() للصورة الأصلية أن تستخدم الكائن المُعاد (وتمرر copy=True للسلوك غير المُجرى في المكان).
الالتزامات: 8a44f0cd9
قائمة مراجعة الترحيل¶
من أجل نقل نظيف إلى v3.0.0، العمل المعتاد هو:
استبدل
image.find_number()/image.classify_object()بوحدةnn(ترحيل nn).غلّف
sensor.sleep()/sensor.reset()بـtry/exceptبدلاً من فحص قيمة منطقية مُعادة (تغيير sensor.sleep).تعامل مع أعداد البايتات الحقيقية من
send/recvلمنفذ WINC (تغيير منفذ WINC).استخدم الصورة المُعادة من
image.binary()بدلاً من توقع التعديل في المكان (تغيير binary).قلّص الصور قبل
find_apriltags()للبقاء تحت 64K بكسل (حد find_apriltags).
تعمل جميع البرامج النصية الأخرى دون تغيير.