v4.7.0¶
v4.7.0 je veliko izdanje sa značajkama. Glavne novosti: nova pločica OpenMV AE3 (Alif Ensemble, Cortex-M55 + Ethos-U55 NPU) s dvojezgrenim programskim modelom openamp, datotečni sustav samo za čitanje ROMFS (/rom) s priloženim modelima i kaskadama, podrška za VL53L8CX 8x8 mjerenje vremena leta (time-of-flight), nove naknadne obrade YOLOv8 / YOLO-LC te MicroPython 1.25. Također mijenja način učitavanja ugrađenih modela i Haar kaskada, pa pročitajte promjene koje narušavaju kompatibilnost u nastavku.
Najvažnije¶
Pločica OpenMV AE3 — pločica Alif Ensemble (Cortex-M55 + Ethos-U55 NPU), s potpunim portom, pokretačem (bootloader) i ROMFS-om.
Dvojezgreni modul
openamp— prebacite posao na drugu Alif jezgru preko RPMsg-a (dekorator@async_remote,Endpoint/EndpointIO).ROMFS — datotečni sustav
/romsamo za čitanje s ugrađenim TFLite modelima i Haar kaskadama, uz novi alat za izgradnju na računalutools/mkromfs.py.Podrška za VL53L8CX 8x8 viševzonski senzor mjerenja vremena leta (time-of-flight).
Nove ML naknadne obrade —
yolo_v8_postprocessiyolo_lc_postprocess.MicroPython ažuriran na 1.25.0.
Narušava kompatibilnost: ugrađeni modeli i Haar kaskade sada se učitavaju iz
/rompo putanji (pogledajte promjenu ml.Model i promjenu Haar kaskade).
Nove značajke¶
OpenMV AE3 — nova pločica Alif Ensemble (aplikacijska jezgra Cortex-M55 + Ethos-U55 NPU), s portom, pokretačem (bootloader), konfiguracijom pločice, RGB LED-icom i podrškom za ROMFS.
openamp— novi modul za Alif dvojezgreni (Open-AMP / RPMsg) RPC model:Endpoint,EndpointIO,new_service_callbackte dekorator@async_remoteza prebacivanje serijaliziranih funkcija na drugu jezgru. HE/HP jezgre isporučuju zadani_boot.pypokretač zadataka temeljen na asyncio.audio— Alif port dodaje audio modul (PDM mikrofon) s API-jem za strujanje temeljenim na povratnim pozivima (audio.init(channels=, frequency=, gain_db=, buffers=, samples=, overflow=, highpass=)) na AE3.ROMFS — datotečni sustav
/romsamo za čitanje s ugrađenim resursima (TFLite modeli, Haar kaskade, …) pakiranima po pločici, novi alat na računalutools/mkromfs.py(tflite, tflite+vela, Haar kaskada, tekst, binarno) te pomoćnikscripts/libraries/romfs.pykoji izlažels_romfs().ML naknadna obrada — nove klase
yolo_v8_postprocess(YOLOv8) iyolo_lc_postprocess(lagana varijanta tiny-YOLOv2 sa zadanim sidrima optimiziranima za ugrađene sustave), svaka primathreshold,nms_thresholdinms_sigma.GenX320 protiv treperenja — novi ioctl
IOCTL_GENX320_SET_AFKza omogućavanje i konfiguriranje filtra protiv treperenja senzora događaja (min/maks frekvencija treperenja u Hz), s primjeromgenx320_grayscale_set_afk.py.VL53L8CX — podrška za 8x8 viševzonski senzor mjerenja vremena leta (time-of-flight) putem modula
tof(automatski detektiran, 8x8 pri 15 Hz).
Ostale promjene i poboljšanja¶
MicroPython ažuriran na 1.25.0 (STM32 i i.MX RT portovi), uz dodan uzvodni Alif port i uklonjene stare BT-HCI upravljačke programe iz STM32 / i.MX RT portova.
GenX320 — nova ISSD sekvenca udvostručuje interni takt piksela (24 → 48 MHz) za veće brzine sličica.
STM32N6 / ST Edge AI — temelji za implementaciju modela STM32N6 Neural-ART (ST Edge AI alati i podrška za ROMFS).
PAG7936 — sada je postavljena brzina prijenosa CSI PHY-ja, što poboljšava rad tog senzora.
Ispravci pogrešaka¶
Kamera i senzori:
Ispravljen IMU preko I2C — pločice koje povezuju LSM6DSx IMU na I2C sada se ispravno inicijaliziraju i čitaju (I2C putanja je prethodno koristila pokvarenu putanju čitanja i pogrešne konstante).
Inicijalizacija FLIR Boson sada pokušava do 10 puta za starije senzore (< IDD 4.x) kojima treba ~10 s za pokretanje, a tvorničke zadane postavke se vraćaju pri resetiranju kako vanjski učitane postavke ne bi mogle pokvariti video izlaz.
Ispravljeno da
psee_ehc_activate_overrideu GenX320 upisuje pogrešno (nulto) vrijeme akumulacije.Na STM32 pločicama bez FastMode+ hardvera, zahtjev za I2C brzim načinom rada sada je ispravno zaštićen umjesto tihog pogrešnog konfiguriranja sabirnice.
Strojno učenje:
Ispravljeno prikupljanje graničnih okvira i rukovanje
np.nonzerou YOLOv2 / YOLOv5 naknadnim obradama, čime se poboljšava pouzdanost detekcije.
Hardver i podrška za pločice¶
OpenMV AE3 — nova pločica Alif Ensemble (Cortex-M55 + Ethos-U55 NPU).
VL53L8CX — 8x8 viševzonski senzor mjerenja vremena leta (time-of-flight); ToF senzor na AE3 prebačen je s VL53L5CX na VL53L8CX.
STM32N6 — temelji za implementaciju modela ST Edge AI (Neural-ART).
Promjene API-ja koje narušavaju kompatibilnost¶
Korisniku vidljive promjene API-ja koje narušavaju kompatibilnost između v4.6.20 i v4.7.0. Opseg: Python C-moduli u modules/ i Python biblioteke u scripts/libraries/.
Svaka je promjena označena svojim utjecajem:
major — većina skripti koje su je koristile treba izmjene.
minor — uski API; utječe samo na skripte koje su ga koristile.
behavior — isti API, drugačiji rezultati; ponovno provjerite ugođene skripte.
Promjene su grupirane po utjecaju tim redoslijedom. Ako samo želite prenijeti svoj kod, prijeđite na kontrolni popis za migraciju na kraju za sažet popis zadataka. Svaki hash commita vodi na svoj diff na GitHubu.
Ugrađeni modeli se učitavaju po putanji, ne po imenu (major)¶
ml.Model više ne učitava ugrađeni model iz golog niza imena. Modeli se sada učitavaju iz datotečnog sustava / ROMFS-a po putanji:
model = ml.Model("/rom/person_detect.tflite") # was: ml.Model("person_detect")
Atribut model.labels na strani C-a je uklonjen; oznake sada učitava Python omotač ml.Model iz prateće datoteke <model>.txt (None ako je nema). Svi priloženi primjeri i ml/apps.py ažurirani su na putanje /rom/*.tflite.
Haar kaskade se učitavaju iz ROMFS-a (minor)¶
image.HaarCascade() sada učitava ugrađene kaskade putem VFS-a / ROMFS-a. Zadana datoteka kaskade za frontalno lice preimenovana je iz haarcascade_frontalface_default.xml u haarcascade_frontalface.xml, a neuspjelo učitavanje sada podiže RuntimeError („Failed to load Haar cascade”) umjesto OSError.
Commit: 9de1220d8
Semantika tof.reset() / tof.deinit() (behavior)¶
U modulu tof, reset() je prethodno bio alias za init() i nije postojao pravi deinit. tof.reset() sada izvodi stvarni reset senzora, a tof.deinit() ispravno gasi senzor (s podrškom za gašenje VL53L5CX). Kod koji se oslanjao na to da reset() ponovno inicijalizira senzor treba ponovno provjeriti.
Ograničenja vremenskog rasporeda i načina rada s događajima za GenX320 (behavior)¶
Nova GenX320 ISSD sekvenca mijenja vremensku bazu senzora: argumenti brzine sličica i ekspozicije sada se izražavaju u jedinicama od 1 MHz umjesto da se skaliraju prema taktu, a HSYNC zatamnjenje dinamički se prilagođava traženoj brzini sličica. Skripte koje su tvrdo kodirale vrijednosti vremenskog rasporeda GenX320 moraju ih ponovno ugoditi. Snimanje u načinu rada s događajima sada podiže pogrešku kada je omogućeno transponiranje slike (nije podržano u toj konfiguraciji).
Kontrolni popis za migraciju¶
Za čist prijenos na v4.7.0 uobičajeni posao je:
Promijenite učitavanje ugrađenih modela iz niza imena u putanju
/rom/<name>.tflitete navedite oznake putem prateće datoteke<name>.txt(promjena ml.Model).Ažurirajte
haarcascade_frontalface_default.xmluhaarcascade_frontalface.xmli hvatajteRuntimeError(neOSError) pri neuspjehu učitavanja kaskade (promjena Haar kaskade).Uklonite kod koji se oslanjao na to da
tof.reset()ponovno inicijalizira senzor (promjena tof).Ponovno ugodite sve tvrdo kodirane vrijednosti brzine sličica / ekspozicije za GenX320 u jedinice od 1 MHz i ne omogućujte transponiranje u načinu rada s događajima (promjena GenX320).