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
openampmodul — feladatok átadása a második Alif magnak RPMsg felett (az@async_remotedekorátor,Endpoint/EndpointIO).ROMFS — egy csak olvasható
/romfájlrendszer beépített TFLite modellekkel és Haar-kaszkádokkal, valamint egy újtools/mkromfs.pygazdagépes építőeszköz.VL53L8CX 8x8-as többzónás time-of-flight érzékelő támogatása.
Új ML utófeldolgozók —
yolo_v8_postprocessésyolo_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
/romkö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_remotedekorátor a marshallozott függvények második magra való átadásához. A HE/HP magok alapértelmezett asyncio-alapú_boot.pyfeladatfuttató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ó
/romfájlrendszer panelenként csomagolt beépített eszközökkel (TFLite modellek, Haar-kaszkádok, …), egy újtools/mkromfs.pygazdagépes eszköz (tflite, tflite+vela, Haar-kaszkád, szöveg, bináris) és egyscripts/libraries/romfs.pysegédprogram, amely közzéteszi azls_romfs()függvényt.ML utófeldolgozás — új
yolo_v8_postprocess(YOLOv8) ésyolo_lc_postprocess(könnyített tiny-YOLOv2 változat beágyazott rendszerekre optimalizált alapértelmezett horgonyokkal) osztályok, mindegyikthreshold,nms_thresholdésnms_sigmaparamétereket fogad.GenX320 villogásgátlás — új
IOCTL_GENX320_SET_AFKioctl 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), egygenx320_grayscale_set_afk.pypéldával.VL53L8CX — a 8x8-as többzónás time-of-flight érzékelő támogatása a
tofmodulon 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.nonzerokezelé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.
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.
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).
Migrációs ellenőrzőlista¶
A v4.7.0-ra való tiszta átültetéshez a szokásos teendők:
Módosítsa a beépített modellek betöltését névstringről egy
/rom/<name>.tfliteelérési útra, és adja meg a címkéket egy<name>.txtsegédfájlon keresztül (az ml.Model változása).Frissítse a
haarcascade_frontalface_default.xmlfájlthaarcascade_frontalface.xmlnévre, és kapja el aRuntimeErrorkivételt (nemOSError) a kaszkád betöltési hibájánál (a Haar-kaszkád változása).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).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).