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 modul tf prepisan je u paket ml neovisan o pogonu (ml.Model, ml.preprocessing, ml.utils, ml.apps); tf ostaje kao alias.

  • TFLM pozadina — zastarjeli libtf zamijenjen 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 mlml.Model s predict() (roi, callback, lista više ulaza), atributi oblika/dtype/skale/nulte točke po tenzoru, ml.preprocessing.Normalization, ml.utils (NMS) i ml.apps (prepoznavač ključnih riječi MicroSpeech u čistom Pythonu s listen() i neblokirajućim streamanjem timeout=-1, uz draw_predictions()).

  • Sustav ugrađenih modela — modeli navedeni u models/index.txt uvjetno 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 argumenti shape=, strides=, scale= grade slike u sivim tonovima/RGB565 iz sirovih lista piksela.

  • Zaglađeni draw_circle().

  • Modul ssl ugrađen u ugrađeni program (firmware) na GIGA, Nicla Vision, Portenta H7, Nano RP2040 Connect, OpenMV 4/4P/PRO/PT, RT1060 i Pico.

  • Audioaudio.init() dobio je ključnu riječ samples= (PDM uzorci po kanalu); gain_db sada se primjenjuje na DFSDM mikrofonima (npr. Nicla Vision).

  • Protokol za otklanjanje pogrešaka — nova naredba GET_STATE vrać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 na draw_image pozadini (šira podrška za formate/operacije).

  • morph() i obitelj filtera mean() 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_fb u ml.Model, određivanje veličine ulaznog bytearray, provjere ndim za ndarray i validacija formata/oblika slike za Normalization.

Slika / sustav:

  • Dodana konstanta nagovještaja za crtanje image.BLACK_BACKGROUND koja 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 SoftI2C tako 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.

Commiti: 9848eed12, de0d46fa6

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.

Commiti: e758a0f95, a4d97c572

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).

Commiti: 3cc57fea4, 93f2d4c41

Popis za migraciju

Za čist prijenos na v4.5.6 tipičan posao je:

  1. Prenesite ML kod na ml: konstruirajte ml.Model(path), pozovite predict(), čitajte model.labels, očekujte ndarray izlaze te premjestite normalizaciju u ml.preprocessing.Normalization i NMS u ml.utils (promjena ml paketa).

  2. Zamijenite image.unpack() s image.to_ndarray() (uklanjanje unpack).

  3. Ažurirajte svaki argument scale za sirova polja u Image() na raspon (min, max) (promjena Image skale).

  4. Ako koristite Haar kaskade na pogođenoj ploči, ponovno izgradite s omogućenom značajkom (promjena Haar kaskada).

  5. Ponovno validirajte modele koji su ovisili o SCALE_S128_127 (promjena skaliranja).

  6. Premjestite kod za dvije jezgre na Open-AMP (promjena CM4).