v4.5.6¶
v4.5.6 on suuri koneoppimisjulkaisu. TensorFlow tf -C-moduuli korvattiin uudella, moottoririippumattomalla ml -paketilla, jonka taustalla toimii TensorFlow Lite Micro (TFLM), kuvan→tensorin muunnos siirtyi funktioon image.to_ndarray() ja kaksiytimiset kortit siirtyivät Open-AMP:iin. Mukana on useita rikkovia muutoksia — lue ne alta ennen kuin päivität ML-skriptisi.
Kohokohdat¶
Uusi
ml-paketti — vanhatf-moduuli kirjoitettiin uudelleen moottoririippumattomaksiml-paketiksi (ml.Model,ml.preprocessing,ml.utils,ml.apps);tfsäilyy aliaksena.TFLM-taustajärjestelmä — vanhentunut
libtfkorvattiin upstream-pohjaisella TensorFlow Lite Microlla: noin 20 % nopeampi päättely ja pienemmät kirjastot.Open-AMP kaksiydin — GIGA ja Portenta H7 käyttävät nyt Open-AMP/RPMsg:tä M7/M4-ydinten väliseen viestintään (vanha CM4-mekanismi poistettiin).
Sisäänrakennettu Bluetooth — CYW43-Bluetooth-laiteohjelmisto otettiin käyttöön Nicla Visionissa, Portenta H7:ssä ja GIGA:ssa.
MicroPython 1.23.0, ulab 6.5.2 (4-ulotteisten ndarray-tukien kanssa).
Rikkova: ML-API muuttui huomattavasti ja Haar-kaskadit ovat oletuksena poissa käytöstä useimmilla korteilla — katso rikkovat muutokset.
Uudet ominaisuudet¶
ml-paketti —ml.Model, jossapredict()(roi,callback, moni-syötteen lista), tensorikohtaiset shape/dtype/scale/zero-point-attribuutit,ml.preprocessing.Normalization,ml.utils(NMS) jaml.apps(puhdas-PythonMicroSpeech-avainsanatunnistin, jossalisten()ja ei-estävätimeout=-1-suoratoisto, sekädraw_predictions()).Sisäänrakennettu mallijärjestelmä —
models/index.txt-tiedostossa luetellut mallit upotetaan ehdollisesti korttikohtaisesti (FOMO kaikilla ML-korteilla, äänimallit korteilla, joissa on mikrofoni).image.to_ndarray(dtype, buffer=...)— muuntaa kuvan ulab-ndarrayksi (valinnaisesti paikallaan).Image()raakatauluista — uudetshape=-,strides=- jascale=-avainsana-argumentit rakentavat harmaasävy-/RGB565-kuvia raakapikselilistoista.Antialiasoitu
draw_circle().ssl-moduuli jäädytetty laiteohjelmistoon korteilla GIGA, Nicla Vision, Portenta H7, Nano RP2040 Connect, OpenMV 4/4P/PRO/PT, RT1060 ja Pico.Audio —
audio.init()saisamples=-avainsanan (PDM-näytteitä kanavaa kohden);gain_dbtoimii nyt DFSDM-mikrofoneilla (esim. Nicla Vision).Debug-protokolla — uusi
GET_STATE-komento palauttaa run/text/JPEG-liput, kehyksen geometrian ja tekstin yhdessä paketissa, vähentäen isäntään päin tehtäviä edestakaisia kyselyitä.Open-AMP vuart -esimerkki ydinten väliseen viestintään.
Muut muutokset ja parannukset¶
MicroPython päivitetty versioon 1.23.0; ulab versioon 6.5.2, joka tukee 4-ulotteisia ndarray-rakenteita.
Nopeampi päättely — ML-taustajärjestelmä säilyttää pysyvän tilan/muistin kutsujen välillä (~20 % nopeampi, tukee LSTM-tyyppisiä malleja).
get_similarity()toteutettiin uudelleendraw_image-taustajärjestelmän päälle (laajempi muoto-/operaatiotuki).morph()jamean()-suodatinperhe siirtyivät avainsana-argumenttien jäsentämiseen;mask=hyväksyy nyt muokattavissa olevan kuvan.Muistirakenne uudistettu — DMA-alueet kohdistettu kahden potenssiin, uudelleenjärjesteltävät GC-lohkot, useita kekoja; vähemmän varhaista keon pirstoutumista vähämuistisilla korteilla; RT1060 saa lisää GC-kekoa.
WiFi (CYW43) alustetaan nyt pois pehmeässä uudelleenkäynnistyksessä; SPI-TV-näyttö tyhjentää välimuistista vain kehyspuskurin alueen sulavampien päivitysten saamiseksi.
Korjatut viat¶
Kamera ja sensorit:
Korjattu tahaton CPU-välimuistin mitätöinti kehyspuskuri-/sensoripolulla STM32:lla ja i.MX RT:llä, mikä saattoi vioittaa kuvadataa.
Korjattu MLX90640/MLX90641-lämpö-I2C-luvut i.MX RT -korteilla (suuret siirrot pilkotaan nyt osiin).
Koneoppiminen:
Korjattu
ml.Modelload_to_fb-käsittely, syötteenbytearray-koon määritys, ndarrayndim-tarkistukset jaNormalization-kuvamuodon/-muodon validointi.
Kuva / järjestelmä:
Lisätty puuttuva
image.BLACK_BACKGROUND-piirtovihjevakio ja kuva-/tensoripuskurin pituuden tarkistus.Korjattu FIR- ja audio-GC-juuriosoittimet, jotka saattoivat antaa kerääjän vapauttaa käytössä olevia puskureita.
Servo Shield -esimerkki käyttää nyt
SoftI2C-luokkaa, joten se toimii OpenMV RT -korteilla.
Laitteisto- ja korttituki¶
Arduino GIGA — HM01B0 / HM0360 -sensorituki; Open-AMP kaksiydin.
Bluetooth — CYW43 BT -laiteohjelmisto korteilla Nicla Vision, Portenta H7 ja GIGA.
Portenta H7 — Open-AMP M7/M4 RPMsg.
OpenMV RT1060 — lisää GC-kekolohkoja (enemmän Python-muistia).
Rikkovat API-muutokset¶
Käyttäjälle näkyvät API-rikkomukset versioiden v4.5.5 ja v4.5.6 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 tarvitsevat muokkauksia.
minor — kapea API; vaikuttaa vain sitä käyttäneisiin skripteihin.
behavior — sama API, eri tulokset; tarkista viritetyt skriptit uudelleen.
tooling — vaikuttaa kaksiydin-/korttimekanismeihin, ei Python-API:in.
Muutokset on ryhmitelty vaikutuksen mukaan tässä järjestyksessä. Jos haluat vain siirtää koodisi, hyppää lopussa olevaan siirtotarkistuslistaan. Jokainen commit-hash linkittää diffiinsä GitHubissa.
tf -moduuli korvattu ml -paketilla (major)¶
TensorFlow tf -C-moduuli kirjoitettiin uudelleen moottoririippumattomaksi ml -paketiksi (tf säilytetään taaksepäin yhteensopivana aliaksena, mutta uuden koodin tulisi käyttää ml:ää). Moduulitason funktiot tf.load, tf.load_builtin_model sekä detect()/segment()/luokittelumetodit poistettiin — rakenna ml.Model ja kutsu predict(). ml.Model(path) palauttaa nyt pelkän mallin (ei (labels, model) -tuplea); luokkanimet ovat model.labels -attribuutti. predict() palauttaa nyt ulab ndarray-rakenteita (ei float-tupleja), tukee moni-syötteisiä malleja (anna lista), ja NMS siirtyi moduuliin ml.utils; syötteen normalisointi siirtyi luokkaan ml.preprocessing.Normalization. Vanha ml.py on nyt ml.apps.
Commitit: c7228cbb4, 6c212409c, 3e37f46db, 9a186f4e2, 70b89f474, 3f8491cb0, 4506682c2, 8b38f3837
image.unpack() poistettu — käytä to_ndarray() (major)¶
Lyhytaikainen image.unpack() poistettiin; muunna kuva tensoriksi funktiolla image.to_ndarray(dtype, buffer=...) sen sijaan, ja sovella scale/mean/stdev-normalisointia luokalla ml.preprocessing.Normalization vanhan sisäänrakennetun kuvanskaalauspolun sijaan.
Image() raakataulun scale -argumentti (minor)¶
Kun Image rakennetaan raakapikselitaulusta, scale -argumentti ottaa nyt (min, max) -alueen (scale, add) -arvojen sijaan.
Commit: 7b79fb4c7
Haar-kaskadit oletuksena poissa käytöstä useimmilla korteilla (behavior)¶
Flash-muistitilan vapauttamiseksi Haar-kaskadipohjainen kasvojentunnistus (find_features() / image.HaarCascade()) on nyt oletuksena poissa käytöstä korteilla Arduino GIGA, Nicla Vision, Portenta H7, OpenMV 3, OpenMV 4 / 4 Plus / PRO ja OpenMV Pure Thermal. Näillä korteilla Haar-kaskadeja käyttävien skriptien on käännettävä laiteohjelmisto uudelleen ominaisuus käytössä.
Commit: 6ce27c910
Skriptin keskeytys ja tensorin skaalaus (behavior)¶
USB-debuggeri keskeyttää nyt käynnissä olevan skriptin MicroPythonin VM-abort-ominaisuudella pakotetun PendSV-hypyn sijaan (siistimpää, mutta keskeytyskohta on erilainen). SCALE_S128_127 -syöteskaalaus korjattiin kuvaamaan 0–255 alueelle −128–127 ilman virheellistä vahvistusta — vanhaan (virheelliseen) skaalaukseen nojaavat mallit tuottavat eri tuloksia.
CM4-apuprosessori korvattu Open-AMP:lla (tooling)¶
Vanhentunut CM4-apuprosessorin laiteohjelmistomekanismi korteilla GIGA / Nicla Vision / Portenta H7 poistettiin ja korvattiin Open-AMP/RPMsg:llä. Kaksiydinkoodi on siirrettävä Open-AMP-malliin (vuart-esimerkki on tarjolla).
Siirtotarkistuslista¶
Siisti siirto versioon v4.5.6 vaatii tyypillisesti seuraavan työn:
Siirrä ML-koodi pakettiin
ml: rakennaml.Model(path), kutsupredict(), luemodel.labels, odotandarray-tulosteita ja siirrä normalisointi luokkaanml.preprocessing.Normalizationja NMS moduuliinml.utils(ml-paketin muutos).Korvaa
image.unpack()funktiollaimage.to_ndarray()(unpack-poisto).Päivitä mahdolliset
Image()raakataulunscale-argumentit(min, max)-alueeksi (Image-skaalauksen muutos).Jos käytät Haar-kaskadeja vaikutuksen kohteena olevalla kortilla, käännä uudelleen ominaisuus käytössä (Haar-kaskadin muutos).
Validoi uudelleen mallit, jotka riippuivat
SCALE_S128_127-arvosta (skaalausmuutos).Siirrä kaksiydinkoodi Open-AMP:iin (CM4-muutos).