v4.8.0¶
A v4.8.0 egy jelentős funkciókat hozó kiadás. A főbb újdonságai: egy vadonatúj, osztályalapú csi kameramodul többkamerás támogatással, az OpenMV N6 (STM32N6) panel Neural-ART NPU-val, egy NPU következtetési háttérprogram, a GenX320 eseménykamera RAW eseménymódja, egy új crc modul, egy átszervezett ML utófeldolgozó könyvtár, valamint a MicroPython 1.26. Emellett eltávolít néhány örökölt API-t — a buzzer modult és a fir modul FLIR Lepton vezérlését —, ezért olvasd el az alábbi töréses változásokat.
Kiemelt újdonságok¶
Új
csikameramodul. Egy osztályalapúcsi.CSIAPI több egyidejű kamera támogatásával, amelyet az örököltsensormodul mellett vezettünk be.OpenMV N6. Az STM32N6 panel Neural-ART NPU-val, hármas pufferezéssel, Soft-CSI-vel és egy ToF modullal.
NPU következtetés. Egy ST Neural-ART (STAI) háttérprogram a hardveresen gyorsított modellkövetkeztetéshez.
GenX320 eseménymód. RAW eseménykimenet, valamint a
draw_event_histogram()az eseménykamera megjelenítéséhez.Átszervezett ML utófeldolgozás — gyártói alcsomagok (
ml.postprocessing.ultralytics,mediapipe,edgeimpulse,darknet) új BlazeFace / BlazePalm / kéz- és arc-tereppont-detektorokkal.Új
crcmodul — hardveresen gyorsított CRC-16 / CRC-32.A MicroPython 1.26.0-ra frissült.
Töréses: a
buzzermodult és afirmodul Lepton vezérlését eltávolítottuk (a Lepton mostantól egy hagyományos kamera). Lásd a fir/Lepton változást és a buzzer eltávolítását.
Új funkciók¶
Az új
csikameramodul — egy osztályalapúcsi.CSIobjektum több egyidejű kamerával (az N6-on legfeljebb hárommal), nem blokkoló pillanatképpel, egyéni(w, h)képkockaméretekkel, valamint egy informatívprint()/ repr kimenettel. Az örököltsensormodul mellett vezettük be (nem közvetlen helyettesítő).crc—crc.crc16()éscrc.crc32(), hardveresen gyorsítva szoftveres tartalékkal, az OpenMV N6-on és AE3-on.A
image.Image.draw_image()kapott egytransform=kulcsszót (egy 2D-s lebegőpontosndarraymátrix affin/perspektivikus torzításokhoz, GPU-val gyorsítva STM32-n és Alifen); ugyanez a transzformáció elérhető a képkonvertálásban is.draw_event_histogram()— eseménykamera-hisztogramok megjelenítése.GenX320 RAW eseménymód —
csi.IOCTL_GENX320_SET_MODEacsi.GENX320_MODE_HISTO/csi.GENX320_MODE_EVENTértékekkel,csi.IOCTL_GENX320_READ_EVENTS,csi.IOCTL_GENX320_CALIBRATE, eseménytípus-konstansok és új példaszkriptek.ML — egy ST Neural-ART (STAI) NPU következtetési háttérprogram; a
ml.Modelkapott egypostprocess=kulcsszót (az utófeldolgozó mostantól automatikusan lefut apredict()belsejében, akár visszahívás nélkül is); aml.postprocessinggyártói alcsomagokba lett átszervezve —ml.postprocessing.ultralytics(YoloV5,YoloV8),ml.postprocessing.darknet(YoloV2,YoloLC),ml.postprocessing.edgeimpulse(Fomo) ésml.postprocessing.mediapipe(BlazeFace,BlazePalm,HandLandmarks,FaceLandmarks) — a régi snake_case nevek aliasként megmaradnak; bekerült aml.utils.draw_keypoints()és aml.utils.draw_skeleton(); a beépített ROMFS modellek köre bővült (BlazeFace, YOLO-LC, YOLOv8n, tenyér-/kéz-/arc-tereppontok).audio— MDF digitális mikrofon bemenet az STM32N6-on.Kijelző — egy SSD1351 OLED meghajtó és példa; a
SPIDisplayvezérlők felülbírálhatják az init parancsaikat; az SPI kijelző konstruktora kapotthmirror/vflipkulcsszavakat.Eszközön futó profiler — SysTick + Armv8.1-M PMU ciklus-/eseményszámlálók függvényszintű műszerezéssel, a hibakeresési kapcsolaton keresztül olvashatóan (a
pyopenmvprofilozási és ELF-szimbólum-támogatást kapott).Új érzékelő-támogatás — PixArt PS5520; FLIR BOSON az OpenMV H7 Plus-on; GenX320 automatikus felismerés.
Egyéb változások és fejlesztések¶
A MicroPython 1.26.0-ra frissült.
Kamera indítása — az érzékelő órajele le lett választva a CSI állapotról, a kamera felismerése indításkor gyorsabb (a leggyakoribb konfigurációt próbálja először), és az OpenMV 3 OV7725 alapértelmezett órajele javítva lett.
Képminőség — a szoftveres ISP gamma-korrekció (Alif és STM32) és a hibás képpont korrekció (STM32) alapértelmezetten be van kapcsolva; a PAG7936 és PS5520 érzékelők automatikus fehéregyensúly-vezérlést kaptak.
Teljesítmény — a
image.Image.to_ndarray()Helium SIMD-del gyorsítva van, a FOMO utófeldolgozó pedig ulab segítségével vektorizálva lett.A FLIR Lepton meghajtó újraírva, hogy a képkockákat aszinkron módon, a háttérben fogadja — a forgatás/
transposemostantól működik, a rajzolás bilineárisan felskáláz, és a visszaállítás gyorsabb.Rögzítési átviteli teljesítmény — az i.MX RT1062 CSI mostantól teljes DMA-tehermentesítést használ, az STM32 N6 pedig hardveres GPU-s
draw_image()műveletet kapott.
Hibajavítások¶
Kamera és érzékelők:
Javítva lettek az RGB565 / GRAYSCALE / BAYER / YUV422 módok az STM32 érzékelőkön, a PAJ6100 az OpenMV H7 / H7 Plus-on, az OpenMV 2 QVGA RGB565, valamint az N6 CSI mono / RGB-YUV konfiguráció; a szoftveres tesztkamera mostantól determinisztikusan áll vissza.
Az automatikus fehéregyensúly többé nem teszi zölddé a képet alacsony vagy változó képkockasebesség mellett (egy 250 ms-os mozgóátlag váltja fel a 100 képkockánkénti mintavételezést), és a PS5520 fényerő-villódzása is javítva lett.
Képfeldolgozás:
Javítva lett egy vonalrajzolási megjelenítési hiba; a
image.Image.flush()mostantól annak a képnek a JPEG pufferét üríti ki, amelyen meghívták; aNormalizationmostantól lebegőpontos bemenetekre is alkalmazza az átlagot/szórást; a fájlból betöltött kép memóriafoglalása javítva lett.
Kamerás rögzítés:
Javítva lett egy súlyos képromlás a nem JPEG átviteleknél (a képkocka-megszakítás mostantól csak JPEG módban van engedélyezve), a JPEG 3-as mód támogatása, valamint a DMA sorméret- és kis-puffer-fagyások az STM32-n; a VOSPI / Lepton szinkronizáció megbízhatóbb lett, különösen az N6-on.
Vegyes:
Az
omv.board_id()a helyes UID-t adja vissza az RT1060-on; aYoloV2többé nem omlik össze, ha explicit horgonyok nélkül hozzák létre.
Hardver- és paneltámogatás¶
OpenMV N6 — STM32N6 Neural-ART NPU-val, hármas pufferezéssel, SPI LCD/TV kimenettel, Soft-CSI-vel, a
tofmodullal és beépített ROMFS modellekkel.Arduino GIGA — MIPI DSI kijelzőkimenet.
Új érzékelők — PixArt PS5520; FLIR BOSON az OpenMV H7 Plus-on; GenX320 automatikus felismerés.
OpenMV Pure Thermal — a FLIR Lepton mostantól egy hagyományos (másodlagos) kamera-érzékelő.
Alif AE3 — szoftveres ISP gamma-korrekció, a
crcmodul és SPI javítások.
Töréses API-változások¶
A felhasználó számára látható API-törések a v4.7.0 és a v4.8.0 között. Hatókör: a modules/ mappában lévő Python C-modulok és a scripts/libraries/ mappában lévő Python könyvtárak.
Minden változás meg van jelölve a hatásával:
major — a legtöbb szkript, amely használta, módosítást igényel.
minor — szűk API; csak az azt használó szkripteket érinti.
behavior — azonos API, eltérő eredmények; ellenőrizd újra a finomhangolt szkripteket.
tooling — csak a gazda eszközöket / a forrásból fordítást érinti.
A változások ebben a sorrendben vannak hatás szerint csoportosítva — előbb a major, majd a minor, behavior és tooling. Ha csak átültetnéd a kódodat, ugorj a végén lévő migrációs ellenőrzőlistára egy tömör teendőlistáért. Minden commit-hash a GitHubon lévő diffjére mutat.
A FLIR Lepton elköltözött a fir modulból (major)¶
A FLIR Lepton mostantól hagyományos kamera-érzékelőként van vezérelve a fir modul helyett. A Lepton vezérlése eltávolításra került a fir modulból: a FIR_LEPTON típus, valamint a radiometric(), register_vsync_cb(), register_frame_cb(), get_frame_available() és trigger_ffc() metódusok megszűntek. A Leptont bármely más kamerához hasonlóan rögzítsd (az OpenMV Pure Thermal-on másodlagos érzékelőként jelenik meg); a Pure Thermal példa át lett írva az új API-ra. A nem Lepton fir érzékelők (Grid-EYE, MLX, AMG8833) változatlanok.
A buzzer modul eltávolítva (minor)¶
A buzzer modul eltávolításra került az STM32 és az i.MX RT portokról. Helyette a machine.PWM osztállyal vezéreld a hangjelzőt; egy PWM-et használó Pure Thermal buzzer példa is bekerült.
Az omv.disable_fb() eltávolítva (minor)¶
Az omv.disable_fb() függvény eltávolításra került; a képkocka-puffer streamelése mostantól a kamera API-n keresztül vezérelhető. Az erre támaszkodó örökölt RPC asztali szkriptek szintén eltávolításra kerültek.
A csi új — az API-ja még nincs befagyasztva (minor)¶
A csi modul a v4.8.0-ban lett bevezetve, és az API-ja a kiadás során fejlődött: a csi.fb() eltávolításra került, a csi.CSI.snapshot() (image=...) pedig mostantól egy módosítható képet igényel, és a rögzített képkockát abba rajzolja/skálázza, ahelyett, hogy nyers mélymásolatot készítene. Az új modul korai felhasználóinak újra kell tesztelniük; az örökölt sensor API-t ez nem érinti.
Az image.ImageIO stream mód és a close() (minor)¶
image.ImageIO — a mode argumentum mostantól csak kisbetűs 'r' / 'w' értéket fogad el (a nagybetűs változat elutasításra kerül egy frissített hibaüzenettel), és a 'w' móddal való megnyitás mindig csonkolja/újra létrehozza a fájlt, ahelyett, hogy megőrizné a meglévő streamet. Az ImageIO.close() mostantól idempotens (egy már lezárt stream lezárása többé nem vált ki hibát), és None értéket ad vissza a stream objektum helyett.
A BlazeFace / BlazePalm visszatérési értéke (minor)¶
A BlazeFace és BlazePalm utófeldolgozók (ebben a kiadásban újak) mostantól egyetlen határoló doboz listát adnak vissza a teljes, osztályonkénti lista helyett — a hívók közvetlenül indexelik az eredményt a [0] helyett.
Commit: 75e16b573
Az ML utófeldolgozó visszahívása nyers tenzorokat kap (behavior)¶
Egy ml.Model predict() utófeldolgozó visszahívása mostantól a nyers (kvantált) kimeneti tenzorra mutató hivatkozásokat kapja meg az előre konvertált lebegőpontos ndarray-ok helyett — ez elkerüli a memória kimerülését nagy modelleknél. Ha nincs megadva visszahívás, a lebegőpontos ndarray továbbra is visszatér. Az egyéni visszahívásoknak maguknak kell dekvantálniuk a tenzorokat (a beépített utófeldolgozók ezt már megteszik).
Commit: 84e6ee650
A kamera órajele leválasztva a CSI állapotról (behavior)¶
Az érzékelő órajele mostantól független a CSI állapotától. A set_clock / set_frequency csak akkor konfigurálja újra az órajelet, ha a kért frekvencia egy toleranciánál nagyobb mértékben tér el, a get_clk_frequency pedig egy logikai értéket vesz át, hogy a pontos (a névleges helyett) frekvenciát adja vissza. Az alapértelmezett órajel 24 MHz az OpenMV N6-on és AE3-on, így indításkor nincs szükség explicit set_clock() hívásra. Azoknak a szkripteknek, amelyek az órajelet kapcsolgatták időzítés-érzékeny rögzítésekhez, érdemes újraellenőrizniük a feltételezéseiket.
Commitok: 2040a0a00, 09c0052df, 66ade9aea, 7e0a251bc, e6f43f3ca
USB hibakeresési protokoll és firmware célok (tooling)¶
Ez egyik sem érinti a MicroPython szkripteket. Az elavult USBDBG parancsok (SCRIPT_SAVE, TEMPLATE_SAVE, DESCRIPTOR_SAVE, ATTR_READ, ATTR_WRITE, TX_INPUT, SET_TIME) eltávolításra kerültek, és a régebbi IDE-kből érkező nem támogatott parancsok mostantól kiürítésre kerülnek, ahelyett, hogy összeomlasztanák a TinyUSB paneleket csatlakozáskor; az örökölt STM32 UVC firmware cél eltávolításra került. A régi gazda eszközöket frissíteni kell; a részletekért lásd a firmware-tároló előzményeit.
Migrációs ellenőrzőlista¶
A v4.8.0-ra való tiszta átültetéshez a tipikus teendők:
Ha a FLIR Leptont a
firmodulon keresztül használtad, válts át a kameraérzékelőként való rögzítésére (a fir/Lepton változás).Cseréld le bármely
buzzerhasználatát amachine.PWMosztályra (a buzzer eltávolítása).Távolítsd el az
omv.disable_fb()hívásokat (az omv.disable_fb() eltávolítása).A
image.ImageIOesetén: használj kisbetűs'r'/'w'értéket, és számíts arra, hogy a'w'csonkol (az ImageIO változás).Az egyéni ML utófeldolgozó visszahívásokhoz: magad dekvantáld a nyers tenzorhivatkozásokat, vagy hagyatkozz az alapértelmezett lebegőpontos útvonalra (a visszahívás változása).
Ellenőrizz újra minden szkriptet, amely az érzékelő órajelét vezérelte időzítés-érzékeny rögzítésekhez (az órajel változása).