v4.6.0¶
v4.6.0 est une version majeure apportant de nombreuses fonctionnalités. À retenir : le module de la caméra a été renommé de sensor en csi (avec un alias sensor rétrocompatible), un nouveau module ml.postprocessing, la prise en charge du capteur événementiel Prophesee GenX320, du PAG7936 et des caméras thermiques FLIR Boson, un nouveau programme d’amorçage DFU basé sur TinyUSB, l’accélération GPU Nema et MicroPython 1.24. Elle modifie également la plage alpha du dessin, alors lisez les changements incompatibles ci-dessous.
Points forts¶
sensorest désormais aussicsi— le module de la caméra a été renommé encsi;sensordemeure comme alias rétrocompatible (aucune modification de code requise pour l’instant).Nouveau module
ml.postprocessing—fomo_postprocess,yolo_v2_postprocess,yolo_v5_postprocess.Nouveaux capteurs — caméra événementielle Prophesee GenX320, PAG7936 et caméra thermique FLIR Boson 320/640.
Nouveau programme d’amorçage DFU — un programme d’amorçage DFU standard basé sur TinyUSB remplace l’ancien programme d’amorçage CDC sur toutes les cartes.
GPU Nema — graphismes 2D/vectoriels accélérés sur STM32.
MicroPython mis à jour vers 1.24.0.
Incompatibilité : la plage
alphadu dessin est passée de 0–256 à 0–255 (voir le changement de plage alpha).
Nouvelles fonctionnalités¶
ml.postprocessing— un nouveau module décodant la sortie des modèles : un décodeur FOMO (fomo_postprocess,find_blobs+ NMS,thresholdconfigurable) etyolo_v2_postprocess/yolo_v5_postprocess(avecthreshold,anchors,nms_threshold,nms_sigma).Visualisation des caméras événementielles — nouvelles méthodes
Image.to_evt_dark()/Image.to_evt_light()et palettes de couleursPALETTE_EVT_DARK/PALETTE_EVT_LIGHT.Visualisation de la profondeur — nouvelle méthode
Image.to_depth()et palette de couleursPALETTE_DEPTH(cartes équipées d’un capteur ToF).Introspection du capteur — nouvel ioctl
IOCTL_GET_RGB_STATSrenvoyant un tuple de statistiques de canaux(R, Gb, Gr, B).Préréglages de polarisation GenX320 — nouvel ioctl
IOCTL_GENX320_SET_BIASESavec les préréglagesGENX320_BIASES_DEFAULT/LOW_LIGHT/ACTIVE_MARKER/LOW_NOISE/HIGH_SPEED.omv.debug_mode()— une nouvelle fonction pour vérifier si l’interface de débogage USB est active.GPU Nema — intégration du pilote NemaGFX/NemaVG du Cortex-M55 sur STM32, avec accélération GPU en place (« cut-through ») pour
draw_image.PAG7936 — ajout de la sortie en mire de couleurs, de l’exposition automatique / du gain automatique, de la mise en veille et du mode MIPI.
Autres changements et améliorations¶
MicroPython mis à jour vers 1.24.0 ; ulab mis à jour vers 6.7.3 (ajout de
keepdims).Script de démarrage commun — STM32 / i.MX RT / RP2 partagent désormais un
_boot.pyqui crée automatiquement le système de fichiers de la mémoire flash/SD avec unmain.pyet unREADME.txtpar défaut et libère les variables globales temporaires de démarrage.Travaux préparatoires pour le STM32N6 — prise en charge de base du STM32N6, un pilote XSPI, un pilote MPU commun, ainsi que la signature du micrologiciel et du programme d’amorçage sur STM32.
Machine virtuelle à computed-goto — activée sur STM32 et nRF pour accélérer l’interpréteur.
Corrections de bogues¶
Caméra et capteurs :
Correction du calcul PCLK/exposition de l’OV5640 (deux voies MIPI, table de diviseurs corrigée).
La variante Bayer-CFA du MT9V0xx accepte désormais RGB565/BAYER/GRAYSCALE et produit des données Bayer brutes correctes au lieu de générer une erreur.
Activation de la correction de l’ombrage de l’objectif du PAG7936 et correction du décalage des images HD ;
set_framerate()est désormais plafonné par résolution.Correction de la capture thermique FLIR Lepton sur l’i.MX RT1060 (CPOL/CPHA VoSPI corrigés), et les captures Lepton renvoient désormais des codes d’erreur spécifiques.
Correction de l’arrondi de fréquence du GenX320.
Traitement d’image :
Correction d’une corruption de mémoire dans
to_ndarray()sur les images en niveaux de gris.Correction de la prédiction des limites du dématriçage lors de la conversion Bayer→RGB/niveaux de gris.
Correction de
transposededraw_image()sur les cartes sans SDRAM (tampon par blocs).Correction de la gestion des arguments booléens dans
Image.binary()et de l’optionload_to_fbdeml.Model.
Système :
Correction de la configuration des broches SPI RX uniquement / TX uniquement sur STM32 et i.MX RT.
Déplacement des tampons DMA Ethernet du Portenta H7 vers la SRAM3 afin que l’Ethernet fonctionne.
Correction d’un caractère perdu dans la sortie texte du canal de débogage via USB ; arrondi à la hausse des tailles d’allocation dynamique ML pour éviter les tampons de modèle sous-dimensionnés.
Matériel et prise en charge des cartes¶
Capteur de vision événementielle Prophesee GenX320 (STM32F7 + i.MX RT1060).
Capteur PAG7936 (avec mode MIPI).
Caméras thermiques FLIR Boson 320/640 (pilote IDD 4).
Accélération GPU Nema sur STM32.
Travaux préparatoires programme d’amorçage/XSPI pour le STM32N6.
VL53L5CX — ajout de la prise en charge de la broche d’activation d’alimentation.
Changements d’API incompatibles¶
Ruptures d’API visibles par l’utilisateur entre v4.5.9 et v4.6.0. Portée : les modules C Python dans modules/ et les bibliothèques Python dans scripts/libraries/.
Chaque changement est étiqueté selon son impact :
majeur — la plupart des scripts qui l’utilisaient doivent être modifiés.
mineur — API restreinte ; n’affecte que les scripts qui l’utilisaient.
comportement — même API, résultats différents ; revérifiez les scripts ajustés.
outillage — n’affecte que le flashage / les outils hôtes / la disponibilité des cartes.
Les changements sont regroupés par impact dans cet ordre. Si vous voulez simplement porter votre code, passez directement à la liste de contrôle de migration à la fin. Chaque hachage de commit renvoie à son diff sur GitHub. Remarque : le renommage du module sensor → csi dans cette version n’est pas incompatible — sensor fonctionne toujours comme alias.
La plage alpha du dessin est désormais 0–255 (majeur)¶
L’argument alpha de draw_image() et de chaque superposition qui en accepte un (FIR, ToF, écran, TV, MJPEG, tables alpha) utilise désormais une plage 0–255 au lieu de 0–256. Les scripts qui passaient 256 pour une opacité totale, ou calculaient l’alpha par rapport à 256, doivent être remis à l’échelle sur 0–255.
Commit : 1f87b5bb6
Constantes ioctl du FLIR Lepton renommées (mineur)¶
Trois constantes ioctl du Lepton ont été raccourcies : 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. Les exemples fournis ont été mis à jour.
Commit : 12582d54d
Remaniement de l’API de post-traitement ML (mineur)¶
ml.postprocessing est nouveau dans cette version et son API a évolué en cours de route : le mot-clé score_threshold du constructeur yolo_v2_postprocess a été renommé en threshold, et les résultats de post-traitement vides renvoient désormais () au lieu de []. Le modèle fourni yolov5_rgb_person a été renommé en yolo_v5_224_nano. ml.apps.MicroSpeech transmet désormais des **kwargs arbitraires à audio.init() au lieu d’un gain_db=24 fixe.
Commits : d67bd1ad7, 979b4e8ee, b89b815b2, 6671d9df5, 5c2f4388c
AGAST est le détecteur de coins par défaut (comportement)¶
find_keypoints() utilise désormais AGAST au lieu de FAST comme détecteur de coins par défaut sur toutes les cartes. Les ensembles de points clés (et donc les correspondances de descripteurs) diffèrent des versions précédentes — revérifiez les pipelines de points clés ajustés. La diffusion du tampon d’image de l’IDE est également désormais plafonnée à 20 Hz pour réduire la charge USB.
Programme d’amorçage, cartes et fonctionnalités supprimées (outillage)¶
L’ancien programme d’amorçage CDC a été remplacé par un nouveau programme d’amorçage DFU standard basé sur TinyUSB sur toutes les cartes — le mécanisme de mise à jour du micrologiciel a changé ; adaptez votre flux de travail/outillage de flashage en conséquence. La carte OpenMV Pro, la version autonome Raspberry Pi Pico et la fonctionnalité d’IDE distant en débogage WiFi (wifidbg) ont été supprimées.
Commits : a03fc90d8, c2e616aae, af3ea774b, f8bca9799, 59a38a0d3, 7edeb4fbe, d58d77fa2
Liste de contrôle de migration¶
Pour un portage propre vers v4.6.0, le travail habituel est :
Remettre à l’échelle chaque valeur
alphade dessin/superposition de la plage 0–256 vers 0–255 (le changement de plage alpha).Renommer toute constante ioctl du FLIR Lepton vers sa forme raccourcie (le renommage des ioctl Lepton).
Si vous avez utilisé les nouveaux post-traitements ML, remplacez
score_thresholdparthreshold, gérez un résultat vide()et mettez à jour le nom de modèleyolo_v5_224_nano(les changements ML).Revérifier les pipelines basés sur
find_keypoints()pour le changement de détecteur AGAST (le changement de détecteur de coins).Mettre à jour votre flux de travail de flashage du micrologiciel pour le nouveau programme d’amorçage DFU (les changements de programme d’amorçage/cartes).