v4.8.0¶
v4.8.0 je velké vydání plné nových funkcí. Mezi hlavní novinky patří: zcela nový třídně založený modul kamery csi s podporou více kamer, deska OpenMV N6 (STM32N6) s NPU Neural-ART, backend pro NPU inference, RAW režim událostí pro event kameru GenX320, nový modul crc, reorganizovaná knihovna pro ML post-processing a MicroPython 1.26. Odstraňuje také několik starších API — modul buzzer a ovládání FLIR Lepton z modulu fir — proto si přečtěte níže uvedené nekompatibilní změny.
Hlavní novinky¶
Nový modul kamery
csi. Třídně založené APIcsi.CSIs podporou více současně běžících kamer, zavedené vedle staršího modulusensor.OpenMV N6. Deska STM32N6 s NPU Neural-ART, trojitým bufferováním, Soft-CSI a modulem ToF.
NPU inference. Backend ST Neural-ART (STAI) pro hardwarově akcelerovanou inference modelů.
Režim událostí GenX320. RAW výstup událostí spolu s
draw_event_histogram()pro vykreslování z event kamery.Reorganizovaný ML post-processing — subbalíčky podle dodavatelů (
ml.postprocessing.ultralytics,mediapipe,edgeimpulse,darknet) s novými detektory BlazeFace / BlazePalm a detektory klíčových bodů rukou a obličeje.Nový modul
crc— hardwarově akcelerovaný CRC-16 / CRC-32.MicroPython aktualizován na 1.26.0.
Nekompatibilní změna: modul
buzzera ovládání Lepton z modulufirbyly odstraněny (Lepton je nyní běžná kamera). Viz změna fir/Lepton a odstranění buzzeru.
Nové funkce¶
Nový modul kamery
csi— třídně založený objektcsi.CSIs více současně běžícími kamerami (až tři na N6), neblokujícím snímáním, vlastními rozměry snímku(w, h)a informativním výpisemprint()/ repr. Je zaveden vedle staršího modulusensor(nejde o přímou náhradu).crc—crc.crc16()acrc.crc32(), hardwarově akcelerované se softwarovou zálohou, na OpenMV N6 a AE3.image.Image.draw_image()získala klíčové slovotransform=(2-D float maticendarraypro afinní/perspektivní transformace, GPU akcelerovaná na STM32 a Alif); stejná transformace je dostupná i při konverzi obrazu.draw_event_histogram()— vykreslení histogramů z event kamery.RAW režim událostí GenX320 —
csi.IOCTL_GENX320_SET_MODEscsi.GENX320_MODE_HISTO/csi.GENX320_MODE_EVENT,csi.IOCTL_GENX320_READ_EVENTS,csi.IOCTL_GENX320_CALIBRATE, konstanty typů událostí a nové ukázkové skripty.ML — NPU inference backend ST Neural-ART (STAI);
ml.Modelzískala klíčové slovopostprocess=(post-procesor nyní běží automaticky uvnitřpredict()i bez callbacku);ml.postprocessingbyl reorganizován do subbalíčků podle dodavatelů —ml.postprocessing.ultralytics(YoloV5,YoloV8),ml.postprocessing.darknet(YoloV2,YoloLC),ml.postprocessing.edgeimpulse(Fomo) aml.postprocessing.mediapipe(BlazeFace,BlazePalm,HandLandmarks,FaceLandmarks) — staré názvy ve snake_case zůstávají jako aliasy; byly přidányml.utils.draw_keypoints()aml.utils.draw_skeleton(); přibyly přibalené modely v ROMFS (BlazeFace, YOLO-LC, YOLOv8n, klíčové body dlaně/ruky/obličeje).audio— vstup z digitálního mikrofonu MDF na STM32N6.Displej — ovladač OLED SSD1351 a ukázka; kontroléry
SPIDisplaymohou přepsat své inicializační příkazy; konstruktor SPI displeje získal klíčová slovahmirror/vflip.Profiler na zařízení — čítače cyklů/událostí SysTick + Armv8.1-M PMU s instrumentací na úrovni funkcí, čitelné přes ladicí linku (
pyopenmvzískal podporu profilování a ELF symbolů).Podpora nových senzorů — PixArt PS5520; FLIR BOSON na OpenMV H7 Plus; automatická detekce GenX320.
Ostatní změny a vylepšení¶
MicroPython aktualizován na 1.26.0.
Spouštění kamery — hodiny senzoru byly odděleny od stavu CSI, detekce kamery při startu je rychlejší (nejběžnější konfigurace se zkouší jako první) a výchozí hodiny OV7725 na OpenMV 3 byly opraveny.
Kvalita obrazu — softwarová ISP gama korekce (Alif a STM32) a korekce vadných pixelů (STM32) jsou ve výchozím stavu zapnuty; senzory PAG7936 a PS5520 získaly ovládání automatického vyvážení bílé.
Výkon —
image.Image.to_ndarray()je akcelerována pomocí Helium SIMD a FOMO post-procesor byl vektorizován pomocí ulab.Přepsaný ovladač FLIR Lepton pro asynchronní příjem snímků na pozadí — rotace/
transposenyní funguje, kreslení provádí bilineární zvětšení a reset je rychlejší.Propustnost snímání — i.MX RT1062 CSI nyní využívá plný DMA offload a STM32 N6 má hardwarově-GPU
draw_image().
Opravy chyb¶
Kamera a senzory:
Opraveny režimy RGB565 / GRAYSCALE / BAYER / YUV422 napříč senzory STM32, PAJ6100 na OpenMV H7 / H7 Plus, OpenMV 2 QVGA RGB565 a konfigurace N6 CSI mono / RGB-YUV; softwarová testovací kamera se nyní resetuje deterministicky.
Automatické vyvážení bílé již nezbarvuje obraz dozelena při nízkých nebo proměnlivých snímkových frekvencích (klouzavý průměr za 250 ms nahrazuje vzorkování každých 100 snímků) a je opraveno kolísání jasu PS5520.
Zpracování obrazu:
Opravena chyba vykreslování čar;
image.Image.flush()nyní vyprazdňuje JPEG buffer obrazu, na kterém byla zavolána;Normalizationnyní aplikuje střední hodnotu/směrodatnou odchylku na float vstupy; opravena alokace obrazu načteného ze souboru.
Snímání kamerou:
Opraveno závažné poškození obrazu u přenosů jiných než JPEG (přerušení snímku je nyní povoleno pouze v JPEG režimu), podpora JPEG režimu 3 a zaseknutí kvůli velikosti DMA řádku a malému bufferu na STM32; synchronizace VOSPI / Lepton je spolehlivější, zejména na N6.
Různé:
omv.board_id()vrací správné UID na RT1060;YoloV2již nehavaruje, je-li vytvořen bez explicitních kotev.
Hardware a podpora desek¶
OpenMV N6 — STM32N6 s NPU Neural-ART, trojitým bufferováním, výstupem SPI LCD/TV, Soft-CSI, modulem
tofa přibalenými modely v ROMFS.Arduino GIGA — výstup na displej MIPI DSI.
Nové senzory — PixArt PS5520; FLIR BOSON na OpenMV H7 Plus; automatická detekce GenX320.
OpenMV Pure Thermal — FLIR Lepton je nyní běžný (sekundární) senzor kamery.
Alif AE3 — softwarová ISP gama korekce, modul
crca opravy SPI.
Nekompatibilní změny API¶
Změny API viditelné pro uživatele mezi v4.7.0 a v4.8.0. Rozsah: Python C-moduly v modules/ a Python knihovny v scripts/libraries/.
Každá změna je označena svým dopadem:
major — většina skriptů, které ji používaly, vyžaduje úpravy.
minor — úzké API; ovlivňuje pouze skripty, které ho používaly.
behavior — stejné API, jiné výsledky; znovu zkontrolujte vyladěné skripty.
tooling — ovlivňuje pouze hostitelské nástroje / sestavování ze zdroje.
Změny jsou seskupeny podle dopadu v tomto pořadí — nejprve major, poté minor, behavior a tooling. Pokud chcete jen přenést svůj kód, přejděte na kontrolní seznam migrace na konci pro stručný seznam úkolů. Každý hash commitu odkazuje na svůj diff na GitHubu.
FLIR Lepton přesunut mimo modul fir (major)¶
FLIR Lepton je nyní řízen jako běžný senzor kamery namísto přes modul fir. Ovládání Lepton bylo z fir odstraněno: typ FIR_LEPTON a metody radiometric(), register_vsync_cb(), register_frame_cb(), get_frame_available() a trigger_ffc() jsou pryč. Snímejte Lepton jako jakoukoli jinou kameru (na OpenMV Pure Thermal se objevuje jako sekundární senzor); ukázka Pure Thermal byla přepsána do nového API. Senzory fir jiné než Lepton (Grid-EYE, MLX, AMG8833) zůstávají beze změny.
Modul buzzer odstraněn (minor)¶
Modul buzzer byl odstraněn z portů STM32 a i.MX RT. Místo něj ovládejte bzučák pomocí machine.PWM; byla přidána ukázka bzučáku pro Pure Thermal využívající PWM.
omv.disable_fb() odstraněno (minor)¶
Funkce omv.disable_fb() byla odstraněna; streamování snímkového bufferu se nyní řídí přes API kamery. Starší RPC skripty pro desktop, které se na ni spoléhaly, byly také odstraněny.
csi je nový — jeho API ještě není zmrazené (minor)¶
Modul csi je zaveden ve v4.8.0 a jeho API se během vydání vyvíjelo: csi.fb() bylo odstraněno a csi.CSI.snapshot() (image=...) nyní vyžaduje měnitelný obraz a zachycený snímek do něj vykreslí/zmenší namísto provedení surové hluboké kopie. Časní uživatelé nového modulu by měli znovu otestovat; starší API sensor zůstává nedotčeno.
Režim streamu image.ImageIO a close() (minor)¶
image.ImageIO — argument mode nyní přijímá pouze malá písmena 'r' / 'w' (velká písmena jsou odmítnuta s aktualizovanou chybovou zprávou) a otevření s 'w' vždy zkrátí/znovu vytvoří soubor namísto zachování existujícího streamu. ImageIO.close() je nyní idempotentní (uzavření již uzavřeného streamu již nevyvolá výjimku) a vrací None namísto objektu streamu.
Návratová hodnota BlazeFace / BlazePalm (minor)¶
Post-procesory BlazeFace a BlazePalm (nové v tomto vydání) nyní vracejí jediný seznam ohraničujících rámečků namísto úplného seznamu po třídách — volající indexují výsledek přímo, nikoli přes [0].
Commit: 75e16b573
Callback ML post-procesoru přijímá surové tenzory (behavior)¶
Callback post-processu metody predict() třídy ml.Model nyní přijímá surové (kvantované) reference výstupních tenzorů namísto předem konvertovaných float ndarrayů — tím se předchází vyčerpání paměti u velkých modelů. Pokud není zadán žádný callback, stále se vrací float ndarray. Vlastní callbacky musí tenzory samy dekvantovat (vestavěné post-procesory to již dělají).
Commit: 84e6ee650
Hodiny kamery odděleny od stavu CSI (behavior)¶
Hodiny senzoru jsou nyní nezávislé na stavu CSI. set_clock / set_frequency překonfigurují hodiny pouze tehdy, když se požadovaná frekvence liší o více než toleranci, a get_clk_frequency přijímá boolean pro vrácení přesné (nikoli nominální) frekvence. Výchozí hodiny jsou 24 MHz na OpenMV N6 a AE3, takže při startu není potřeba žádné explicitní set_clock(). Skripty, které přepínaly hodiny pro časově citlivá snímání, by si měly znovu ověřit své předpoklady.
Commity: 2040a0a00, 09c0052df, 66ade9aea, 7e0a251bc, e6f43f3ca
USB ladicí protokol a cíle firmwaru (tooling)¶
Nic z toho neovlivňuje skripty MicroPython. Zastaralé příkazy USBDBG (SCRIPT_SAVE, TEMPLATE_SAVE, DESCRIPTOR_SAVE, ATTR_READ, ATTR_WRITE, TX_INPUT, SET_TIME) byly odstraněny a nepodporované příkazy ze starších IDE jsou nyní zahozeny namísto pádu desek s TinyUSB při připojení; starší cíl firmwaru STM32 UVC byl odstraněn. Staré hostitelské nástroje by se měly aktualizovat; podrobnosti viz historie repozitáře firmwaru.
Kontrolní seznam migrace¶
Pro čistý přechod na v4.8.0 je typická práce následující:
Pokud jste používali FLIR Lepton přes
fir, přejděte na jeho snímání jako senzoru kamery (změna fir/Lepton).Nahraďte jakékoli použití
buzzertřídoumachine.PWM(odstranění buzzeru).Odstraňte volání
omv.disable_fb()(odstranění omv.disable_fb()).Pro
image.ImageIO: používejte malá písmena'r'/'w'a počítejte s tím, že'w'zkrátí soubor (změna ImageIO).Pro vlastní callbacky ML post-processu: dekvantujte surové reference tenzorů sami, nebo se spolehněte na výchozí float cestu (změna callbacku).
Znovu zkontrolujte jakýkoli skript, který ovládal hodiny senzoru pro časově citlivá snímání (změna hodin).