v4.5.6¶
A v4.5.6 a nagy gépi tanulási kiadás. A TensorFlow tf C-modult egy új, motorfüggetlen, TensorFlow Lite Micro (TFLM) alapú ml csomag váltotta fel, a kép→tenzor konverzió átkerült az image.to_ndarray() függvénybe, a kétmagos lapok pedig áttértek az Open-AMP-re. Több visszafelé nem kompatibilis változás is van — olvasd el az alábbiakat, mielőtt frissítenéd az ML-szkripteket.
Kiemelt változások¶
Új
mlcsomag — a régitfmodul motorfüggetlenmlcsomaggá lett átírva (ml.Model,ml.preprocessing,ml.utils,ml.apps); atfaliasként megmarad.TFLM háttér — az elavult
libtfhelyét az upstream alapú TensorFlow Lite Micro vette át: ~20%-kal gyorsabb következtetés és kisebb könyvtárak.Open-AMP kétmagos működés — a GIGA és a Portenta H7 mostantól Open-AMP/RPMsg-et használ az M7/M4 magközi kommunikációhoz (a régi CM4 mechanizmus megszűnt).
Beépített Bluetooth — a CYW43 Bluetooth firmware engedélyezve a Nicla Vision, a Portenta H7 és a GIGA lapokon.
MicroPython 1.23.0, ulab 6.5.2 (4-D ndarray támogatással).
Visszafelé nem kompatibilis: az ML API jelentősen megváltozott, és a Haar-kaszkádok a legtöbb lapon alapértelmezetten le vannak tiltva — lásd a visszafelé nem kompatibilis változásokat.
Új funkciók¶
mlcsomag —ml.Modelapredict()metódussal (roi,callback, többbemenetű lista), tenzoronkénti alak/dtype/skála/zérópont attribútumok,ml.preprocessing.Normalization,ml.utils(NMS) ésml.apps(egy tisztán PythonMicroSpeechkulcsszó-felismerőlisten()metódussal és nem blokkolótimeout=-1streameléssel, valamintdraw_predictions()függvénnyel).Beépített modellrendszer — a
models/index.txtfájlban felsorolt modellek laponként, feltételesen kerülnek beágyazásra (FOMO minden ML-lapon, hangmodellek a mikrofonnal rendelkező lapokon).image.to_ndarray(dtype, buffer=...)— egy kép átalakítása ulab ndarray-jé (opcionálisan helyben).Image()nyers tömbökből — az újshape=,strides=,scale=kulcsszavas argumentumok szürkeárnyalatos/RGB565 képeket építenek nyers képpontlistákból.Élsimított
draw_circle().Az
sslmodul firmware-be fagyasztva a GIGA, Nicla Vision, Portenta H7, Nano RP2040 Connect, OpenMV 4/4P/PRO/PT, RT1060 és Pico lapokon.Hang — az
audio.init()egysamples=kulcsszót kapott (PDM-minták csatornánként); again_dbmostantól DFSDM mikrofonokon is érvényesül (pl. Nicla Vision).Hibakeresési protokoll — egy új
GET_STATEparancs egyetlen csomagban adja vissza a futtatási/szöveg/JPEG jelzőket, a képkocka geometriáját és a szöveget, csökkentve a gazdagéppel folytatott oda-vissza kommunikációt.Open-AMP vuart példa a magközi kommunikációhoz.
Egyéb változások és fejlesztések¶
A MicroPython 1.23.0-ra frissült; az ulab 6.5.2-re, 4-D ndarray támogatással.
Gyorsabb következtetés — az ML háttér megőrzi az állandó állapotot/memóriát a hívások között (~20%-kal gyorsabb, LSTM-stílusú modelleket is támogat).
A
get_similarity()újra lett implementálva adraw_imageháttéren (szélesebb formátum-/műveleti támogatás).A
morph()és amean()szűrőcsalád áttért a kulcsszavas argumentumok feldolgozására; amask=mostantól módosítható képet is elfogad.Memóriaelrendezés átdolgozva — a DMA-régiók 2 hatványaira igazítva, átrendezhető GC-blokkok, több halom; kevesebb korai halomtöredezettség az alacsony RAM-mal rendelkező lapokon; az RT1060 extra GC-halmot kap.
A WiFi (CYW43) mostantól szoftveres újraindításkor deinicializálódik; az SPI-TV kijelző csak a framebuffer-régiót öblíti ki a gyorsítótárból a simább frissítések érdekében.
Hibajavítások¶
Kamera és érzékelők:
Javítva a véletlen CPU-gyorsítótár-érvénytelenítés a framebuffer/érzékelő útvonalon STM32 és i.MX RT lapokon, ami a képadatok sérülését okozhatta.
Javítva az MLX90640/MLX90641 hőkamerás I2C-olvasások i.MX RT lapokon (a nagy átvitelek mostantól darabokra vannak bontva).
Gépi tanulás:
Javítva az
ml.Modelload_to_fbkezelése, a bemenetibytearrayméretezése, az ndarrayndimellenőrzései, valamint aNormalizationképformátum-/alakellenőrzése.
Kép / rendszer:
Hozzáadva a hiányzó
image.BLACK_BACKGROUNDrajzolási segédkonstans, valamint egy kép-/tenzorpuffer hosszának épelméjűség-ellenőrzése.Javítva a FIR és hang GC gyökérmutatói, amelyek miatt a gyűjtő használatban lévő puffereket szabadíthatott fel.
A Servo Shield példa mostantól
SoftI2C-t használ, így OpenMV RT lapokon is működik.
Hardver- és laptámogatás¶
Arduino GIGA — HM01B0 / HM0360 érzékelő-támogatás; Open-AMP kétmagos működés.
Bluetooth — CYW43 BT firmware a Nicla Vision, Portenta H7 és GIGA lapokon.
Portenta H7 — Open-AMP M7/M4 RPMsg.
OpenMV RT1060 — további GC-halomblokkok (több Python memória).
Visszafelé nem kompatibilis API-változások¶
Felhasználó számára látható API-törések a v4.5.5 és v4.5.6 között. Hatókör: Python C-modulok a modules/ mappában és Python könyvtárak a scripts/libraries/ mappában.
Minden változás meg van jelölve a hatásával:
major — a legtöbb szkriptnek, amely használta, szerkesztésre van szüksége.
minor — szűk API; csak az azt használó szkripteket érinti.
behavior — azonos API, eltérő eredmények; ellenőrizd újra a finomhangolt szkripteket.
tooling — a kétmagos / lapmechanizmusokat érinti, nem a Python API-t.
A változások ebben a sorrendben, hatás szerint vannak csoportosítva. Ha csak portolni szeretnéd a kódodat, ugorj a végén lévő migrációs ellenőrzőlistához. Minden commit-hash a hozzá tartozó diffre mutat a GitHubon.
A tf modult felváltotta az ml csomag (major)¶
A TensorFlow tf C-modul motorfüggetlen ml csomaggá lett átírva (a tf visszafelé kompatibilis aliasként megmarad, de az új kódnak az ml csomagot kell használnia). A modulszintű tf.load, tf.load_builtin_model függvények, valamint a detect()/segment()/osztályozó metódusok megszűntek — hozz létre egy ml.Model példányt, és hívd meg a predict() metódust. Az ml.Model(path) mostantól csak a modellt adja vissza (nem a (labels, model) rendezett párt); a címkék a model.labels attribútumban érhetők el. A predict() mostantól ulab ndarray-eket ad vissza (nem float rendezett párokat), támogatja a többbemenetű modelleket (adj át egy listát), az NMS pedig átkerült az ml.utils csomagba; a bemeneti normalizálás átkerült az ml.preprocessing.Normalization osztályba. A régi ml.py mostantól az ml.apps.
Commitok: c7228cbb4, 6c212409c, 3e37f46db, 9a186f4e2, 70b89f474, 3f8491cb0, 4506682c2, 8b38f3837
Az image.unpack() megszűnt — használd a to_ndarray() függvényt (major)¶
A rövid életű image.unpack() megszűnt; alakíts át egy képet tenzorrá az image.to_ndarray(dtype, buffer=...) segítségével, a skála-/átlag-/szórás-normalizálást pedig az ml.preprocessing.Normalization osztállyal alkalmazd a régi beépített kép-skálázási útvonal helyett.
Az Image() nyers tömb scale argumentuma (minor)¶
Amikor egy Image objektumot nyers képponttömbből hozol létre, a scale argumentum mostantól egy (min, max) tartományt vár a (scale, add) helyett.
Commit: 7b79fb4c7
A Haar-kaszkádok a legtöbb lapon alapértelmezetten letiltva (behavior)¶
A flash memória felszabadítása érdekében a Haar-kaszkádos arcészlelés (find_features() / image.HaarCascade()) mostantól alapértelmezetten le van tiltva az Arduino GIGA, Nicla Vision, Portenta H7, OpenMV 3, OpenMV 4 / 4 Plus / PRO és OpenMV Pure Thermal lapokon. Az ezeken a lapokon Haar-kaszkádokat használó szkriptekhez a firmware-t újra kell fordítani a funkció engedélyezésével.
Commit: 6ce27c910
Szkriptmegszakítás és tenzorskálázás (behavior)¶
Az USB-hibakereső mostantól a MicroPython VM-megszakítási funkcióján keresztül szakítja meg a futó szkriptet egy kényszerített PendSV-ugrás helyett (tisztább, de a megszakítási pont eltér). A SCALE_S128_127 bemeneti skálázás javítva lett, hogy a 0–255 tartományt −128–127-re képezze le téves erősítés nélkül — a régi (hibás) skálázásra támaszkodó modellek eltérő eredményeket fognak produkálni.
A CM4 társprocesszort felváltotta az Open-AMP (tooling)¶
Az elavult CM4 társprocesszor firmware-mechanizmus a GIGA / Nicla Vision / Portenta H7 lapokon megszűnt, helyét az Open-AMP/RPMsg vette át. A kétmagos kódot az Open-AMP modellre kell átállítani (egy vuart példa biztosított).
Migrációs ellenőrzőlista¶
A v4.5.6-ra való tiszta portoláshoz a tipikus teendők:
Portold az ML-kódot az
mlcsomagra: hozz létreml.Model(path)példányt, hívd meg apredict()metódust, olvasd amodel.labelsattribútumot, számítsndarraykimenetekre, és helyezd át a normalizálást azml.preprocessing.Normalizationosztályba, az NMS-t pedig azml.utilscsomagba (az ml csomag változása).Cseréld le az
image.unpack()hívást azimage.to_ndarray()függvényre (az unpack eltávolítása).Frissítsd az
Image()nyers tömbscaleargumentumait(min, max)tartományra (az Image scale változása).Ha Haar-kaszkádokat használsz egy érintett lapon, fordítsd újra a firmware-t a funkció engedélyezésével (a Haar-kaszkád változása).
Validáld újra azokat a modelleket, amelyek a
SCALE_S128_127skálázásra támaszkodtak (a skálázás változása).Állítsd át a kétmagos kódot Open-AMP-re (a CM4 változása).