v4.7.0¶
v4.7.0 is een grote feature-release. De kern ervan: het nieuwe OpenMV AE3-board (Alif Ensemble, Cortex-M55 + Ethos-U55 NPU) met een dual-core openamp-programmeermodel, een alleen-lezen ROMFS (/rom)-bestandssysteem met meegeleverde modellen en cascades, ondersteuning voor de VL53L8CX 8x8 time-of-flight, nieuwe YOLOv8- / YOLO-LC-postprocessors en MicroPython 1.25. Ook verandert hoe ingebouwde modellen en Haar Cascades worden geladen, dus lees de breaking changes hieronder.
Hoogtepunten¶
OpenMV AE3-board — het Alif Ensemble (Cortex-M55 + Ethos-U55 NPU)-board, met een volledige port, bootloader en ROMFS.
Dual-core
openamp-module — verplaats werk naar de tweede Alif-core via RPMsg (de@async_remote-decorator,Endpoint/EndpointIO).ROMFS — een alleen-lezen
/rom-bestandssysteem met ingebouwde TFLite-modellen en Haar Cascades, plus een nieuwetools/mkromfs.py-host-builder.VL53L8CX 8x8 multi-zone time-of-flight-sensorondersteuning.
Nieuwe ML-postprocessors —
yolo_v8_postprocessenyolo_lc_postprocess.MicroPython bijgewerkt naar 1.25.0.
Breaking: ingebouwde modellen en Haar Cascades laden nu vanaf
/romvia pad (zie de ml.Model-wijziging en de Haar Cascade-wijziging).
Nieuwe functies¶
OpenMV AE3 — nieuw Alif Ensemble-board (Cortex-M55-applicatiecore + Ethos-U55 NPU), met port, bootloader, boardconfiguratie, RGB-LED en ROMFS-ondersteuning.
openamp— een nieuwe module voor het Alif dual-core (Open-AMP / RPMsg) RPC-model:Endpoint,EndpointIO,new_service_callbacken de@async_remote-decorator om gemarshalde functies naar de tweede core te verplaatsen. De HE/HP-cores leveren een standaard asyncio-gebaseerde_boot.py-taakuitvoerder.audio— de Alif-port voegt de audiomodule (PDM-microfoon) toe met een callback-gebaseerde streaming-API (audio.init(channels=, frequency=, gain_db=, buffers=, samples=, overflow=, highpass=)) op de AE3.ROMFS — een alleen-lezen
/rom-bestandssysteem met ingebouwde assets (TFLite-modellen, Haar Cascades, …) verpakt per board, een nieuwetools/mkromfs.py-host-tool (tflite, tflite+vela, Haar Cascade, tekst, binair) en eenscripts/libraries/romfs.py-helper diels_romfs()blootstelt.ML-postprocessing — nieuwe classes
yolo_v8_postprocess(YOLOv8) enyolo_lc_postprocess(lichtgewicht tiny-YOLOv2-variant met voor embedded geoptimaliseerde standaard-anchors), elk metthreshold,nms_thresholdennms_sigma.GenX320 anti-flikker — een nieuwe
IOCTL_GENX320_SET_AFK-ioctl om het anti-flikkerfilter van de eventsensor in te schakelen en te configureren (min./max. flikkerfrequentie in Hz), met eengenx320_grayscale_set_afk.py-voorbeeld.VL53L8CX — ondersteuning voor de 8x8 multi-zone time-of-flight-sensor via de
tof-module (automatisch gedetecteerd, 8x8 bij 15 Hz).
Overige wijzigingen en verbeteringen¶
MicroPython bijgewerkt naar 1.25.0 (STM32- en i.MX RT-ports), met de upstream Alif-port toegevoegd en de oude BT-HCI-drivers verwijderd uit de STM32- / i.MX RT-ports.
GenX320 — een nieuwe ISSD-sequentie verdubbelt de interne pixelklok (24 → 48 MHz) voor hogere framerates.
STM32N6 / ST Edge AI — basiswerk voor STM32N6 Neural-ART-modeldeployment (ST Edge AI-tooling en ROMFS-ondersteuning).
PAG7936 — de CSI PHY-bitrate wordt nu ingesteld, wat de werking van die sensor verbetert.
Bugfixes¶
Camera en sensoren:
De IMU via I2C verholpen — boards die de LSM6DSx IMU op I2C bedraden initialiseren en lezen nu correct (het I2C-pad gebruikte voorheen een defect leespad en verkeerde constanten).
FLIR Boson-init probeert nu tot 10 keer opnieuw voor oudere (< IDD 4.x) sensoren die ~10 s nodig hebben om op te starten, en fabrieksinstellingen worden bij reset hersteld zodat extern geladen instellingen de video-uitvoer niet kunnen verstoren.
De GenX320
psee_ehc_activate_overrideverholpen, die de verkeerde (nul) accumulatietijd schreef.Op STM32-boards zonder FastMode+-hardware wordt het aanvragen van I2C fast mode nu correct afgeschermd in plaats van de bus stilzwijgend verkeerd te configureren.
Machine learning:
Het verzamelen van begrenzingsvakken en de
np.nonzero-verwerking in de YOLOv2- / YOLOv5-postprocessors verholpen, wat de detectiebetrouwbaarheid verbetert.
Hardware- en board-ondersteuning¶
OpenMV AE3 — nieuw Alif Ensemble (Cortex-M55 + Ethos-U55 NPU)-board.
VL53L8CX — 8x8 multi-zone time-of-flight-sensor; de ToF-sensor van de AE3 is overgeschakeld van de VL53L5CX naar de VL53L8CX.
STM32N6 — basiswerk voor ST Edge AI (Neural-ART)-modeldeployment.
Breaking API-wijzigingen¶
Voor de gebruiker zichtbare API-breuken tussen v4.6.20 en v4.7.0. Scope: Python C-modules in modules/ en Python-bibliotheken in scripts/libraries/.
Elke wijziging is getagd met de impact ervan:
major — de meeste scripts die het gebruikten moeten worden aangepast.
minor — beperkte API; treft alleen scripts die het gebruikten.
behavior — zelfde API, andere resultaten; controleer afgestelde scripts opnieuw.
Wijzigingen zijn in die volgorde gegroepeerd op impact. Als je alleen je code wilt porten, spring dan naar de migratiechecklist aan het eind voor een beknopte to-dolijst. Elke commit-hash linkt naar de bijbehorende diff op GitHub.
Ingebouwde modellen laden via pad, niet via naam (major)¶
ml.Model laadt een ingebouwd model niet langer vanuit een kale naamstring. Modellen worden nu via een pad geladen vanaf het bestandssysteem / ROMFS:
model = ml.Model("/rom/person_detect.tflite") # was: ml.Model("person_detect")
Het model.labels-attribuut aan de C-kant is verwijderd; labels worden nu door de Python-ml.Model-wrapper geladen vanuit een <model>.txt-sidecarbestand (None indien afwezig). Alle meegeleverde voorbeelden en ml/apps.py zijn bijgewerkt naar /rom/*.tflite-paden.
Haar Cascades laden vanaf ROMFS (minor)¶
image.HaarCascade() laadt ingebouwde cascades nu via de VFS / ROMFS. Het standaard frontale-gezichtscascadebestand is hernoemd van haarcascade_frontalface_default.xml naar haarcascade_frontalface.xml, en een laadfout veroorzaakt nu een RuntimeError (“Failed to load Haar cascade”) in plaats van OSError.
Commit: 9de1220d8
Semantiek van tof.reset() / tof.deinit() (behavior)¶
In de tof-module was reset() voorheen een alias voor init() en bestond er geen echte deinit. tof.reset() voert nu een werkelijke sensorreset uit en tof.deinit() schakelt de sensor correct uit (met VL53L5CX-shutdown-ondersteuning). Code die erop vertrouwde dat reset() de sensor opnieuw initialiseerde, moet opnieuw worden gecontroleerd.
GenX320-timing en event-modus-beperkingen (behavior)¶
De nieuwe GenX320 ISSD-sequentie verandert de tijdbasis van de sensor: framerate- en belichtingsargumenten worden nu uitgedrukt in eenheden van 1 MHz in plaats van klokgeschaald, en HSYNC-blanking wordt dynamisch aangepast aan de gevraagde framerate. Scripts die GenX320-timingwaarden hardcodeerden, moeten opnieuw worden afgesteld. Event-modus-opname veroorzaakt nu een fout wanneer image transpose is ingeschakeld (dat wordt in die configuratie niet ondersteund).
Migratiechecklist¶
Voor een schone port naar v4.7.0 is het typische werk:
Wijzig het laden van ingebouwde modellen van een naamstring naar een
/rom/<name>.tflite-pad, en lever labels via een<name>.txt-sidecarbestand (de ml.Model-wijziging).Werk
haarcascade_frontalface_default.xmlbij naarhaarcascade_frontalface.xmlen vangRuntimeError(nietOSError) op bij een mislukte cascade-load (de Haar Cascade-wijziging).Verwijder code die erop vertrouwde dat
tof.reset()de sensor opnieuw initialiseerde (de tof-wijziging).Stel eventuele hardgecodeerde GenX320 framerate- / belichtingswaarden opnieuw af naar eenheden van 1 MHz, en schakel transpose niet in in event-modus (de GenX320-wijziging).