v4.8.0¶
v4.8.0 je veliko izdanje s novim značajkama. U središtu pozornosti: potpuno novi modul kamere csi zasnovan na klasama s podrškom za više kamera, ploča OpenMV N6 (STM32N6) s Neural-ART NPU-om, NPU pozadinski sustav za zaključivanje, RAW način rada događaja za GenX320 event-kameru, novi modul crc, reorganizirana biblioteka za naknadnu obradu ML-a te MicroPython 1.26. Također uklanja nekoliko zastarjelih API-ja — modul buzzer i upravljanje FLIR Leptonom iz modula fir — pa pročitajte popis nekompatibilnih promjena u nastavku.
Najvažnije¶
Novi modul kamere
csi. APIcsi.CSIzasnovan na klasama s podrškom za više istovremenih kamera, uveden uz zastarjeli modulsensor.OpenMV N6. Ploča STM32N6 s Neural-ART NPU-om, trostrukim međuspremnikom, Soft-CSI-jem i ToF modulom.
NPU zaključivanje. Pozadinski sustav ST Neural-ART (STAI) za hardverski ubrzano zaključivanje modela.
GenX320 način rada događaja. RAW izlaz događaja uz
draw_event_histogram()za prikaz event-kamere.Reorganizirana naknadna obrada ML-a — podpaketi proizvođača (
ml.postprocessing.ultralytics,mediapipe,edgeimpulse,darknet) s novim detektorima BlazeFace / BlazePalm te ključnih točaka ruku i lica.Novi modul
crc— hardverski ubrzani CRC-16 / CRC-32.MicroPython ažuriran na 1.26.0.
Nekompatibilna promjena: modul
buzzeri upravljanje Leptonom iz modulafirsu uklonjeni (Lepton je sada obična kamera). Pogledajte promjenu fir/Lepton i uklanjanje buzzera.
Nove značajke¶
Novi modul kamere
csi— objektcsi.CSIzasnovan na klasama s više istovremenih kamera (do tri na N6), neblokirajućom snimkom, prilagođenim veličinama sličice(w, h)te informativnimprint()/ repr prikazom. Uveden je uz zastarjeli modulsensor(nije izravna zamjena).crc—crc.crc16()icrc.crc32(), hardverski ubrzani uz softversku alternativu, na OpenMV N6 i AE3.image.Image.draw_image()je dobio ključnu riječtransform=(2-D float matricandarrayza afine/perspektivne deformacije, GPU-ubrzane na STM32 i Alif); ista transformacija dostupna je i pri pretvorbi slike.draw_event_histogram()— prikaz histograma event-kamere.GenX320 RAW način rada događaja —
csi.IOCTL_GENX320_SET_MODEscsi.GENX320_MODE_HISTO/csi.GENX320_MODE_EVENT,csi.IOCTL_GENX320_READ_EVENTS,csi.IOCTL_GENX320_CALIBRATE, konstantama tipa događaja te novim primjerima skripti.ML — pozadinski sustav za NPU zaključivanje ST Neural-ART (STAI);
ml.Modelje dobio ključnu riječpostprocess=(naknadni obrađivač sada se automatski pokreće unutarpredict()čak i bez povratnog poziva);ml.postprocessingje reorganiziran u podpakete proizvođača —ml.postprocessing.ultralytics(YoloV5,YoloV8),ml.postprocessing.darknet(YoloV2,YoloLC),ml.postprocessing.edgeimpulse(Fomo) iml.postprocessing.mediapipe(BlazeFace,BlazePalm,HandLandmarks,FaceLandmarks) — stari snake_case nazivi ostaju kao aliasi; dodani suml.utils.draw_keypoints()iml.utils.draw_skeleton(); ugrađeni ROMFS modeli su prošireni (BlazeFace, YOLO-LC, YOLOv8n, ključne točke dlana/ruke/lica).audio— MDF ulaz digitalnog mikrofona na STM32N6.Zaslon — SSD1351 OLED upravljački program i primjer;
SPIDisplaykontroleri mogu nadjačati svoje inicijalizacijske naredbe; konstruktor SPI zaslona dobio je ključne riječihmirror/vflip.Profiler na uređaju — SysTick + Armv8.1-M PMU brojači ciklusa/događaja s instrumentacijom na razini funkcija, čitljivi preko debug veze (
pyopenmvje dobio podršku za profiliranje i ELF simbole).Podrška za nove senzore — PixArt PS5520; FLIR BOSON na OpenMV H7 Plus; automatsko prepoznavanje GenX320.
Ostale promjene i poboljšanja¶
MicroPython ažuriran na 1.26.0.
Pokretanje kamere — takt senzora odvojen je od stanja CSI-ja, prepoznavanje kamere pri pokretanju je brže (prvo se isprobava najčešća konfiguracija), a ispravljen je zadani takt za OV7725 na OpenMV 3.
Kvaliteta slike — softverska ISP gama korekcija (Alif i STM32) i korekcija neispravnih piksela (STM32) sada su uključene po zadanom; senzori PAG7936 i PS5520 dobili su kontrole automatske ravnoteže bijele boje.
Performanse —
image.Image.to_ndarray()je ubrzan pomoću Helium SIMD-a, a FOMO naknadni obrađivač je vektoriziran pomoću ulab.Upravljački program za FLIR Lepton je prepisan kako bi sličice primao asinkrono u pozadini — rotacija/
transposesada radi, crtanje vrši bilinearno povećavanje, a resetiranje je brže.Propusnost snimanja — i.MX RT1062 CSI sada koristi potpuno DMA rasterećenje, a STM32 N6 ima hardverski GPU
draw_image().
Ispravci grešaka¶
Kamera i senzori:
Ispravljeni načini rada RGB565 / GRAYSCALE / BAYER / YUV422 na STM32 senzorima, PAJ6100 na OpenMV H7 / H7 Plus, OpenMV 2 QVGA RGB565 te N6 CSI mono / RGB-YUV konfiguracija; softverska testna kamera sada se resetira deterministički.
Automatska ravnoteža bijele boje više ne čini sliku zelenom pri niskim ili promjenjivim brzinama sličica (uzorkovanje svakih 100 sličica zamijenjeno je pokretnim prosjekom od 250 ms), a ispravljeno je treperenje svjetline kod PS5520.
Obrada slike:
Ispravljen je kvar pri iscrtavanju linija;
image.Image.flush()sada prazni JPEG međuspremnik slike nad kojom je pozvan;Normalizationsada primjenjuje srednju vrijednost/standardnu devijaciju na float ulaze; ispravljena je alokacija za slike iz datoteke.
Snimanje kamerom:
Ispravljeno je ozbiljno oštećenje slike pri ne-JPEG prijenosima (prekid sličice sada se omogućuje samo u JPEG načinu rada), podrška za JPEG način rada 3 te zaglavljivanja zbog veličine DMA linije i malog međuspremnika na STM32; VOSPI / Lepton sinkronizacija je pouzdanija, osobito na N6.
Razno:
omv.board_id()vraća ispravan UID na RT1060;YoloV2se više ne ruši kada se konstruira bez izričitih sidrišta.
Hardver i podrška za ploče¶
OpenMV N6 — STM32N6 s Neural-ART NPU-om, trostrukim međuspremnikom, SPI LCD/TV izlazom, Soft-CSI-jem, modulom
tofte ugrađenim ROMFS modelima.Arduino GIGA — MIPI DSI izlaz zaslona.
Novi senzori — PixArt PS5520; FLIR BOSON na OpenMV H7 Plus; automatsko prepoznavanje GenX320.
OpenMV Pure Thermal — FLIR Lepton je sada obični (sekundarni) senzor kamere.
Alif AE3 — softverska ISP gama korekcija, modul
crcte ispravci za SPI.
Nekompatibilne promjene API-ja¶
Korisniku vidljive nekompatibilne promjene API-ja između v4.7.0 i v4.8.0. Opseg: Python C-moduli u modules/ i Python biblioteke u scripts/libraries/.
Svaka promjena označena je svojim utjecajem:
major — većina skripti koje su je koristile treba izmjene.
minor — uski API; utječe samo na skripte koje su ga koristile.
behavior — isti API, drugačiji rezultati; ponovno provjerite podešene skripte.
tooling — utječe samo na alate na domaćinu / izgradnju iz izvornog koda.
Promjene su grupirane po utjecaju tim redoslijedom — prvo major, zatim minor, behavior i tooling. Ako samo želite prenijeti svoj kod, skočite na kontrolni popis za migraciju na kraju za sažet popis zadataka. Svaki hash commita povezuje na svoju razliku (diff) na GitHubu.
FLIR Lepton premješten izvan modula fir (major)¶
FLIR Lepton sada se vodi kao obični senzor kamere umjesto preko modula fir. Upravljanje Leptonom uklonjeno je iz fir: tip FIR_LEPTON te metode radiometric(), register_vsync_cb(), register_frame_cb(), get_frame_available() i trigger_ffc() više ne postoje. Snimajte Leptonom kao i bilo kojom drugom kamerom (pojavljuje se kao sekundarni senzor na OpenMV Pure Thermal); primjer za Pure Thermal prepisan je za novi API. Ne-Lepton fir senzori (Grid-EYE, MLX, AMG8833) su nepromijenjeni.
Modul buzzer uklonjen (minor)¶
Modul buzzer uklonjen je iz STM32 i i.MX RT portova. Umjesto toga upravljajte zujalicom pomoću machine.PWM; dodan je primjer zujalice za Pure Thermal koji koristi PWM.
omv.disable_fb() uklonjen (minor)¶
Funkcija omv.disable_fb() je uklonjena; protok međuspremnika slike sada se upravlja kroz API kamere. Zastarjele RPC desktop skripte koje su se na nju oslanjale također su uklonjene.
csi je nov — njegov API još nije zamrznut (minor)¶
Modul csi uveden je u v4.8.0 i njegov se API mijenjao tijekom izdanja: csi.fb() je uklonjen, a csi.CSI.snapshot() (image=...) sada zahtijeva promjenjivu sliku te u nju crta/skalira snimljenu sličicu umjesto da radi sirovu duboku kopiju. Rani korisnici novog modula trebali bi ponovno testirati; zastarjeli API sensor nije pogođen.
Način rada toka i close() kod image.ImageIO (minor)¶
image.ImageIO — argument mode sada prihvaća samo mala slova 'r' / 'w' (velika slova se odbijaju uz ažuriranu poruku o grešci), a otvaranje s 'w' uvijek skraćuje/ponovno stvara datoteku umjesto da čuva postojeći tok. ImageIO.close() je sada idempotentan (zatvaranje već zatvorenog toka više ne podiže iznimku) i vraća None umjesto objekta toka.
Povratna vrijednost BlazeFace / BlazePalm (minor)¶
Naknadni obrađivači BlazeFace i BlazePalm (novi u ovom izdanju) sada vraćaju jedan popis graničnih okvira umjesto cijelog popisa po klasama — pozivatelji indeksiraju rezultat izravno umjesto preko [0].
Commit: 75e16b573
Povratni poziv ML naknadnog obrađivača prima sirove tenzore (behavior)¶
Povratni poziv naknadne obrade predict() kod ml.Model sada prima sirove (kvantizirane) reference izlaznih tenzora umjesto unaprijed pretvorenih float ndarrayova — time se izbjegava iscrpljivanje memorije na velikim modelima. Ako se ne navede povratni poziv, i dalje se vraća float ndarray. Prilagođeni povratni pozivi moraju sami dekvantizirati tenzore (ugrađeni naknadni obrađivači to već rade).
Commit: 84e6ee650
Takt kamere odvojen od stanja CSI-ja (behavior)¶
Takt senzora sada je neovisan o stanju CSI-ja. set_clock / set_frequency ponovno konfigurira takt samo kada se tražena frekvencija razlikuje za više od tolerancije, a get_clk_frequency prima logičku vrijednost za vraćanje točne (umjesto nominalne) frekvencije. Zadani takt je 24 MHz na OpenMV N6 i AE3, pa nije potreban izričit set_clock() pri pokretanju. Skripte koje su mijenjale takt za vremenski osjetljiva snimanja trebale bi ponovno provjeriti svoje pretpostavke.
Commitovi: 2040a0a00, 09c0052df, 66ade9aea, 7e0a251bc, e6f43f3ca
USB debug protokol i firmware ciljevi (tooling)¶
Ništa od ovoga ne utječe na MicroPython skripte. Zastarjele USBDBG naredbe (SCRIPT_SAVE, TEMPLATE_SAVE, DESCRIPTOR_SAVE, ATTR_READ, ATTR_WRITE, TX_INPUT, SET_TIME) su uklonjene, a nepodržane naredbe iz starijih IDE-ova sada se prazne umjesto da ruše TinyUSB ploče pri povezivanju; zastarjeli STM32 UVC firmware cilj je uklonjen. Stari alati na domaćinu trebali bi se ažurirati; za detalje pogledajte povijest firmware repozitorija.
Kontrolni popis za migraciju¶
Za čist prijenos na v4.8.0 tipičan posao je:
Ako ste koristili FLIR Lepton preko
fir, prijeđite na snimanje njime kao senzorom kamere (promjena fir/Lepton).Zamijenite svako korištenje
buzzersmachine.PWM(uklanjanje buzzera).Uklonite pozive
omv.disable_fb()(uklanjanje omv.disable_fb()).Za
image.ImageIO: koristite mala slova'r'/'w'i očekujte da će'w'skratiti datoteku (promjena ImageIO).Za prilagođene povratne pozive ML naknadne obrade: sami dekvantizirajte sirove reference tenzora ili se oslonite na zadani float put (promjena povratnog poziva).
Ponovno provjerite svaku skriptu koja je upravljala taktom senzora za vremenski osjetljiva snimanja (promjena takta).