v4.5.6¶
v4.5.6 je veliko izdanje za strojno učenje. C modul TensorFlow tf zamijenjen je novim paketom ml neovisnim o pogonu, koji se oslanja na TensorFlow Lite Micro (TFLM), pretvorba slike u tenzor premještena je u image.to_ndarray(), a ploče s dvije jezgre prešle su na Open-AMP. Postoji nekoliko promjena koje narušavaju kompatibilnost — pročitajte ih u nastavku prije nadogradnje ML skripti.
Istaknuto¶
Novi paket
ml— stari modultfprepisan je u paketmlneovisan o pogonu (ml.Model,ml.preprocessing,ml.utils,ml.apps);tfostaje kao alias.TFLM pozadina — zastarjeli
libtfzamijenjen je s TensorFlow Lite Micro temeljenim na izvornom kodu: ~20% brže zaključivanje i manje biblioteke.Open-AMP dvije jezgre — GIGA i Portenta H7 sada koriste Open-AMP/RPMsg za međujezgrenu komunikaciju M7/M4 (stari CM4 mehanizam je uklonjen).
Ugrađeni Bluetooth — CYW43 Bluetooth ugrađeni program (firmware) omogućen na Nicla Vision, Portenta H7 i GIGA.
MicroPython 1.23.0, ulab 6.5.2 (s podrškom za 4-D ndarray).
Narušava kompatibilnost: ML API se znatno promijenio, a Haar kaskade su prema zadanim postavkama onemogućene na većini ploča — pogledajte promjene koje narušavaju kompatibilnost.
Nove značajke¶
Paket
ml—ml.Modelspredict()(roi,callback, lista više ulaza), atributi oblika/dtype/skale/nulte točke po tenzoru,ml.preprocessing.Normalization,ml.utils(NMS) iml.apps(prepoznavač ključnih riječiMicroSpeechu čistom Pythonu slisten()i neblokirajućim streamanjemtimeout=-1, uzdraw_predictions()).Sustav ugrađenih modela — modeli navedeni u
models/index.txtuvjetno se ugrađuju ovisno o ploči (FOMO na svim ML pločama, audio modeli na pločama s mikrofonima).image.to_ndarray(dtype, buffer=...)— pretvara sliku u ulab ndarray (opcionalno na licu mjesta).Image()iz sirovih polja — novi ključni argumentishape=,strides=,scale=grade slike u sivim tonovima/RGB565 iz sirovih lista piksela.Zaglađeni
draw_circle().Modul
sslugrađen u ugrađeni program (firmware) na GIGA, Nicla Vision, Portenta H7, Nano RP2040 Connect, OpenMV 4/4P/PRO/PT, RT1060 i Pico.Audio —
audio.init()dobio je ključnu riječsamples=(PDM uzorci po kanalu);gain_dbsada se primjenjuje na DFSDM mikrofonima (npr. Nicla Vision).Protokol za otklanjanje pogrešaka — nova naredba
GET_STATEvraća zastavice run/text/JPEG, geometriju sličice i tekst u jednom paketu, smanjujući broj komunikacijskih krugova s domaćinom.Open-AMP vuart primjer za međujezgrenu komunikaciju.
Ostale promjene i poboljšanja¶
MicroPython ažuriran na 1.23.0; ulab na 6.5.2 s podrškom za 4-D ndarray.
Brže zaključivanje — ML pozadina održava trajno stanje/memoriju kroz pozive (~20% brže, podržava modele tipa LSTM).
get_similarity()ponovno je implementiran nadraw_imagepozadini (šira podrška za formate/operacije).morph()i obitelj filteramean()prešli su na obradu ključnih argumenata;mask=sada prihvaća promjenjivu sliku.Raspored memorije preuređen — DMA regije poravnate na potenciju broja 2, GC blokovi koje je moguće preraspoređivati, više hrpa; manja rana fragmentacija hrpe na pločama s malo RAM-a; RT1060 dobiva dodatnu GC hrpu.
WiFi (CYW43) se sada deinicijalizira pri mekom resetu; SPI-TV prikaz iz predmemorije ispire samo regiju međuspremnika slike radi glađih ažuriranja.
Ispravci pogrešaka¶
Kamera i senzori:
Ispravljena slučajna invalidacija CPU predmemorije na putu međuspremnik slike/senzor na STM32 i i.MX RT, koja je mogla oštetiti podatke slike.
Ispravljena MLX90640/MLX90641 termalna I2C čitanja na i.MX RT pločama (veliki prijenosi sada se dijele na dijelove).
Strojno učenje:
Ispravljeno rukovanje
load_to_fbuml.Model, određivanje veličine ulaznogbytearray, provjerendimza ndarray i validacija formata/oblika slike zaNormalization.
Slika / sustav:
Dodana konstanta nagovještaja za crtanje
image.BLACK_BACKGROUNDkoja je nedostajala te provjera ispravnosti duljine međuspremnika slike/tenzora.Ispravljeni FIR i audio GC korijenski pokazivači koji su mogli dopustiti sakupljaču da oslobodi međuspremnike koji su u upotrebi.
Primjer Servo Shield sada koristi
SoftI2Ctako da radi na OpenMV RT pločama.
Hardver i podrška za ploče¶
Arduino GIGA — podrška za senzore HM01B0 / HM0360; Open-AMP dvije jezgre.
Bluetooth — CYW43 BT ugrađeni program (firmware) na Nicla Vision, Portenta H7 i GIGA.
Portenta H7 — Open-AMP M7/M4 RPMsg.
OpenMV RT1060 — dodatni blokovi GC hrpe (više Python memorije).
Promjene API-ja koje narušavaju kompatibilnost¶
Korisniku vidljivi prekidi API-ja između v4.5.5 i v4.5.6. Opseg: Python C-moduli u modules/ i Python biblioteke u scripts/libraries/.
Svaka promjena označena je svojim utjecajem:
velik — većina skripti koje su ga koristile treba izmjene.
malen — uzak API; utječe samo na skripte koje su ga koristile.
ponašanje — isti API, drugačiji rezultati; ponovno provjerite ugođene skripte.
alati — utječe na mehanizme za dvije jezgre / ploče, ne na Python API.
Promjene su grupirane po utjecaju tim redoslijedom. Ako samo želite prenijeti svoj kod, skočite na popis za migraciju na kraju. Svaki hash commita povezuje se sa svojim diffom na GitHubu.
Modul tf zamijenjen paketom ml (velik)¶
C modul TensorFlow tf prepisan je u paket ml neovisan o pogonu (tf se zadržava kao alias za kompatibilnost unatrag, ali novi kod treba koristiti ml). Funkcije na razini modula tf.load, tf.load_builtin_model te metode detect()/segment()/klasifikacije su uklonjene — konstruirajte ml.Model i pozovite predict(). ml.Model(path) sada vraća samo model (ne torku (labels, model)); oznake su atribut model.labels. predict() sada vraća ulab ndarrayove (ne torke s float vrijednostima), podržava modele s više ulaza (proslijedite listu), a NMS je premješten u ml.utils; normalizacija ulaza premještena je u ml.preprocessing.Normalization. Stari ml.py sada je ml.apps.
Commiti: c7228cbb4, 6c212409c, 3e37f46db, 9a186f4e2, 70b89f474, 3f8491cb0, 4506682c2, 8b38f3837
image.unpack() uklonjen — koristite to_ndarray() (velik)¶
Kratkotrajni image.unpack() je uklonjen; umjesto toga sliku pretvorite u tenzor s image.to_ndarray(dtype, buffer=...) te primijenite normalizaciju skale/srednje vrijednosti/standardne devijacije s ml.preprocessing.Normalization umjesto stare ugrađene putanje skaliranja slike.
Argument scale za sirova polja u Image() (malen)¶
Pri konstruiranju Image iz sirovog polja piksela, argument scale sada uzima raspon (min, max) umjesto (scale, add).
Commit: 7b79fb4c7
Haar kaskade prema zadanim postavkama onemogućene na većini ploča (ponašanje)¶
Radi oslobađanja flash prostora, detekcija lica putem Haar kaskada (find_features() / image.HaarCascade()) sada je prema zadanim postavkama onemogućena na Arduino GIGA, Nicla Vision, Portenta H7, OpenMV 3, OpenMV 4 / 4 Plus / PRO i OpenMV Pure Thermal. Skripte koje koriste Haar kaskade na tim pločama moraju ponovno izgraditi ugrađeni program (firmware) s omogućenom tom značajkom.
Commit: 6ce27c910
Prekidanje skripte i skaliranje tenzora (ponašanje)¶
USB program za otklanjanje pogrešaka sada prekida pokrenutu skriptu putem MicroPythonove značajke prekida VM-a umjesto prisilnim skokom PendSV (čišće, ali se točka prekida razlikuje). Skaliranje ulaza SCALE_S128_127 ispravljeno je tako da mapira 0–255 na −128–127 bez pogrešnog pojačanja — modeli koji se oslanjaju na staro (netočno) skaliranje davat će drugačije rezultate.
CM4 koprocesor zamijenjen s Open-AMP (alati)¶
Zastarjeli mehanizam ugrađenog programa (firmware) CM4 koprocesora na GIGA / Nicla Vision / Portenta H7 uklonjen je i zamijenjen s Open-AMP/RPMsg. Kod za dvije jezgre mora prijeći na Open-AMP model (priložen je vuart primjer).
Popis za migraciju¶
Za čist prijenos na v4.5.6 tipičan posao je:
Prenesite ML kod na
ml: konstruirajteml.Model(path), pozovitepredict(), čitajtemodel.labels, očekujtendarrayizlaze te premjestite normalizaciju uml.preprocessing.Normalizationi NMS uml.utils(promjena ml paketa).Zamijenite
image.unpack()simage.to_ndarray()(uklanjanje unpack).Ažurirajte svaki argument
scaleza sirova polja uImage()na raspon(min, max)(promjena Image skale).Ako koristite Haar kaskade na pogođenoj ploči, ponovno izgradite s omogućenom značajkom (promjena Haar kaskada).
Ponovno validirajte modele koji su ovisili o
SCALE_S128_127(promjena skaliranja).Premjestite kod za dvije jezgre na Open-AMP (promjena CM4).