v4.6.0

v4.6.0 är en större funktionssläpp. I rampljuset: kameramodulen döptes om från sensor till csi (med ett bakåtkompatibelt sensor-alias), en ny ml.postprocessing-modul, stöd för Prophesee GenX320-händelsesensorn, PAG7936 och FLIR Boson-värmekameror, en ny TinyUSB-baserad DFU-startladdare, Nema GPU-acceleration och MicroPython 1.24. Den ändrar även ritningens alpha-intervall, så läs de brytande ändringarna nedan.

Höjdpunkter

  • sensor är nu även csi — kameramodulen döptes om till csi; sensor finns kvar som ett bakåtkompatibelt alias (ingen kodändring krävs ännu).

  • Ny ml.postprocessing-modulfomo_postprocess, yolo_v2_postprocess, yolo_v5_postprocess.

  • Nya sensorer — Prophesee GenX320-händelsekamera, PAG7936 och FLIR Boson 320/640 värmekamera.

  • Ny DFU-startladdare — en TinyUSB-baserad standard-DFU-startladdare ersätter den äldre CDC-startladdaren på alla kort.

  • Nema GPU — accelererad 2D/vektorgrafik på STM32.

  • MicroPython uppdaterad till 1.24.0.

  • Brytande: ritningens alpha-intervall ändrades från 0–256 till 0–255 (se ändringen av alfaintervallet).

Nya funktioner

  • ml.postprocessing — en ny modul som avkodar modellutdata: en FOMO-avkodare (fomo_postprocess, find_blobs + NMS, konfigurerbart threshold) och yolo_v2_postprocess / yolo_v5_postprocess (med threshold, anchors, nms_threshold, nms_sigma).

  • Visualisering för händelsekamera — nya metoderna Image.to_evt_dark() / Image.to_evt_light() och färgpaletterna PALETTE_EVT_DARK / PALETTE_EVT_LIGHT.

  • Djupvisualisering — ny metod Image.to_depth() och en färgpalett PALETTE_DEPTH (kort med ToF-stöd).

  • Sensorintrospektion — ny ioctl IOCTL_GET_RGB_STATS som returnerar en kanalstatistiktupel (R, Gb, Gr, B).

  • GenX320-biasförinställningar — ny ioctl IOCTL_GENX320_SET_BIASES med förinställningarna GENX320_BIASES_DEFAULT / LOW_LIGHT / ACTIVE_MARKER / LOW_NOISE / HIGH_SPEED.

  • omv.debug_mode() — en ny funktion för att fråga om USB-felsökningsgränssnittet är aktivt.

  • Nema GPU — integration av Cortex-M55 NemaGFX/NemaVG-drivrutinen på STM32, med GPU-genomströmning på plats för draw_image.

  • PAG7936 — lade till färgstapelutdata, autoexponering / autoförstärkning, viloläge och MIPI-läge.

Övriga ändringar och förbättringar

  • MicroPython uppdaterad till 1.24.0; ulab uppdaterad till 6.7.3 (lägger till keepdims).

  • Gemensamt startskript — STM32 / i.MX RT / RP2 delar nu en _boot.py som automatiskt skapar flash-/SD-filsystemet med en standard main.py och README.txt och frigör temporära globala uppstartsvariabler.

  • STM32N6-grundarbete — grundläggande STM32N6-stöd, en XSPI-drivrutin, en gemensam MPU-drivrutin samt signering av fast programvara/startladdare på STM32.

  • Computed-goto VM — aktiverad på STM32 och nRF för snabbare tolk.

Buggfixar

Kamera och sensorer:

  • Korrigerade beräkningen av OV5640 PCLK/exponering (två MIPI-banor, korrigerad delartabell).

  • MT9V0xx Bayer-CFA-varianten accepterar nu RGB565/BAYER/GRAYSCALE och matar ut korrekt rå Bayer-data i stället för att ge fel.

  • Aktiverade PAG7936 linsskuggningskorrigering och korrigerade HD-bildförskjutning; set_framerate() är nu begränsad per upplösning.

  • Korrigerade FLIR Lepton-värmeinfångning på i.MX RT1060 (korrigerad VoSPI CPOL/CPHA), och Lepton-stillbilder returnerar nu specifika felkoder.

  • Korrigerade GenX320-frekvensavrundning.

Bildbehandling:

  • Korrigerade minneskorruption i to_ndarray() på gråskalebilder.

  • Korrigerade debayer-gränsförutsägelse vid Bayer→RGB/gråskala-konvertering.

  • Korrigerade draw_image() transpose på kort utan SDRAM (styckad buffert).

  • Korrigerade hantering av booleska argument i Image.binary() och ml.Model-flaggan load_to_fb.

System:

  • Korrigerade konfiguration av SPI RX-endast / TX-endast-stift på STM32 och i.MX RT.

  • Flyttade Portenta H7:s Ethernet-DMA-buffertar till SRAM3 så att Ethernet fungerar.

  • Korrigerade ett bortfallet tecken i textutmatning på felsökningskanalen över USB; avrundade ML:s dynamiska allokeringsstorlekar uppåt för att undvika underdimensionerade modellbuffertar.

Maskinvara och kortstöd

  • Prophesee GenX320 händelsebaserad visionssensor (STM32F7 + i.MX RT1060).

  • PAG7936-sensor (med MIPI-läge).

  • FLIR Boson 320/640 värmekameror (IDD 4-drivrutin).

  • Nema GPU-acceleration på STM32.

  • STM32N6 startladdar-/XSPI-grundarbete.

  • VL53L5CX — lade till stöd för power-enable-stift.

Brytande API-ändringar

Användarsynliga API-brytningar mellan v4.5.9 och v4.6.0. Omfattning: Python-C-moduler i modules/ och Python-bibliotek i scripts/libraries/.

Varje ändring är märkt med sin påverkan:

  • major — de flesta skript som använde den behöver redigeras.

  • minor — smalt API; påverkar bara skript som använde det.

  • behavior — samma API, andra resultat; kontrollera trimmade skript igen.

  • tooling — påverkar endast flashning / värdverktyg / korttillgänglighet.

Ändringarna är grupperade efter påverkan i den ordningen. Om du bara vill porta din kod, hoppa till migreringschecklistan i slutet. Varje commit-hash länkar till sin diff på GitHub. Obs: omdöpningen av modulen sensorcsi i detta släpp är inte brytande — sensor fungerar fortfarande som ett alias.

Ritningens alpha-intervall är nu 0–255 (major)

Argumentet alpha i draw_image() och alla överlägg som tar ett sådant (FIR, ToF, display, TV, MJPEG, alfatabeller) använder nu ett 0–255-intervall i stället för 0–256. Skript som skickade 256 för helt ogenomskinligt, eller beräknade alfa mot 256, måste skalas om till 0–255.

Commit: 1f87b5bb6

FLIR Lepton ioctl-konstanter omdöpta (minor)

Tre Lepton ioctl-konstanter förkortades: IOCTL_LEPTON_SET_MEASUREMENT_MODEIOCTL_LEPTON_SET_MODE, IOCTL_LEPTON_SET_MEASUREMENT_RANGEIOCTL_LEPTON_SET_RANGE, IOCTL_LEPTON_GET_FPA_TEMPERATUREIOCTL_LEPTON_GET_FPA_TEMP. De medföljande exemplen uppdaterades.

Commit: 12582d54d

Omarbetning av API:et för ML-efterbehandling (minor)

ml.postprocessing är ny i detta släpp och dess API ändrades under arbetet: konstruktorns nyckelord score_threshold i yolo_v2_postprocess döptes om till threshold, och tomma efterbehandlingsresultat returnerar nu () i stället för []. Den medföljande modellen yolov5_rgb_person döptes om till yolo_v5_224_nano. ml.apps.MicroSpeech vidarebefordrar nu godtyckliga **kwargs till audio.init() i stället för ett fast gain_db=24.

Commits: d67bd1ad7, 979b4e8ee, b89b815b2, 6671d9df5, 5c2f4388c

AGAST är standardhörndetektorn (behavior)

find_keypoints() använder nu AGAST i stället för FAST som standardhörndetektor på alla kort. Nyckelpunktsmängder (och därmed deskriptormatchningar) skiljer sig från tidigare släpp — kontrollera trimmade nyckelpunktspipelines igen. IDE:ns strömning av bildbuffert är nu också begränsad till 20 Hz för att minska USB-belastningen.

Commits: da6bf6910, bc4e39246

Startladdare, borttagna kort och funktioner (tooling)

Den äldre CDC-startladdaren ersattes av en ny TinyUSB-baserad standard-DFU-startladdare på alla kort — mekanismen för uppdatering av fast programvara ändrades; uppdatera ditt flashnings-arbetsflöde/verktyg därefter. Kortet OpenMV Pro, det fristående Raspberry Pi Pico-bygget och fjärr-IDE-funktionen WiFi-felsökning (wifidbg) togs bort.

Commits: a03fc90d8, c2e616aae, af3ea774b, f8bca9799, 59a38a0d3, 7edeb4fbe, d58d77fa2

Migreringschecklista

För en ren portning till v4.6.0 är det typiska arbetet:

  1. Skala om varje ritnings-/överläggsvärde alpha från intervallet 0–256 till 0–255 (ändringen av alfaintervallet).

  2. Döp om eventuella FLIR Lepton ioctl-konstanter till sina förkortade former (omdöpningen av Lepton-ioctl).

  3. Om du använde de nya ML-efterbehandlarna, byt score_threshold mot threshold, hantera ett tomt ()-resultat och uppdatera modellnamnet yolo_v5_224_nano (ML-ändringarna).

  4. Kontrollera find_keypoints()-baserade pipelines igen med tanke på ändringen till AGAST-detektorn (ändringen av hörndetektorn).

  5. Uppdatera ditt arbetsflöde för flashning av fast programvara för den nya DFU-startladdaren (ändringarna av startladdare/kort).