v3.9.0¶
v3.9.0 on suuri julkaisu. Se lisää nRF-portin ja Arduino Nano 33 BLE Sense -tuen (kamera, PDM audio -moduuli, ulab, jäädytetyt sensoriohjaimet), tuo FLIR Lepton - sekä MLX90641 / MLX90621 -lämpösensorit ja perusteellisesti uudistetun fir -moduulin, OV5640:n autotarkennus-ioctlit ja uuden image.ImageIO -suoratoistotyypin. Vanha CMSIS-NN nn -moduuli sekä vanhat ImageReader / ImageWriter -luokat poistettiin — lue alla olevat rikkovat muutokset.
Kohokohdat¶
Arduino Nano 33 BLE Sense — uusi nRF52840-portti kameralla, PDM
audio-moduulilla,ulab-tuella ja jäädytetyillä sensoriohjaimilla.Lämpökuvaus — FLIR Lepton-, MLX90641- ja MLX90621-tuki uudistetulla
fir-moduulilla (paletit, peilaus, skaalaus, radiometria, FFC).OV5640-autotarkennus — uudet
sensor.IOCTL_*_AUTO_FOCUS-ioctlit.image.ImageIO— yhtenäinen kuvavirtatyyppi (muisti tai tiedosto; read/write/seek/size/close), joka korvaaImageReader/ImageWriter.Rikkova: CMSIS-NN
nn-moduuli sekäimage.ImageReader/image.ImageWriterpoistettiin, jafind_lines()/fir-käyttäytyminen muuttui — katso rikkovat muutokset.
Uudet ominaisuudet¶
nRF-portti / Arduino Nano 33 BLE Sense — uusi nRF52840-portti ja korttituki, uudella
audio-moduulilla (audio.init(),audio.start_streaming(),audio.stop_streaming()),ulab-tuella ja jäädytetyilläapds9960/lps22h/lsm9ds1/hts221-sensoriohjaimilla.image.ImageIO— uusi kuvavirtatyyppi, joka tukee sekä muisti- että tiedostovirtoja metodeillaread()/write()/seek()/size()/close(), sekä ImageIO-luku/kirjoitus/muisti-esimerkit.FLIR Lepton — lisättiin
FIR_LEPTON-tuki funktioillafir.radiometric(),fir.trigger_ffc()jafir.register_vsync_cb().Lämpösensorit — lisättiin MLX90641 (
FIR_MLX90641) - ja MLX90621-termopilituki (viralliset Melexis-ohjaimet).fir-paletit / -orientaatio — lisättiinfir.PALETTE_RAINBOW/PALETTE_IRONBOW/GRAYSCALE/RGB565-vakiot, jafir.read_ir()hyväksyy nythmirror/vflip/transpose.OV5640-autotarkennus — lisättiin
sensor.IOCTL_TRIGGER_AUTO_FOCUS/IOCTL_PAUSE_AUTO_FOCUS/IOCTL_RESET_AUTO_FOCUS/IOCTL_WAIT_ON_AUTO_FOCUS(OpenMV 2/3/4/4 Plus/PT/Portenta).Arduino-esimerkit järjestettiin uudelleen korttikohtaisiin hakemistoihin.
Muut muutokset ja parannukset¶
Siirryttiin pakattuihin MicroPython-virheviesteihin (lyhyemmät poikkeusmerkkijonot);
fir.init()-funktiontype-argumentti tunnistaa nyt automaattisesti I2C-väyläskannauksella, kun se jätetään pois;xalloc-poikkeus ilmoittaa nyt pyydettyjen tavujen määrän; UART 8 otettiin käyttöön Portentassa; FIR-esimerkit yhdistettiin tiedostoiksithermal_camera.py/thermal_overlay.py/thermal_overlay_lcd.py. Flash-muistiin mahtumiseksiimage.get_similarity()ja valikoiva haku poistettiin käytöstä OpenMV 4 -käännöksessä, ja kuvakirjasto voidaan nyt rakentaa ilman tiedostojärjestelmää (tiedostojärjestelmättömiä kortteja varten).
Korjaukset¶
Kamera ja sensorit:
Korjattiin OV5640:n PCLK-laskenta, lisättiin puuttuvat I2C IRQ -käsittelijät (korjaten I2C-siirtojen jumiutumiset), uudistettiin cambus I2C -luku/kirjoitus luotettavuuden vuoksi, tehtiin Lepton-I2C-väylä valittavaksi, siirrettiin cambus-väylän palautusnastat korttikohtaiseen määritykseen, uusittiin cambus-skannaus kerran ennen epäonnistumista ja saatiin OpenMV PT (Lepton + kamera jaetulla I2C:llä) toimimaan.
Lämpökuvaus:
Korjattiin maksimiarvon laskenta
fir-funktioissaget_ir()/draw_ir()jaimage.get_similarity()(FLT_MIN→-FLT_MAX), AMG8833:n 12→16-bittinen käsittely sekä MLX90621:n tarkkuus (virallinen Melexis-ohjain).
Näyttö, ääni ja järjestelmä:
Siirrettiin STM32 SPI LCD -siirrot HAL SPI -takaisinkutsuihin (näytön luotettavuus), korjattiin Nano 33
audio.init()(HF-oskillaattori + PDM-suhde, jotta mikrofoni toimii), H7:n ajastintila uuden HAL:n kanssa, nRF:ngc_collectja varhainen kortin alustus/deinitialisointi, ja lopetettiin virheellisen viestin ”uh oh, no preference for overlapping detection” tulostaminenfind_apriltags()/find_rects()-kutsujen aikana.
Laitteisto- ja korttituki¶
Arduino Nano 33 BLE Sense — uusi nRF52840-kortti (kamera, PDM-ääni,
ulab, jäädytetyt sensoriohjaimet).FLIR Lepton-, MLX90641- ja MLX90621-lämpösensorit.
OV5640-autotarkennus — OpenMV 2/3/4/4 Plus/PT/Portenta.
Portenta — UART 8 otettiin käyttöön.
Rikkovat API-muutokset¶
Käyttäjälle näkyvät API-muutokset versioiden v3.8.0 ja v3.9.0 välillä. Laajuus: Python C -moduulit hakemistossa modules/ ja Python-kirjastot hakemistossa scripts/libraries/.
Jokainen muutos on merkitty vaikutuksensa mukaan:
merkittävä — koskee useimpia ominaisuutta käyttäneitä skriptejä; sinun on siirrettävä koodia.
vähäinen — kapea API; koskee vain sitä käyttäneitä skriptejä.
käyttäytyminen — sama API, eri tulokset; tarkista hienosäädetyt skriptit uudelleen.
Muutokset on ryhmitelty vaikutuksen mukaan tässä järjestyksessä. Jos haluat vain siirtää koodisi, hyppää lopussa olevaan siirtymistarkistuslistaan. Jokainen commit-tiiviste linkittää diffiinsä GitHubissa.
CMSIS-NN nn -moduuli poistettiin (merkittävä)¶
CMSIS-NN nn -moduuli poistettiin, mukaan lukien nn.load(), net.forward(), net.search() ja nn_class -apuluokka. Mallien päättely siirtyy TensorFlow Lite (tf) -moduuliin. Skriptit, jotka latasivat .network-malleja nn-moduulilla, on siirrettävä tf-moduuliin TensorFlow Lite -mallilla.
Commitit: fbc767b36
ImageReader / ImageWriter korvattiin tyypillä image.ImageIO (merkittävä)¶
image.ImageReader / image.ImageWriter ja niiden next_frame() / add_frame() -metodit poistettiin ja korvattiin uudella image.ImageIO -tyypillä, joka tukee sekä muisti- että tiedostovirtoja metodeilla read() / write() / seek() / size() / close(). Vanhoja reader-/writer-luokkia käyttävä koodi on siirrettävä tyyppiin image.ImageIO (katso uudelleennimetyt imageio_read.py / imageio_write.py -esimerkit).
Commitit: 783a78754
fir.draw_ir() scale-avainsana poistettiin (vähäinen)¶
fir.draw_ir() kirjoitettiin uudelleen uuden kuvanpiirtoputken päälle. scale=(min, max) -avainsana poistettiin, ja lisättiin hint, x_scale, y_scale, roi sekä positionaaliset x/y-siirtymäargumentit. Skriptien, jotka välittivät scale=(min, max) funktiolle fir.draw_ir(), on poistettava se ja käytettävä uusia argumentteja.
Commitit: 0a29103b1
find_lines() -approksimaatio (käyttäytyminen)¶
image.find_lines() approksimoi nyt gradientin magnitudin muodossa (abs(gx) + abs(gy)) / 2 ja ohittaa magnitudit alle 126. Tämä on nopeampaa mutta muuttaa tunnistettujen viivojen joukkoa ja akkumulaattoriarvoja, joten tarkista ja hienosäädä uudelleen threshold / theta_margin / rho_margin.
Commitit: 902ae3c98
fir.snapshot() uudistettiin (käyttäytyminen)¶
fir.snapshot() uudistettiin merkittävästi uudella avainsana-API:lla (hmirror, vflip, transpose, x_scale, y_scale, x_size, y_size, scale, rgb_channel, alpha, color_palette, hint, pixformat, copy_to_fb), ja mukana toimitetut esimerkit kirjoitettiin uudelleen. Aiempi positionaalinen / pelkkä pixformat -käyttäytyminen muuttui; siirrä FIR-skriptit uuteen avainsanamuotoon (katso päivitetyt thermopile-shield-esimerkit).
Commitit: 53f2248b8
fir.init() heittää poikkeuksen epäonnistuessa (käyttäytyminen)¶
fir.init() heittää nyt poikkeuksen (ja deinitialisoi siististi), kun lämpösensoria ei havaita, hiljaisen jatkamisen sijaan. Kääri fir.init() rakenteeseen try / except (tai varmista sensorin kytkentä) siellä, missä aiemmin luotit siihen, ettei se heitä poikkeusta.
Commitit: 4b2f972f3
Siirtymistarkistuslista¶
Puhdas siirtyminen versioon v3.9.0 tarkoittaa tyypillisesti:
Siirrä CMSIS-NN
nn-mallien päättely TensorFlow Litetf-moduuliin (nn:n poisto).Korvaa
image.ImageReader/image.ImageWritertyypilläimage.ImageIO(ImageIO-muutos).Poista
scale=(min, max)-avainsana funktiostafir.draw_ir()ja käytä uusia argumentteja (draw_ir-muutos).Hienosäädä
find_lines()-parametrit uudelleen approksimoitua magnitudimittaria vasten (find_lines-muutos).Siirrä FIR-skriptit uuteen
fir.snapshot()-avainsana-API:in (fir.snapshot-muutos) ja käsittelefir.init()-poikkeus puuttuvasta sensorista (fir.init-muutos).
Kaikki muut skriptit toimivat muuttumattomina.