v4.6.0¶
v4.6.0 è una release importante con nuove funzionalità. Le novità principali: il modulo della camera è stato rinominato da sensor a csi (con un alias sensor retrocompatibile), un nuovo modulo ml.postprocessing, il supporto per il sensore a eventi Prophesee GenX320, per il PAG7936 e per le camere termiche FLIR Boson, un nuovo bootloader DFU basato su TinyUSB, l’accelerazione Nema GPU e MicroPython 1.24. Cambia inoltre l’intervallo di alpha nel disegno, quindi leggi le modifiche incompatibili di seguito.
In evidenza¶
sensorora è anchecsi— il modulo della camera è stato rinominato incsi;sensorrimane come alias retrocompatibile (non è ancora richiesta alcuna modifica al codice).Nuovo modulo
ml.postprocessing—fomo_postprocess,yolo_v2_postprocess,yolo_v5_postprocess.Nuovi sensori — camera a eventi Prophesee GenX320, PAG7936 e camere termiche FLIR Boson 320/640.
Nuovo bootloader DFU — un bootloader DFU standard basato su TinyUSB sostituisce il vecchio bootloader CDC su tutte le schede.
Nema GPU — grafica 2D/vettoriale accelerata su STM32.
MicroPython aggiornato alla versione 1.24.0.
Incompatibilità: l’intervallo di
alphanel disegno è cambiato da 0–256 a 0–255 (vedi la modifica dell’intervallo di alpha).
Nuove funzionalità¶
ml.postprocessing— un nuovo modulo che decodifica l’output del modello: un decoder FOMO (fomo_postprocess,find_blobs+ NMS,thresholdconfigurabile) eyolo_v2_postprocess/yolo_v5_postprocess(conthreshold,anchors,nms_threshold,nms_sigma).Visualizzazione della camera a eventi — nuovi metodi
Image.to_evt_dark()/Image.to_evt_light()e palette di coloriPALETTE_EVT_DARK/PALETTE_EVT_LIGHT.Visualizzazione della profondità — nuovo metodo
Image.to_depth()e palette di coloriPALETTE_DEPTH(schede con ToF abilitato).Introspezione del sensore — nuovo ioctl
IOCTL_GET_RGB_STATSche restituisce una tupla di statistiche di canale(R, Gb, Gr, B).Preset di bias per GenX320 — nuovo ioctl
IOCTL_GENX320_SET_BIASEScon i presetGENX320_BIASES_DEFAULT/LOW_LIGHT/ACTIVE_MARKER/LOW_NOISE/HIGH_SPEED.omv.debug_mode()— una nuova funzione per verificare se l’interfaccia di debug USB è attiva.Nema GPU — integrazione del driver NemaGFX/NemaVG per Cortex-M55 su STM32, con cut-through GPU in-place per
draw_image.PAG7936 — aggiunti output a barre di colore, esposizione automatica / guadagno automatico, modalità sleep e modalità MIPI.
Altre modifiche e miglioramenti¶
MicroPython aggiornato alla versione 1.24.0; ulab aggiornato alla 6.7.3 (aggiunge
keepdims).Script di avvio comune — STM32 / i.MX RT / RP2 ora condividono un
_boot.pyche crea automaticamente il filesystem flash/SD con unmain.pye unREADME.txtdi default e libera le variabili globali temporanee di avvio.Fondamenta per STM32N6 — supporto di base per STM32N6, un driver XSPI, un driver MPU comune e la firma di firmware/bootloader su STM32.
VM con computed-goto — abilitata su STM32 e nRF per accelerare l’interprete.
Correzioni di bug¶
Camera e sensori:
Corretto il calcolo PCLK/esposizione dell’OV5640 (due corsie MIPI, tabella dei divisori corretta).
La variante MT9V0xx con CFA Bayer ora accetta RGB565/BAYER/GRAYSCALE e produce dati Bayer raw corretti invece di generare un errore.
Abilitata la correzione del lens-shading del PAG7936 e corretto lo spostamento dell’immagine HD;
set_framerate()ora è limitato in base alla risoluzione.Corretta l’acquisizione termica FLIR Lepton su i.MX RT1060 (corretti CPOL/CPHA del VoSPI) e ora gli snapshot Lepton restituiscono codici di errore specifici.
Corretto l’arrotondamento della frequenza del GenX320.
Elaborazione delle immagini:
Corretta la corruzione di memoria in
to_ndarray()su immagini in scala di grigi.Corretta la previsione dei limiti del debayer nella conversione Bayer→RGB/scala di grigi.
Corretto
transposeindraw_image()su schede senza SDRAM (buffer a blocchi).Corretta la gestione degli argomenti booleani in
Image.binary()e nel flagload_to_fbdiml.Model.
Sistema:
Corretta la configurazione dei pin SPI solo-RX / solo-TX su STM32 e i.MX RT.
Spostati i buffer DMA dell’Ethernet del Portenta H7 nella SRAM3 così che l’Ethernet funzioni.
Corretto un carattere perso nell’output di testo del canale di debug su USB; arrotondate per eccesso le dimensioni dell’allocazione dinamica ML per evitare buffer del modello sottodimensionati.
Hardware e supporto schede¶
Sensore di visione a eventi Prophesee GenX320 (STM32F7 + i.MX RT1060).
Sensore PAG7936 (con modalità MIPI).
Camere termiche FLIR Boson 320/640 (driver IDD 4).
Accelerazione Nema GPU su STM32.
Fondamenta per bootloader/XSPI di STM32N6.
VL53L5CX — aggiunto il supporto per il pin di power-enable.
Modifiche incompatibili all’API¶
Modifiche incompatibili all’API visibili all’utente tra la v4.5.9 e la v4.6.0. Ambito: moduli C Python in modules/ e librerie Python in scripts/libraries/.
Ogni modifica è contrassegnata in base al suo impatto:
major — la maggior parte degli script che la usavano necessita di modifiche.
minor — API ristretta; interessa solo gli script che la usavano.
behavior — stessa API, risultati diversi; ricontrolla gli script ottimizzati.
tooling — interessa solo il flashing / gli strumenti host / la disponibilità delle schede.
Le modifiche sono raggruppate per impatto in quell’ordine. Se vuoi semplicemente portare il tuo codice, vai direttamente alla checklist di migrazione in fondo. Ogni hash di commit rimanda al relativo diff su GitHub. Nota: la rinomina del modulo sensor → csi in questa release non è incompatibile — sensor continua a funzionare come alias.
L’intervallo di alpha nel disegno ora è 0–255 (major)¶
L’argomento alpha di draw_image() e di ogni overlay che ne accetta uno (FIR, ToF, display, TV, MJPEG, tabelle alpha) usa ora un intervallo 0–255 invece di 0–256. Gli script che passavano 256 per la piena opacità, o che calcolavano l’alpha rispetto a 256, devono essere riscalati a 0–255.
Commit: 1f87b5bb6
Costanti ioctl FLIR Lepton rinominate (minor)¶
Tre costanti ioctl Lepton sono state abbreviate: 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. Gli esempi inclusi sono stati aggiornati.
Commit: 12582d54d
Cambiamenti nell’API di post-processing ML (minor)¶
ml.postprocessing è nuovo in questa release e la sua API è cambiata nel corso dello sviluppo: il parametro keyword score_threshold del costruttore yolo_v2_postprocess è stato rinominato in threshold e i risultati di post-processing vuoti ora restituiscono () invece di []. Il modello incluso yolov5_rgb_person è stato rinominato in yolo_v5_224_nano. ml.apps.MicroSpeech ora inoltra **kwargs arbitrari a audio.init() invece di un valore fisso gain_db=24.
Commit: d67bd1ad7, 979b4e8ee, b89b815b2, 6671d9df5, 5c2f4388c
AGAST è il rilevatore di angoli predefinito (behavior)¶
find_keypoints() ora usa AGAST invece di FAST come rilevatore di angoli predefinito su tutte le schede. Gli insiemi di keypoint (e quindi le corrispondenze dei descrittori) differiscono dalle release precedenti — ricontrolla le pipeline di keypoint ottimizzate. Lo streaming del frame buffer nell’IDE è ora limitato a 20 Hz per ridurre il carico USB.
Bootloader, schede e funzionalità rimosse (tooling)¶
Il vecchio bootloader CDC è stato sostituito da un nuovo bootloader DFU standard basato su TinyUSB su tutte le schede — il meccanismo di aggiornamento del firmware è cambiato; aggiorna di conseguenza il tuo workflow/strumenti di flashing. La scheda OpenMV Pro, la build standalone per Raspberry Pi Pico e la funzionalità di IDE remoto via WiFi-debug (wifidbg) sono state rimosse.
Commit: a03fc90d8, c2e616aae, af3ea774b, f8bca9799, 59a38a0d3, 7edeb4fbe, d58d77fa2
Checklist di migrazione¶
Per un porting pulito alla v4.6.0 il lavoro tipico è:
Riscalare ogni valore
alphadi disegno/overlay dall’intervallo 0–256 a 0–255 (la modifica dell’intervallo di alpha).Rinominare eventuali costanti ioctl FLIR Lepton nelle loro forme abbreviate (la rinomina degli ioctl Lepton).
Se hai usato i nuovi post-processor ML, passare da
score_thresholdathreshold, gestire un risultato vuoto()e aggiornare il nome del modelloyolo_v5_224_nano(le modifiche ML).Ricontrollare le pipeline basate su
find_keypoints()per la modifica del rilevatore AGAST (la modifica del rilevatore di angoli).Aggiornare il workflow di flashing del firmware per il nuovo bootloader DFU (le modifiche a bootloader/schede).