v4.6.0¶
v4.6.0 ist ein großes Feature-Release. Die Highlights: Das Kameramodul wurde von sensor in csi umbenannt (mit einem abwärtskompatiblen sensor-Alias), ein neues ml.postprocessing-Modul, Unterstützung für den Prophesee-GenX320-Ereignissensor, PAG7936 und FLIR-Boson-Wärmebildkameras, ein neuer TinyUSB-basierter DFU-Bootloader, Nema-GPU-Beschleunigung und MicroPython 1.24. Außerdem ändert sich der alpha-Bereich beim Zeichnen, also lies die nachfolgenden Breaking Changes.
Highlights¶
sensorist jetzt auchcsi— das Kameramodul wurde incsiumbenannt;sensorbleibt als abwärtskompatibler Alias erhalten (noch keine Codeänderung erforderlich).Neues
ml.postprocessing-Modul —fomo_postprocess,yolo_v2_postprocess,yolo_v5_postprocess.Neue Sensoren — Prophesee-GenX320-Ereigniskamera, PAG7936 und FLIR Boson 320/640 Wärmebild.
Neuer DFU-Bootloader — ein TinyUSB-basierter Standard-DFU-Bootloader ersetzt den alten CDC-Bootloader auf allen Boards.
Nema-GPU — beschleunigte 2D-/Vektorgrafik auf STM32.
MicroPython auf 1.24.0 aktualisiert.
Breaking: Der
alpha-Bereich beim Zeichnen wurde von 0–256 auf 0–255 geändert (siehe die Änderung des Alpha-Bereichs).
Neue Funktionen¶
ml.postprocessing— ein neues Modul zur Dekodierung von Modellausgaben: ein FOMO-Decoder (fomo_postprocess,find_blobs+ NMS, konfigurierbarerthreshold) sowieyolo_v2_postprocess/yolo_v5_postprocess(mitthreshold,anchors,nms_threshold,nms_sigma).Visualisierung von Ereigniskameras — neue Methoden
Image.to_evt_dark()/Image.to_evt_light()und die FarbpalettenPALETTE_EVT_DARK/PALETTE_EVT_LIGHT.Tiefenvisualisierung — neue Methode
Image.to_depth()und einePALETTE_DEPTH-Farbpalette (Boards mit ToF-Unterstützung).Sensor-Introspektion — neuer
IOCTL_GET_RGB_STATS-ioctl, der ein(R, Gb, Gr, B)-Tupel mit Kanalstatistiken zurückgibt.GenX320-Bias-Voreinstellungen — neuer
IOCTL_GENX320_SET_BIASES-ioctl mit den VoreinstellungenGENX320_BIASES_DEFAULT/LOW_LIGHT/ACTIVE_MARKER/LOW_NOISE/HIGH_SPEED.omv.debug_mode()— eine neue Funktion, um abzufragen, ob die USB-Debug-Schnittstelle aktiv ist.Nema-GPU — Integration des Cortex-M55-NemaGFX/NemaVG-Treibers auf STM32, mit GPU-In-Place-Cut-Through für
draw_image.PAG7936 — Farbbalkenausgabe, Auto-Belichtung / Auto-Verstärkung, Schlafmodus und MIPI-Modus hinzugefügt.
Weitere Änderungen und Verbesserungen¶
MicroPython auf 1.24.0 aktualisiert; ulab auf 6.7.3 aktualisiert (fügt
keepdimshinzu).Gemeinsames Boot-Skript — STM32 / i.MX RT / RP2 teilen sich jetzt ein
_boot.py, das automatisch das Flash-/SD-Dateisystem mit einer Standard-main.pyundREADME.txterstellt und temporäre Startup-Globals freigibt.STM32N6-Grundlagen — grundlegende STM32N6-Unterstützung, ein XSPI-Treiber, ein gemeinsamer MPU-Treiber sowie Firmware-/Bootloader-Signierung auf STM32.
Computed-Goto-VM — auf STM32 und nRF aktiviert für eine schnellere Interpreterausführung.
Fehlerbehebungen¶
Kamera und Sensoren:
Die OV5640-PCLK-/Belichtungsberechnung korrigiert (zwei MIPI-Lanes, korrigierte Teilertabelle).
Die MT9V0xx-Bayer-CFA-Variante akzeptiert jetzt RGB565/BAYER/GRAYSCALE und gibt korrekte rohe Bayer-Daten aus, statt einen Fehler zu erzeugen.
PAG7936-Objektivschattierungskorrektur aktiviert und HD-Bildverschiebung behoben;
set_framerate()wird jetzt pro Auflösung begrenzt.FLIR-Lepton-Wärmeerfassung auf dem i.MX RT1060 behoben (korrigiertes VoSPI CPOL/CPHA), und Lepton-Schnappschüsse geben jetzt spezifische Fehlercodes zurück.
GenX320-Frequenzrundung behoben.
Bildverarbeitung:
Speicherbeschädigung in
to_ndarray()bei Graustufenbildern behoben.Debayer-Grenzvorhersage bei der Bayer→RGB/Graustufen-Konvertierung behoben.
draw_image()-transposeauf Boards ohne SDRAM behoben (Chunked-Puffer).Behandlung von booleschen Argumenten in
Image.binary()und demload_to_fb-Flag vonml.Modelbehoben.
System:
SPI-RX-only-/TX-only-Pin-Konfiguration auf STM32 und i.MX RT behoben.
Die Ethernet-DMA-Puffer des Portenta H7 in SRAM3 verschoben, damit Ethernet funktioniert.
Ein verlorenes Zeichen bei der Debug-Kanal-Textausgabe über USB behoben; ML-Dynamic-Allocation-Größen aufgerundet, um zu kleine Modellpuffer zu vermeiden.
Hardware- und Board-Unterstützung¶
Prophesee GenX320 ereignisbasierter Bildsensor (STM32F7 + i.MX RT1060).
PAG7936-Sensor (mit MIPI-Modus).
FLIR Boson 320/640 Wärmebildkameras (IDD-4-Treiber).
Nema-GPU-Beschleunigung auf STM32.
STM32N6 Bootloader-/XSPI-Grundlagen.
VL53L5CX — Unterstützung für Power-Enable-Pin hinzugefügt.
Breaking API Changes¶
Für Benutzer sichtbare API-Brüche zwischen v4.5.9 und v4.6.0. Umfang: Python-C-Module in modules/ und Python-Bibliotheken in scripts/libraries/.
Jede Änderung ist mit ihrer Auswirkung gekennzeichnet:
major — die meisten Skripte, die es verwendet haben, müssen angepasst werden.
minor — eingeschränkte API; betrifft nur Skripte, die sie verwendet haben.
behavior — gleiche API, andere Ergebnisse; abgestimmte Skripte erneut überprüfen.
tooling — betrifft nur das Flashen / Host-Tools / Board-Verfügbarkeit.
Die Änderungen sind in dieser Reihenfolge nach Auswirkung gruppiert. Wenn du nur deinen Code portieren möchtest, springe zur Migrations-Checkliste am Ende. Jeder Commit-Hash verweist auf seinen Diff auf GitHub. Hinweis: Die Modulumbenennung sensor → csi in diesem Release ist kein Breaking Change — sensor funktioniert weiterhin als Alias.
Der alpha-Bereich beim Zeichnen ist jetzt 0–255 (major)¶
Das alpha-Argument von draw_image() und jedem Overlay, das eines annimmt (FIR, ToF, Display, TV, MJPEG, Alpha-Tabellen), verwendet jetzt einen Bereich von 0–255 statt 0–256. Skripte, die 256 für vollständige Deckkraft übergeben oder Alpha gegen 256 berechnet haben, müssen auf 0–255 umskaliert werden.
Commit: 1f87b5bb6
FLIR-Lepton-ioctl-Konstanten umbenannt (minor)¶
Drei Lepton-ioctl-Konstanten wurden gekürzt: IOCTL_LEPTON_SET_MEASUREMENT_MODE → IOCTL_LEPTON_SET_MODE, IOCTL_LEPTON_SET_MEASUREMENT_RANGE → IOCTL_LEPTON_SET_RANGE, IOCTL_LEPTON_GET_FPA_TEMPERATURE → IOCTL_LEPTON_GET_FPA_TEMP. Die mitgelieferten Beispiele wurden aktualisiert.
Commit: 12582d54d
Umstrukturierung der ML-Postprocessing-API (minor)¶
ml.postprocessing ist in diesem Release neu, und seine API hat sich währenddessen verschoben: Das Konstruktor-Keyword score_threshold von yolo_v2_postprocess wurde in threshold umbenannt, und leere Postprocessing-Ergebnisse geben jetzt () statt [] zurück. Das mitgelieferte Modell yolov5_rgb_person wurde in yolo_v5_224_nano umbenannt. ml.apps.MicroSpeech leitet jetzt beliebige **kwargs an audio.init() weiter, statt eines festen gain_db=24.
Commits: d67bd1ad7, 979b4e8ee, b89b815b2, 6671d9df5, 5c2f4388c
AGAST ist der Standard-Eckendetektor (behavior)¶
find_keypoints() verwendet jetzt auf allen Boards AGAST statt FAST als Standard-Eckendetektor. Schlüsselpunkt-Sätze (und damit Deskriptor-Übereinstimmungen) unterscheiden sich von früheren Releases — abgestimmte Schlüsselpunkt-Pipelines erneut überprüfen. Das IDE-Framebuffer-Streaming ist außerdem jetzt auf 20 Hz begrenzt, um die USB-Last zu reduzieren.
Bootloader, entfernte Boards und Funktionen (tooling)¶
Der alte CDC-Bootloader wurde auf allen Boards durch einen neuen TinyUSB-basierten Standard-DFU-Bootloader ersetzt — der Firmware-Update-Mechanismus hat sich geändert; passe deinen Flashing-Workflow / deine Tools entsprechend an. Das OpenMV Pro-Board, der eigenständige Raspberry Pi Pico-Build und die WiFi-Debug-Funktion (wifidbg) für die Remote-IDE wurden entfernt.
Commits: a03fc90d8, c2e616aae, af3ea774b, f8bca9799, 59a38a0d3, 7edeb4fbe, d58d77fa2
Migrations-Checkliste¶
Für eine saubere Portierung auf v4.6.0 fallen typischerweise folgende Arbeiten an:
Skaliere jeden
alpha-Wert beim Zeichnen/Overlay vom Bereich 0–256 auf 0–255 um (die Änderung des Alpha-Bereichs).Benenne alle FLIR-Lepton-ioctl-Konstanten in ihre gekürzten Formen um (die Lepton-ioctl-Umbenennung).
Wenn du die neuen ML-Postprozessoren verwendet hast, wechsle
score_thresholdzuthreshold, behandle ein leeres()-Ergebnis und aktualisiere den Modellnamenyolo_v5_224_nano(die ML-Änderungen).Überprüfe
find_keypoints()-basierte Pipelines erneut hinsichtlich der AGAST-Detektor-Änderung (die Eckendetektor-Änderung).Aktualisiere deinen Firmware-Flashing-Workflow für den neuen DFU-Bootloader (die Bootloader-/Board-Änderungen).