v4.8.0¶
v4.8.0 on merkittävä ominaisuusjulkaisu. Sen kohokohtia: aivan uusi luokkapohjainen csi-kameramoduuli, jossa on tuki useille kameroille, OpenMV N6 (STM32N6) -kortti Neural-ART NPU:lla, NPU-päättelytaustaosa, GenX320-tapahtumakameran RAW-tapahtumatila, uusi crc-moduuli, uudelleenjärjestelty ML-jälkikäsittelykirjasto ja MicroPython 1.26. Se myös poistaa muutamia vanhoja API:ja — buzzer-moduulin ja fir-moduulin FLIR Lepton -ohjauksen — joten lue alla olevat rikkovat muutokset.
Kohokohdat¶
Uusi
csi-kameramoduuli. Luokkapohjainencsi.CSI-API, joka tukee useita samanaikaisia kameroita ja esitellään vanhansensor-moduulin rinnalla.OpenMV N6. STM32N6-kortti, jossa on Neural-ART NPU, kolminkertainen puskurointi, Soft-CSI ja ToF-moduuli.
NPU-päättely. ST Neural-ART (STAI) -taustaosa laitteistokiihdytettyä mallin päättelyä varten.
GenX320-tapahtumatila. RAW-tapahtumatuloste sekä
draw_event_histogram()tapahtumakameran renderöintiin.Uudelleenjärjestelty ML-jälkikäsittely — valmistajakohtaiset alipaketit (
ml.postprocessing.ultralytics,mediapipe,edgeimpulse,darknet) sekä uudet BlazeFace- / BlazePalm- ja käsi- ja kasvomaamerkkitunnistimet.Uusi
crc-moduuli — laitteistokiihdytetty CRC-16 / CRC-32.MicroPython päivitetty versioon 1.26.0.
Rikkova:
buzzer-moduuli jafir-moduulin Lepton-ohjaus poistettiin (Lepton on nyt tavallinen kamera). Katso fir/Lepton-muutos ja buzzerin poisto.
Uudet ominaisuudet¶
Uusi
csi-kameramoduuli — luokkapohjainencsi.CSI-olio, joka tukee useita samanaikaisia kameroita (N6:ssa enintään kolme), estotonta tilannekuvaa, mukautettuja(w, h)-kehyskokoja sekä informatiivistaprint()- / repr-tulostetta. Se esitellään vanhansensor-moduulin rinnalla (ei suora korvaaja).crc—crc.crc16()jacrc.crc32(), laitteistokiihdytettyjä ohjelmistovaihtoehdon kanssa, OpenMV N6:ssa ja AE3:ssa.image.Image.draw_image()saitransform=-avainsanan (2-ulotteinen liukuluku-ndarray-matriisi affiini-/perspektiivivääristymiin, GPU-kiihdytetty STM32:ssa ja Alifissa); sama muunnos on käytettävissä kuvanmuunnoksessa.draw_event_histogram()— renderöi tapahtumakameran histogrammeja.GenX320 RAW-tapahtumatila —
csi.IOCTL_GENX320_SET_MODEarvoillacsi.GENX320_MODE_HISTO/csi.GENX320_MODE_EVENT,csi.IOCTL_GENX320_READ_EVENTS,csi.IOCTL_GENX320_CALIBRATE, tapahtumatyyppivakiot ja uudet esimerkkiskriptit.ML — ST Neural-ART (STAI) NPU -päättelytaustaosa;
ml.Modelsaipostprocess=-avainsanan (jälkikäsittelijä suoritetaan nyt automaattisestipredict()-kutsun sisällä myös ilman takaisinkutsua);ml.postprocessingjärjestettiin uudelleen valmistajakohtaisiin alipaketteihin —ml.postprocessing.ultralytics(YoloV5,YoloV8),ml.postprocessing.darknet(YoloV2,YoloLC),ml.postprocessing.edgeimpulse(Fomo) jaml.postprocessing.mediapipe(BlazeFace,BlazePalm,HandLandmarks,FaceLandmarks) — vanhat snake_case-nimet säilyvät aliaksina;ml.utils.draw_keypoints()jaml.utils.draw_skeleton()lisättiin; mukana toimitettavien ROMFS-mallien määrä kasvoi (BlazeFace, YOLO-LC, YOLOv8n, kämmen-/käsi-/kasvomaamerkit).audio— MDF-digitaalimikrofonitulo STM32N6:ssa.Näyttö — SSD1351 OLED -ajuri ja esimerkki;
SPIDisplay-ohjaimet voivat ohittaa alustuskomentonsa; SPI-näytön konstruktori saihmirror- /vflip-avainsanat.Laitteen sisäinen profilointi — SysTick + Armv8.1-M PMU -sykli-/tapahtumalaskurit funktiotason instrumentoinnilla, luettavissa debug-linkin kautta (
pyopenmvsai profilointi- ja ELF-symbolituen).Uusi sensorituki — PixArt PS5520; FLIR BOSON OpenMV H7 Plus -kortissa; GenX320:n automaattinen tunnistus.
Muut muutokset ja parannukset¶
MicroPython päivitetty versioon 1.26.0.
Kameran käynnistys — sensorin kello irrotettiin CSI-tilasta, kameran tunnistus käynnistyksessä on nopeampaa (yleisin kokoonpano kokeillaan ensin) ja OpenMV 3:n OV7725:n oletuskello korjattiin.
Kuvanlaatu — ohjelmiston ISP-gammakorjaus (Alif ja STM32) ja viallisten pikselien korjaus (STM32) ovat oletuksena päällä; PAG7936- ja PS5520-sensorit saivat automaattisen valkotasapainon säätimet.
Suorituskyky —
image.Image.to_ndarray()on kiihdytetty Helium SIMD:llä ja FOMO-jälkikäsittelijä vektoroitiin ulabilla.FLIR Lepton -ajuri kirjoitettiin uudelleen vastaanottamaan kehyksiä asynkronisesti taustalla — kierto/
transposetoimii nyt, piirto skaalaa ylöspäin bilineaarisesti ja nollaus on nopeampaa.Kaappauksen läpäisykyky — i.MX RT1062:n CSI käyttää nyt täyttä DMA-purkua, ja STM32 N6:ssa on laitteisto-GPU
draw_image().
Korjatut virheet¶
Kamera ja sensorit:
Korjattiin RGB565- / GRAYSCALE- / BAYER- / YUV422-tilat STM32-sensoreissa, PAJ6100 OpenMV H7:ssä / H7 Plus:ssa, OpenMV 2:n QVGA RGB565 ja N6:n CSI-mono- / RGB-YUV-kokoonpano; ohjelmiston testikamera nollautuu nyt deterministisesti.
Automaattinen valkotasapaino ei enää värjää kuvaa vihreäksi matalilla tai vaihtelevilla kehysnopeuksilla (250 ms:n liukuva keskiarvo korvaa joka 100. kehyksen näytteen), ja PS5520:n kirkkausvärinä korjattiin.
Kuvankäsittely:
Korjattiin viivanpiirron renderöintihäiriö;
image.Image.flush()huuhtoo nyt sen kuvan JPEG-puskurin, jolle sitä kutsuttiin;Normalizationsoveltaa nyt keskiarvoa/keskihajontaa liukulukutuloihin; kuvan tiedostosta varaaminen korjattiin.
Kameran kaappaus:
Korjattiin vakava kuvan vioittuminen ei-JPEG-siirroissa (kehyskeskeytys otetaan nyt käyttöön vain JPEG-tilassa), JPEG-tila 3:n tuki sekä DMA:n rivikoon ja pienen puskurin lukkiutumiset STM32:ssa; VOSPI / Lepton -synkronointi on luotettavampaa, erityisesti N6:ssa.
Sekalaiset:
omv.board_id()palauttaa oikean UID:n RT1060:ssa;YoloV2ei enää kaadu, kun se luodaan ilman eksplisiittisiä ankkureita.
Laitteisto- ja korttituki¶
OpenMV N6 — STM32N6, jossa on Neural-ART NPU, kolminkertainen puskurointi, SPI LCD/TV -lähtö, Soft-CSI,
tof-moduuli ja mukana toimitettavat ROMFS-mallit.Arduino GIGA — MIPI DSI -näyttölähtö.
Uudet sensorit — PixArt PS5520; FLIR BOSON OpenMV H7 Plus -kortissa; GenX320:n automaattinen tunnistus.
OpenMV Pure Thermal — FLIR Lepton on nyt tavallinen (toissijainen) kamerasensori.
Alif AE3 — ohjelmiston ISP-gammakorjaus,
crc-moduuli ja SPI-korjaukset.
Rikkovat API-muutokset¶
Käyttäjälle näkyvät API-rikkomukset versioiden v4.7.0 ja v4.8.0 välillä. Laajuus: Python-C-moduulit hakemistossa modules/ ja Python-kirjastot hakemistossa scripts/libraries/.
Jokainen muutos on merkitty vaikutuksensa mukaan:
major — useimpia sitä käyttäneitä skriptejä on muokattava.
minor — kapea API; vaikuttaa vain sitä käyttäneisiin skripteihin.
behavior — sama API, eri tulokset; tarkista viritetyt skriptit uudelleen.
tooling — vaikuttaa vain isäntätyökaluihin / lähteestä rakentamiseen.
Muutokset on ryhmitelty vaikutuksen mukaan tässä järjestyksessä — major ensin, sitten minor, behavior ja tooling. Jos haluat vain siirtää koodisi, hyppää lopussa olevaan siirtymistarkistuslistaan, jossa on tiivistetty tehtävälista. Jokainen committihajautus linkittää diffiinsä GitHubissa.
FLIR Lepton siirrettiin pois fir-moduulista (major)¶
FLIR Leptonia ohjataan nyt tavallisena kamerasensorina fir-moduulin sijaan. Lepton-ohjaus poistettiin fir-moduulista: FIR_LEPTON-tyyppi ja radiometric()-, register_vsync_cb()-, register_frame_cb()-, get_frame_available()- ja trigger_ffc()-metodit ovat poissa. Kaappaa Lepton kuten mikä tahansa muu kamera (se näkyy toissijaisena sensorina OpenMV Pure Thermalissa); Pure Thermal -esimerkki kirjoitettiin uudelleen uudelle API:lle. Muut kuin Lepton-fir-sensorit (Grid-EYE, MLX, AMG8833) ovat ennallaan.
buzzer-moduuli poistettu (minor)¶
buzzer-moduuli poistettiin STM32- ja i.MX RT -porteista. Ohjaa summeria sen sijaan machine.PWM:llä; lisättiin PWM:ää käyttävä Pure Thermal -summeriesimerkki.
omv.disable_fb() poistettu (minor)¶
omv.disable_fb()-funktio poistettiin; kehyspuskurin suoratoistoa ohjataan nyt kamera-API:n kautta. Myös siihen nojanneet vanhat RPC-työpöytäskriptit poistettiin.
csi on uusi — sen API:a ei ole vielä lukittu (minor)¶
csi-moduuli esitellään versiossa v4.8.0 ja sen API kehittyi julkaisun aikana: csi.fb() poistettiin, ja csi.CSI.snapshot() (image=...) vaatii nyt muokattavan kuvan ja piirtää/skaalaa kaapatun kehyksen siihen sen sijaan, että tekisi raa’an syväkopion. Uuden moduulin varhaisten käyttöönottajien tulisi testata uudelleen; vanha sensor-API on ennallaan.
image.ImageIO-suoratoistotila ja close() (minor)¶
image.ImageIO — mode-argumentti hyväksyy nyt vain pienaakkoset 'r' / 'w' (isot kirjaimet hylätään päivitetyllä virheilmoituksella), ja avaaminen tilassa 'w' katkaisee/luo tiedoston aina uudelleen sen sijaan, että säilyttäisi olemassa olevan virran. ImageIO.close() on nyt idempotentti (jo suljetun virran sulkeminen ei enää aiheuta virhettä) ja palauttaa None virtaolion sijaan.
BlazeFace- / BlazePalm-paluuarvo (minor)¶
BlazeFace- ja BlazePalm-jälkikäsittelijät (uusia tässä julkaisussa) palauttavat nyt yhden rajauslaatikkolistan koko luokkakohtaisen listan sijaan — kutsujat indeksoivat tuloksen suoraan eivätkä [0]:lla.
Commit: 75e16b573
ML-jälkikäsittelijän takaisinkutsu saa raa’at tensorit (behavior)¶
ml.Model:n predict()-jälkikäsittelytakaisinkutsu saa nyt raa’at (kvantisoidut) lähtötensoriviitteet esimuunnettujen liukuluku-ndarray-objektien sijaan — tämä välttää muistin loppumisen suurissa malleissa. Jos takaisinkutsua ei anneta, liukuluku-ndarray palautetaan edelleen. Mukautettujen takaisinkutsujen on itse purettava tensorien kvantisointi (sisäänrakennetut jälkikäsittelijät tekevät tämän jo).
Commit: 84e6ee650
Kameran kello irrotettu CSI-tilasta (behavior)¶
Sensorin kello on nyt riippumaton CSI-tilasta. set_clock / set_frequency konfiguroi kellon uudelleen vain, kun pyydetty taajuus poikkeaa enemmän kuin toleranssin verran, ja get_clk_frequency ottaa totuusarvon palauttaakseen tarkan (nimellisen sijaan) taajuuden. Oletuskello on 24 MHz OpenMV N6:ssa ja AE3:ssa, joten käynnistyksessä ei tarvita eksplisiittistä set_clock()-kutsua. Skriptien, jotka kytkivät kellon ajoituskriittisiä kaappauksia varten, tulisi tarkistaa oletuksensa uudelleen.
Commitit: 2040a0a00, 09c0052df, 66ade9aea, 7e0a251bc, e6f43f3ca
USB-debug-protokolla ja laiteohjelmistokohteet (tooling)¶
Mikään tästä ei vaikuta MicroPython-skripteihin. Vanhentuneet USBDBG-komennot (SCRIPT_SAVE, TEMPLATE_SAVE, DESCRIPTOR_SAVE, ATTR_READ, ATTR_WRITE, TX_INPUT, SET_TIME) poistettiin, ja vanhempien IDE:iden tukemattomat komennot huuhdotaan nyt sen sijaan, että ne kaataisivat TinyUSB-kortit yhdistettäessä; vanha STM32 UVC -laiteohjelmistokohde poistettiin. Vanhat isäntätyökalut tulisi päivittää; katso lisätietoja laiteohjelmistorepositorion historiasta.
Siirtymistarkistuslista¶
Puhdas siirto versioon v4.8.0 vaatii tyypillisesti seuraavat:
Jos käytit FLIR Leptonia
fir-moduulin kautta, siirry kaappaamaan se kamerasensorina (fir/Lepton-muutos).Korvaa kaikki
buzzer-käyttömachine.PWM:llä (buzzerin poisto).Poista
omv.disable_fb()-kutsut (omv.disable_fb()-poisto).image.ImageIO:n osalta: käytä pienaakkosia'r'/'w'ja varaudu siihen, että'w'katkaisee tiedoston (ImageIO-muutos).Mukautettujen ML-jälkikäsittelytakaisinkutsujen osalta: pura raakojen tensoriviitteiden kvantisointi itse tai nojaa oletusarvoiseen liukulukupolkuun (takaisinkutsumuutos).
Tarkista uudelleen jokainen skripti, joka ohjasi sensorin kelloa ajoituskriittisiä kaappauksia varten (kellomuutos).