v4.7.0

A v4.7.0 egy jelentős funkciókat hozó kiadás. A legfontosabb újdonságok: az új OpenMV AE3 (Alif Ensemble, Cortex-M55 + Ethos-U55 NPU) panel kétmagos openamp programozási modellel, egy csak olvasható ROMFS (/rom) fájlrendszer mellékelt modellekkel és kaszkádokkal, VL53L8CX 8x8-as time-of-flight támogatás, új YOLOv8 / YOLO-LC utófeldolgozók, valamint a MicroPython 1.25. Emellett megváltozik a beépített modellek és a Haar-kaszkádok betöltési módja is, ezért olvassa el az alábbi töréses változásokat.

Kiemelt újdonságok

  • OpenMV AE3 panel — az Alif Ensemble (Cortex-M55 + Ethos-U55 NPU) panel, teljes porttal, rendszerbetöltővel és ROMFS-szel.

  • Kétmagos openamp modul — feladatok átadása a második Alif magnak RPMsg felett (az @async_remote dekorátor, Endpoint/ EndpointIO).

  • ROMFS — egy csak olvasható /rom fájlrendszer beépített TFLite modellekkel és Haar-kaszkádokkal, valamint egy új tools/mkromfs.py gazdagépes építőeszköz.

  • VL53L8CX 8x8-as többzónás time-of-flight érzékelő támogatása.

  • Új ML utófeldolgozókyolo_v8_postprocess és yolo_lc_postprocess.

  • A MicroPython 1.25.0-ra frissült.

  • Töréses változás: a beépített modellek és a Haar-kaszkádok mostantól a /rom könyvtárból, elérési út alapján töltődnek be (lásd az ml.Model változását és a Haar-kaszkád változását).

Új funkciók

  • OpenMV AE3 — új Alif Ensemble panel (Cortex-M55 alkalmazásmag + Ethos-U55 NPU), porttal, rendszerbetöltővel, panelkonfigurációval, RGB LED-del és ROMFS-támogatással.

  • openamp — egy új modul az Alif kétmagos (Open-AMP / RPMsg) RPC-modelljéhez: Endpoint, EndpointIO, new_service_callback és az @async_remote dekorátor a marshallozott függvények második magra való átadásához. A HE/HP magok alapértelmezett asyncio-alapú _boot.py feladatfuttatóval érkeznek.

  • audio — az Alif port hozzáadja az audiomodult (PDM mikrofon) egy visszahívás-alapú streamelési API-val (audio.init(channels=, frequency=, gain_db=, buffers=, samples=, overflow=, highpass=)) az AE3-on.

  • ROMFS — egy csak olvasható /rom fájlrendszer panelenként csomagolt beépített eszközökkel (TFLite modellek, Haar-kaszkádok, …), egy új tools/mkromfs.py gazdagépes eszköz (tflite, tflite+vela, Haar-kaszkád, szöveg, bináris) és egy scripts/libraries/romfs.py segédprogram, amely közzéteszi az ls_romfs() függvényt.

  • ML utófeldolgozás — új yolo_v8_postprocess (YOLOv8) és yolo_lc_postprocess (könnyített tiny-YOLOv2 változat beágyazott rendszerekre optimalizált alapértelmezett horgonyokkal) osztályok, mindegyik threshold, nms_threshold és nms_sigma paramétereket fogad.

  • GenX320 villogásgátlás — új IOCTL_GENX320_SET_AFK ioctl az eseményérzékelő villogásgátló szűrőjének engedélyezéséhez és konfigurálásához (min./max. villogási frekvencia Hz-ben), egy genx320_grayscale_set_afk.py példával.

  • VL53L8CX — a 8x8-as többzónás time-of-flight érzékelő támogatása a tof modulon keresztül (automatikusan felismert, 8x8 15 Hz-en).

Egyéb változások és fejlesztések

  • A MicroPython 1.25.0-ra frissült (STM32 és i.MX RT portok), hozzáadva a felsőbb szintű Alif port, és eltávolítva a régi BT-HCI meghajtók az STM32 / i.MX RT portokból.

  • GenX320 — egy új ISSD szekvencia megduplázza a belső pixelórát (24 → 48 MHz) a magasabb képkockasebesség érdekében.

  • STM32N6 / ST Edge AI — alapozó munkák az STM32N6 Neural-ART modelltelepítéshez (ST Edge AI eszközök és ROMFS-támogatás).

  • PAG7936 — a CSI PHY bitsebessége mostantól be van állítva, ami javítja az érzékelő működését.

Hibajavítások

Kamera és érzékelők:

  • Javítva az IMU I2C feletti működése — az LSM6DSx IMU-t I2C-n bekötő panelek mostantól helyesen inicializálnak és olvasnak (az I2C útvonal korábban hibás olvasási útvonalat és rossz konstansokat használt).

  • A FLIR Boson inicializálása mostantól legfeljebb 10-szer próbálkozik a régebbi (< IDD 4.x) érzékelőknél, amelyeknek ~10 másodperc az indulás, és a gyári alapbeállítások visszaállnak újraindításkor, így a kívülről betöltött beállítások nem ronthatják el a videokimenetet.

  • Javítva a GenX320 psee_ehc_activate_override, amely hibás (nulla) akkumulációs időt írt.

  • FastMode+ hardver nélküli STM32 paneleken az I2C gyors mód kérése mostantól megfelelően védve van, ahelyett, hogy csendben rosszul konfigurálná a buszt.

Gépi tanulás:

  • Javítva a határoló dobozok gyűjtése és az np.nonzero kezelése a YOLOv2 / YOLOv5 utófeldolgozókban, ami javítja az észlelés megbízhatóságát.

Hardver- és paneltámogatás

  • OpenMV AE3 — új Alif Ensemble (Cortex-M55 + Ethos-U55 NPU) panel.

  • VL53L8CX — 8x8-as többzónás time-of-flight érzékelő; az AE3 ToF érzékelőjét VL53L5CX-ről VL53L8CX-re cserélték.

  • STM32N6 — ST Edge AI (Neural-ART) modelltelepítési alapozó munkák.

Töréses API-változások

Felhasználó számára látható API-törések a v4.6.20 és a v4.7.0 között. Hatókör: Python C-modulok a modules/ könyvtárban és Python könyvtárak a scripts/libraries/ könyvtárban.

Minden változás meg van jelölve a hatása szerint:

  • major — a legtöbb szkriptet, amely használta, szerkeszteni kell.

  • minor — szűk API; csak az azt használó szkripteket érinti.

  • behavior — azonos API, eltérő eredmények; ellenőrizze újra a finomhangolt szkripteket.

A változások hatás szerint, ebben a sorrendben vannak csoportosítva. Ha csak a kódját szeretné átültetni, ugorjon a végén lévő migrációs ellenőrzőlistára egy tömör teendőlistáért. Minden commit-hash a GitHubon lévő diffjére hivatkozik.

A beépített modellek elérési út, nem név alapján töltődnek be (major)

Az ml.Model többé nem tölt be beépített modellt csupasz névstring alapján. A modellek mostantól a fájlrendszerből / ROMFS-ből, elérési út alapján töltődnek be:

model = ml.Model("/rom/person_detect.tflite")   # was: ml.Model("person_detect")

A C-oldali model.labels attribútum eltávolításra került; a címkéket mostantól a Python ml.Model wrapper tölti be egy <model>.txt segédfájlból (None, ha hiányzik). Az összes mellékelt példa és az ml/apps.py /rom/*.tflite elérési utakra frissült.

Commits: 978fa436c, 3f55d956c, 416bc4613

A Haar-kaszkádok a ROMFS-ből töltődnek be (minor)

Az image.HaarCascade() mostantól a VFS / ROMFS rendszeren keresztül tölti be a beépített kaszkádokat. Az alapértelmezett frontális arc kaszkádfájlt haarcascade_frontalface_default.xml névről haarcascade_frontalface.xml névre nevezték át, és a betöltési hiba mostantól RuntimeError kivételt („Failed to load Haar cascade”) vált ki OSError helyett.

Commit: 9de1220d8

A tof.reset() / tof.deinit() szemantikája (behavior)

A tof modulban a reset() korábban az init() aliasa volt, és nem volt valódi deinit. A tof.reset() mostantól tényleges érzékelő-visszaállítást hajt végre, a tof.deinit() pedig megfelelően leállítja az érzékelőt (VL53L5CX leállítási támogatással). Az olyan kódot, amely arra támaszkodott, hogy a reset() újrainicializálja az érzékelőt, újra kell ellenőrizni.

Commits: 20d6b53f8, c743cab6a

GenX320 időzítési és eseménymód-korlátozások (behavior)

Az új GenX320 ISSD szekvencia megváltoztatja az érzékelő időalapját: a képkockasebesség- és expozícióargumentumok mostantól 1 MHz-es egységekben vannak kifejezve, ahelyett, hogy órajelhez lennének skálázva, és a HSYNC kioltás dinamikusan igazodik a kért képkockasebességhez. Azokat a szkripteket, amelyek bedrótozott GenX320 időzítési értékeket tartalmaztak, újra kell hangolni. Az eseménymódú felvétel mostantól hibát vált ki, ha a kép transzponálása engedélyezve van (az ebben a konfigurációban nem támogatott).

Commits: 660a783d6, 7a718c6af

Migrációs ellenőrzőlista

A v4.7.0-ra való tiszta átültetéshez a szokásos teendők:

  1. Módosítsa a beépített modellek betöltését névstringről egy /rom/<name>.tflite elérési útra, és adja meg a címkéket egy <name>.txt segédfájlon keresztül (az ml.Model változása).

  2. Frissítse a haarcascade_frontalface_default.xml fájlt haarcascade_frontalface.xml névre, és kapja el a RuntimeError kivételt (nem OSError) a kaszkád betöltési hibájánál (a Haar-kaszkád változása).

  3. Távolítsa el az olyan kódot, amely arra támaszkodott, hogy a tof.reset() újrainicializálja az érzékelőt (a tof változása).

  4. Hangolja újra a bedrótozott GenX320 képkockasebesség- / expozícióértékeket 1 MHz-es egységekre, és ne engedélyezze a transzponálást eseménymódban (a GenX320 változása).