v4.5.6¶
v4.5.6 is de grote machine learning-release. De TensorFlow tf C-module is vervangen door een nieuw, engine-onafhankelijk ml-pakket op basis van TensorFlow Lite Micro (TFLM), de conversie van afbeelding naar tensor is verplaatst naar image.to_ndarray(), en dual-core boards zijn overgestapt op Open-AMP. Er zijn verschillende ingrijpende wijzigingen — lees ze hieronder voordat je ML-scripts upgradet.
Hoogtepunten¶
Nieuw
ml-pakket — de oudetf-module is herschreven tot een engine-onafhankelijkml-pakket (ml.Model,ml.preprocessing,ml.utils,ml.apps);tfblijft bestaan als alias.TFLM-backend — de verouderde
libtfis vervangen door op upstream gebaseerde TensorFlow Lite Micro: ~20% snellere inferentie en kleinere bibliotheken.Open-AMP dual-core — GIGA en Portenta H7 gebruiken nu Open-AMP/RPMsg voor de communicatie tussen de M7- en M4-kernen (het oude CM4-mechanisme is verwijderd).
Ingebouwde Bluetooth — CYW43 Bluetooth-firmware ingeschakeld op Nicla Vision, Portenta H7 en GIGA.
MicroPython 1.23.0, ulab 6.5.2 (met ondersteuning voor 4D-ndarray).
Ingrijpend: de ML-API is aanzienlijk veranderd en Haar cascades zijn standaard uitgeschakeld op de meeste boards — zie de ingrijpende wijzigingen.
Nieuwe functies¶
ml-pakket —ml.Modelmetpredict()(roi,callback, lijst met meerdere ingangen), vorm/dtype/scale/zero-point-attributen per tensor,ml.preprocessing.Normalization,ml.utils(NMS) enml.apps(een pure-PythonMicroSpeechkeyword spotter metlisten()en niet-blokkerendetimeout=-1-streaming, plusdraw_predictions()).Ingebouwd modelsysteem — modellen die in
models/index.txtvermeld staan, worden per board voorwaardelijk ingebed (FOMO op alle ML-boards, audiomodellen op boards met microfoons).image.to_ndarray(dtype, buffer=...)— converteert een afbeelding naar een ulab-ndarray (optioneel in-place).Image()op basis van ruwe arrays — nieuweshape=-,strides=- enscale=-keyword-argumenten bouwen grijswaarden-/RGB565-afbeeldingen op uit ruwe pixellijsten.Anti-aliased
draw_circle().ssl-module ingevroren in de firmware op GIGA, Nicla Vision, Portenta H7, Nano RP2040 Connect, OpenMV 4/4P/PRO/PT, RT1060 en Pico.Audio —
audio.init()heeft eensamples=-keyword gekregen (PDM-samples per kanaal);gain_dbwerkt nu op DFSDM-microfoons (bijv. Nicla Vision).Debugprotocol — een nieuwe
GET_STATE-opdracht geeft run-/tekst-/JPEG-vlaggen, framegeometrie en tekst in één pakket terug, wat het aantal round-trips naar de host vermindert.Open-AMP vuart-voorbeeld voor communicatie tussen kernen.
Overige wijzigingen en verbeteringen¶
MicroPython bijgewerkt naar 1.23.0; ulab naar 6.5.2 met ondersteuning voor 4D-ndarray.
Snellere inferentie — de ML-backend houdt persistente status/geheugen aan tussen aanroepen (~20% sneller, ondersteunt LSTM-achtige modellen).
get_similarity()is opnieuw geïmplementeerd op dedraw_image-backend (bredere ondersteuning voor formaten/bewerkingen).morph()en demean()-filterfamilie zijn overgestapt op het parsen van keyword-argumenten;mask=accepteert nu een muteerbare afbeelding.Geheugenindeling herzien — DMA-regio’s uitgelijnd op machten van 2, herrangschikbare GC-blokken, meerdere heaps; minder vroege heap-fragmentatie op boards met weinig RAM; RT1060 krijgt extra GC-heap.
WiFi (CYW43) wordt nu bij een soft-reset gede-initialiseerd; SPI-TV-display spoelt alleen de framebuffer-regio uit de cache voor soepelere updates.
Bugfixes¶
Camera en sensoren:
Per ongeluk optredende invalidatie van de CPU-cache in het framebuffer-/sensorpad op STM32 en i.MX RT verholpen, wat beeldgegevens kon beschadigen.
MLX90640/MLX90641-thermische I2C-uitlezingen op i.MX RT-boards verholpen (grote overdrachten worden nu in stukken opgesplitst).
Machine learning:
De afhandeling van
load_to_fbinml.Model, de grootte van de invoer-bytearray, dendim-controles van de ndarray en de validatie van het beeldformaat/de vorm inNormalizationverholpen.
Afbeelding / systeem:
De ontbrekende
image.BLACK_BACKGROUND-tekenhintconstante en een controle op de bufferlengte van afbeelding/tensor toegevoegd.FIR- en audio-GC-rootpointers verholpen die ervoor konden zorgen dat de collector in gebruik zijnde buffers vrijgaf.
Het Servo Shield-voorbeeld gebruikt nu
SoftI2Czodat het werkt op OpenMV RT-boards.
Hardware- en boardondersteuning¶
Arduino GIGA — HM01B0-/HM0360-sensorondersteuning; Open-AMP dual-core.
Bluetooth — CYW43 BT-firmware op Nicla Vision, Portenta H7 en GIGA.
Portenta H7 — Open-AMP M7/M4 RPMsg.
OpenMV RT1060 — extra GC-heap-blokken (meer Python-geheugen).
Ingrijpende API-wijzigingen¶
Voor gebruikers zichtbare API-wijzigingen tussen v4.5.5 en v4.5.6. Reikwijdte: Python C-modules in modules/ en Python-bibliotheken in scripts/libraries/.
Elke wijziging is voorzien van een label voor de impact:
major — de meeste scripts die het gebruikten, moeten worden aangepast.
minor — beperkte API; treft alleen scripts die het gebruikten.
behavior — dezelfde API, andere resultaten; controleer afgestelde scripts opnieuw.
tooling — treft dual-core-/boardmechanismen, niet de Python-API.
Wijzigingen zijn in die volgorde gegroepeerd op impact. Als je je code alleen wilt porten, ga dan naar de migratiechecklist aan het einde. Elke commit-hash linkt naar zijn diff op GitHub.
tf-module vervangen door het ml-pakket (major)¶
De TensorFlow tf C-module is herschreven tot een engine-onafhankelijk ml-pakket (tf blijft behouden als achterwaarts compatibele alias, maar nieuwe code zou ml moeten gebruiken). De functies op moduleniveau tf.load en tf.load_builtin_model en de methoden detect()/segment()/classificatie zijn verwijderd — construeer een ml.Model en roep predict() aan. ml.Model(path) retourneert nu alleen het model (geen (labels, model)-tuple); labels zijn een model.labels-attribuut. predict() retourneert nu ulab-ndarrays (geen float-tuples), ondersteunt modellen met meerdere ingangen (geef een lijst door), en NMS is verplaatst naar ml.utils; invoernormalisatie is verplaatst naar ml.preprocessing.Normalization. De oude ml.py is nu ml.apps.
Commits: c7228cbb4, 6c212409c, 3e37f46db, 9a186f4e2, 70b89f474, 3f8491cb0, 4506682c2, 8b38f3837
image.unpack() verwijderd — gebruik to_ndarray() (major)¶
Het kortstondige image.unpack() is verwijderd; converteer een afbeelding in plaats daarvan naar een tensor met image.to_ndarray(dtype, buffer=...), en pas scale-/mean-/stdev-normalisatie toe met ml.preprocessing.Normalization in plaats van het oude ingebouwde beeldschaalpad.
Image() scale-argument voor ruwe arrays (minor)¶
Bij het construeren van een Image uit een ruwe pixelarray neemt het scale-argument nu een (min, max)-bereik in plaats van (scale, add).
Commit: 7b79fb4c7
Haar cascades standaard uitgeschakeld op de meeste boards (behavior)¶
Om flashgeheugen vrij te maken is Haar-cascade-gezichtsdetectie (find_features() / image.HaarCascade()) nu standaard uitgeschakeld op Arduino GIGA, Nicla Vision, Portenta H7, OpenMV 3, OpenMV 4 / 4 Plus / PRO en OpenMV Pure Thermal. Scripts die Haar cascades op die boards gebruiken, moeten de firmware opnieuw bouwen met de functie ingeschakeld.
Commit: 6ce27c910
Scriptonderbreking en tensorschaling (behavior)¶
De USB-debugger onderbreekt een lopend script nu via MicroPython’s VM-abort-functie in plaats van een geforceerde PendSV-sprong (schoner, maar het onderbrekingspunt verschilt). De SCALE_S128_127-invoerschaling is gecorrigeerd zodat 0–255 wordt gemapt naar −128–127 zonder een onterechte versterking — modellen die op de oude (onjuiste) schaling vertrouwen, produceren andere resultaten.
CM4-coprocessor vervangen door Open-AMP (tooling)¶
Het verouderde mechanisme voor de CM4-coprocessor-firmware op GIGA / Nicla Vision / Portenta H7 is verwijderd en vervangen door Open-AMP/RPMsg. Dual-core-code moet overstappen op het Open-AMP-model (er wordt een vuart-voorbeeld geleverd).
Migratiechecklist¶
Voor een schone port naar v4.5.6 bestaat het typische werk uit:
Port ML-code naar
ml: construeerml.Model(path), roeppredict()aan, leesmodel.labels, verwachtndarray-uitvoer en verplaats normalisatie naarml.preprocessing.Normalizationen NMS naarml.utils(de wijziging van het ml-pakket).Vervang
image.unpack()doorimage.to_ndarray()(de verwijdering van unpack).Werk elk
Image()scale-argument voor ruwe arrays bij naar een(min, max)-bereik (de wijziging van Image scale).Als je Haar cascades op een betrokken board gebruikt, bouw dan opnieuw met de functie ingeschakeld (de wijziging van Haar cascades).
Valideer modellen opnieuw die afhankelijk waren van
SCALE_S128_127(de schalingswijziging).Verplaats dual-core-code naar Open-AMP (de CM4-wijziging).