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. Luokkapohjainen csi.CSI-API, joka tukee useita samanaikaisia kameroita ja esitellään vanhan sensor-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 ja fir-moduulin Lepton-ohjaus poistettiin (Lepton on nyt tavallinen kamera). Katso fir/Lepton-muutos ja buzzerin poisto.

Uudet ominaisuudet

  • Uusi csi -kameramoduuli — luokkapohjainen csi.CSI-olio, joka tukee useita samanaikaisia kameroita (N6:ssa enintään kolme), estotonta tilannekuvaa, mukautettuja (w, h)-kehyskokoja sekä informatiivista print()- / repr-tulostetta. Se esitellään vanhan sensor-moduulin rinnalla (ei suora korvaaja).

  • crccrc.crc16() ja crc.crc32(), laitteistokiihdytettyjä ohjelmistovaihtoehdon kanssa, OpenMV N6:ssa ja AE3:ssa.

  • image.Image.draw_image() sai transform=-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-tapahtumatilacsi.IOCTL_GENX320_SET_MODE arvoilla csi.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.Model sai postprocess=-avainsanan (jälkikäsittelijä suoritetaan nyt automaattisesti predict()-kutsun sisällä myös ilman takaisinkutsua); ml.postprocessing järjestettiin uudelleen valmistajakohtaisiin alipaketteihin — ml.postprocessing.ultralytics (YoloV5, YoloV8), ml.postprocessing.darknet (YoloV2, YoloLC), ml.postprocessing.edgeimpulse (Fomo) ja ml.postprocessing.mediapipe (BlazeFace, BlazePalm, HandLandmarks, FaceLandmarks) — vanhat snake_case-nimet säilyvät aliaksina; ml.utils.draw_keypoints() ja ml.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 sai hmirror- / vflip-avainsanat.

  • Laitteen sisäinen profilointi — SysTick + Armv8.1-M PMU -sykli-/tapahtumalaskurit funktiotason instrumentoinnilla, luettavissa debug-linkin kautta (pyopenmv sai 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.

  • Suorituskykyimage.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/transpose toimii 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; Normalization soveltaa 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; YoloV2 ei 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.

Commitit: bacfb7aeb, 117710566, 592a22902, 1a614202e

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.

Commitit: ccb947924, 444120f2d

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.

Commitit: 84c3db58a, 6fe99051c

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.

Commitit: 0bc0385eb, 8cd7a309f

image.ImageIO-suoratoistotila ja close() (minor)

image.ImageIOmode-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.

Commitit: 715c4cbba, 21ceec422

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.

Commitit: 90bd11e93, 657c9a632, 35182f035

Siirtymistarkistuslista

Puhdas siirto versioon v4.8.0 vaatii tyypillisesti seuraavat:

  1. Jos käytit FLIR Leptonia fir-moduulin kautta, siirry kaappaamaan se kamerasensorina (fir/Lepton-muutos).

  2. Korvaa kaikki buzzer-käyttö machine.PWM:llä (buzzerin poisto).

  3. Poista omv.disable_fb()-kutsut (omv.disable_fb()-poisto).

  4. image.ImageIO:n osalta: käytä pienaakkosia 'r'/'w' ja varaudu siihen, että 'w' katkaisee tiedoston (ImageIO-muutos).

  5. Mukautettujen ML-jälkikäsittelytakaisinkutsujen osalta: pura raakojen tensoriviitteiden kvantisointi itse tai nojaa oletusarvoiseen liukulukupolkuun (takaisinkutsumuutos).

  6. Tarkista uudelleen jokainen skripti, joka ohjasi sensorin kelloa ajoituskriittisiä kaappauksia varten (kellomuutos).