v4.7.0¶
v4.7.0 on merkittävä ominaisuusjulkaisu. Sen kärkenä: uusi OpenMV AE3 (Alif Ensemble, Cortex-M55 + Ethos-U55 NPU) -kortti kaksiytimisellä openamp-ohjelmointimallilla, vain luku -tilainen ROMFS (/rom) -tiedostojärjestelmä mukana toimitetuilla malleilla ja kaskadeilla, VL53L8CX 8x8 -aikalentotuki, uudet YOLOv8- / YOLO-LC-jälkikäsittelijät sekä MicroPython 1.25. Se muuttaa myös sisäänrakennettujen mallien ja Haar-kaskadien lataustapaa, joten lue alla olevat rikkovat muutokset.
Kohokohdat¶
OpenMV AE3 -kortti — Alif Ensemble (Cortex-M55 + Ethos-U55 NPU) -kortti, mukana täysi portti, käynnistyslatain ja ROMFS.
Kaksiytiminen
openamp-moduuli — siirrä työtä toiselle Alif-ytimelle RPMsg:n kautta (@async_remote-koriste,Endpoint/EndpointIO).ROMFS — vain luku -tilainen
/rom-tiedostojärjestelmä, jossa on sisäänrakennetut TFLite-mallit ja Haar-kaskadit, sekä uusitools/mkromfs.py-isäntärakentaja.VL53L8CX 8x8 -monivyöhykkeisen aikalentosensorin tuki.
Uudet ML-jälkikäsittelijät —
yolo_v8_postprocessjayolo_lc_postprocess.MicroPython päivitetty versioon 1.25.0.
Rikkova: sisäänrakennetut mallit ja Haar-kaskadit ladataan nyt
/rom-hakemistosta polun perusteella (katso ml.Model-muutos ja Haar-kaskadin muutos).
Uudet ominaisuudet¶
OpenMV AE3 — uusi Alif Ensemble -kortti (Cortex-M55-sovellusydin + Ethos-U55 NPU), mukana portti, käynnistyslatain, korttimääritys, RGB-LED ja ROMFS-tuki.
openamp— uusi moduuli Alifin kaksiytimiselle (Open-AMP / RPMsg) RPC-mallille:Endpoint,EndpointIO,new_service_callbackja@async_remote-koriste marshalloitujen funktioiden siirtämiseen toiselle ytimelle. HE-/HP-ytimet toimittavat oletusarvoisen asyncio-pohjaisen_boot.py-tehtäväajurin.audio— Alif-portti lisää audiomoduulin (PDM-mikrofoni) takaisinkutsupohjaisella suoratoisto-API:lla (audio.init(channels=, frequency=, gain_db=, buffers=, samples=, overflow=, highpass=)) AE3:lla.ROMFS — vain luku -tilainen
/rom-tiedostojärjestelmä, jossa on sisäänrakennetut resurssit (TFLite-mallit, Haar-kaskadit, …) korttikohtaisesti paketoituna, uusitools/mkromfs.py-isäntätyökalu (tflite, tflite+vela, Haar-kaskadi, teksti, binääri) sekäscripts/libraries/romfs.py-apukirjasto, joka tarjoaals_romfs().ML-jälkikäsittely — uudet
yolo_v8_postprocess(YOLOv8) jayolo_lc_postprocess(kevyt tiny-YOLOv2-variantti sulautetuille järjestelmille optimoiduilla oletusankkureilla) -luokat, joista kukin ottaathreshold-,nms_threshold- janms_sigma-parametrit.GenX320-välkynnänesto — uusi
IOCTL_GENX320_SET_AFK-ioctl tapahtumasensorin välkynnänestosuodattimen käyttöönottoon ja määritykseen (välkynnän vähimmäis-/enimmäistaajuus Hz:ssä), mukanagenx320_grayscale_set_afk.py-esimerkki.VL53L8CX — tuki 8x8-monivyöhykkeiselle aikalentosensorille
tof-moduulin kautta (automaattisesti tunnistettu, 8x8 taajuudella 15 Hz).
Muut muutokset ja parannukset¶
MicroPython päivitetty versioon 1.25.0 (STM32- ja i.MX RT -portit), mukana lisätty upstream-Alif-portti ja vanhat BT-HCI-ajurit poistettu STM32- / i.MX RT -porteista.
GenX320 — uusi ISSD-sekvenssi kaksinkertaistaa sisäisen pikselikellon (24 → 48 MHz) korkeampia kehysnopeuksia varten.
STM32N6 / ST Edge AI — pohjatyö STM32N6:n Neural-ART-mallien käyttöönotolle (ST Edge AI -työkalut ja ROMFS-tuki).
PAG7936 — CSI PHY -bittinopeus asetetaan nyt, mikä parantaa kyseisen sensorin toimintaa.
Korjatut virheet¶
Kamera ja sensorit:
Korjattu IMU I2C:n yli — kortit, joissa LSM6DSx-IMU on kytketty I2C:hen, alustavat ja lukevat nyt oikein (I2C-polku käytti aiemmin rikkinäistä lukupolkua ja vääriä vakioita).
FLIR Bosonin alustus yrittää nyt jopa 10 kertaa vanhemmilla (< IDD 4.x) sensoreilla, joiden käynnistyminen kestää ~10 s, ja tehdasoletusasetukset palautetaan nollauksessa, jotta ulkoisesti ladatut asetukset eivät voi rikkoa videolähtöä.
Korjattu GenX320:n
psee_ehc_activate_override, joka kirjoitti väärän (nolla) kertymäajan.STM32-korteilla, joissa ei ole FastMode+-laitteistoa, I2C:n nopean tilan pyytäminen on nyt asianmukaisesti suojattu sen sijaan, että väylä määritettäisiin hiljaisesti väärin.
Koneoppiminen:
Korjattu rajauslaatikoiden kerääminen ja
np.nonzero-käsittely YOLOv2- / YOLOv5-jälkikäsittelijöissä, mikä parantaa tunnistuksen luotettavuutta.
Laitteisto- ja korttituki¶
OpenMV AE3 — uusi Alif Ensemble (Cortex-M55 + Ethos-U55 NPU) -kortti.
VL53L8CX — 8x8-monivyöhykkeinen aikalentosensori; AE3:n ToF-sensori vaihdettiin VL53L5CX:stä VL53L8CX:ään.
STM32N6 — ST Edge AI (Neural-ART) -mallien käyttöönoton pohjatyö.
Rikkovat API-muutokset¶
Käyttäjälle näkyvät API-rikkoutumiset versioiden v4.6.20 ja v4.7.0 välillä. Laajuus: Python-C-moduulit hakemistossa modules/ ja Python-kirjastot hakemistossa scripts/libraries/.
Jokainen muutos on merkitty vaikutuksensa mukaan:
major — useimmat sitä käyttäneet skriptit vaativat muokkauksia.
minor — kapea API; vaikuttaa vain sitä käyttäneisiin skripteihin.
behavior — sama API, eri tulokset; tarkista viritetyt skriptit uudelleen.
Muutokset on ryhmitelty vaikutuksen mukaan tässä järjestyksessä. Jos haluat vain siirtää koodisi, siirry lopussa olevaan siirtymän tarkistuslistaan, jossa on tiivistetty tehtävälista. Jokainen commit-tunniste linkittää diffiinsä GitHubissa.
Sisäänrakennetut mallit ladataan polun, ei nimen, perusteella (major)¶
ml.Model ei enää lataa sisäänrakennettua mallia pelkän nimimerkkijonon perusteella. Mallit ladataan nyt tiedostojärjestelmästä / ROMFS:stä polun perusteella:
model = ml.Model("/rom/person_detect.tflite") # was: ml.Model("person_detect")
C-puolen model.labels-attribuutti poistettiin; luokkanimet ladataan nyt Python-puolen ml.Model -kääreellä erillisestä <model>.txt-tiedostosta (None, jos puuttuu). Kaikki mukana toimitetut esimerkit ja ml/apps.py päivitettiin käyttämään /rom/*.tflite-polkuja.
Haar-kaskadit ladataan ROMFS:stä (minor)¶
image.HaarCascade() lataa nyt sisäänrakennetut kaskadit VFS:n / ROMFS:n kautta. Oletusarvoinen kasvojen etupuolen kaskaditiedosto nimettiin uudelleen muodosta haarcascade_frontalface_default.xml muotoon haarcascade_frontalface.xml, ja latausvirhe nostaa nyt RuntimeError-poikkeuksen (”Failed to load Haar cascade”) OSError-poikkeuksen sijaan.
Commit: 9de1220d8
tof.reset() / tof.deinit() -semantiikka (behavior)¶
tof-moduulissa reset() oli aiemmin init()-aliaksen ja todellista deinit-toimintoa ei ollut. tof.reset() suorittaa nyt todellisen sensorin nollauksen ja tof.deinit() sammuttaa sensorin asianmukaisesti (VL53L5CX:n sammutustuella). Koodi, joka luotti siihen, että reset() alustaa sensorin uudelleen, tulisi tarkistaa uudelleen.
GenX320:n ajoitus- ja tapahtumatilarajoitukset (behavior)¶
Uusi GenX320 ISSD -sekvenssi muuttaa sensorin aikaperustaa: kehysnopeus- ja valotusargumentit ilmaistaan nyt 1 MHz:n yksiköissä kelloskaalauksen sijaan, ja HSYNC-pimennystä säädetään dynaamisesti pyydetyn kehysnopeuden mukaan. Skriptit, joihin GenX320:n ajoitusarvot oli kovakoodattu, on viritettävä uudelleen. Tapahtumatilakaappaus nostaa nyt virheen, kun kuvan transpose on käytössä (se ei ole tuettu kyseisessä määrityksessä).
Siirtymän tarkistuslista¶
Puhtaaseen siirtymiseen versioon v4.7.0 tyypillinen työ on:
Vaihda sisäänrakennetun mallin lataus nimimerkkijonosta
/rom/<name>.tflite-polkuun ja tarjoa luokkanimet erillisen<name>.txt-tiedoston kautta (ml.Model-muutos).Päivitä
haarcascade_frontalface_default.xmlmuotoonhaarcascade_frontalface.xmlja nappaaRuntimeError(eiOSError) kaskadin latausvirheessä (Haar-kaskadin muutos).Poista koodi, joka luotti siihen, että
tof.reset()alustaa sensorin uudelleen (tof-muutos).Viritä kaikki kovakoodatut GenX320:n kehysnopeus- / valotusarvot uudelleen 1 MHz:n yksiköihin äläkä ota transposea käyttöön tapahtumatilassa (GenX320-muutos).