v3.0.0

A v3.0.0 a fő v2 → v3 kiadás. Bevezeti az OpenMV Cam M7 (STM32F7) kártyát és az új nn CMSIS-NN neurális hálózat modult (amely felváltja a régi, beégetett find_number() / classify_object() metódusokat), hozzáadja az MT9V034 globális zár és a FLIR Lepton érzékelő támogatását, a sensor.WVGA képkockaméreteket, és MicroPython 1.9.4-re frissíti a magot. Több image / sensor / WiFi viselkedés megváltozott — olvasd el az alábbi törő változásokat.

Kiemelések

  • OpenMV Cam M7 — új STM32F7 kártya.

  • nn modul — CMSIS-NN következtetés: nn.load(), Net.forward(), Net.search(), modellátalakítóval és példákkal.

  • Új érzékelők — MT9V034 globális zár (FSIN-triggerelt) és FLIR Lepton.

  • MicroPython 1.9.4 mag-frissítés.

  • Törő változás: a beégetett image.find_number() / image.classify_object() metódusokat eltávolítottuk, a sensor.sleep() mostantól kivételt dob, a WINC socketek valós bájtszámot adnak vissza, az image.binary() új képet ad vissza, és a find_apriltags() 64K képpontra van korlátozva — lásd a törő változásokat.

Új funkciók

  • nn — egy új CMSIS-NN neurális hálózat modul: nn.load(path), Net.forward(img, roi=, softmax=, dry_run=) (0.0–1.0 közötti lebegőpontos értékeket ad vissza), Net.search() a többléptékű/pozíciós észleléshez, valamint Net.test(), továbbá egy CMSIS-NN modellátalakító (nn_convert.py / nn_quantizer.py), beépített CIFAR-10 / LeNet / smile modellek, és NN / NN-search példaszkriptek.

  • Érzékelők — MT9V034 globális zár támogatás (FSIN-triggerelt pillanatkép) az OpenMV 4-en, egy frissített FLIR Lepton illesztőprogram Lepton pillanatképpel, és az új sensor.WVGA (720x480) / sensor.WVGA2 (752x480) képkockaméretek.

  • Képalkotás — az image.find_circles() megkapta az r_min / r_max / r_step kulcsszavakat (gyorsabb Hough), a find_keypoints() és a Haar find_features() mostantól RGB képeket is elfogad, és az image.compress() / JPEG-kódolás mostantól bináris (bitmap) képeket is támogat.

  • Indítás — a boot.py mostantól az USB inicializálása előtt fut, így felülírhatja az USB módot (pl. HID).

  • Példák — hozzáadtunk kis/nagy felbontású AprilTag példákat, egy I2C LIDAR-Lite V3 példát, és adathalmaz-eszközöket (augment_images.py / make_patches.py).

Egyéb változások és fejlesztések

  • A beépített MicroPythont 1.9.4-re frissítettük (egy pyexec parse/compile/exec visszaállítással és PendSV javítással); érthetőbb fb_alloc / xalloc memóriahiány-üzenetek; elnyomtuk az nn printf zaját a hálózat betöltése közben; átszerveztük a tárolót (példák → scripts/, eszközök → tools/, Haar kaszkádok → ml/). Az nn modul nem érhető el az OpenMV 2-n (nem elegendő flash memória).

Hibajavítások

Képalkotás:

  • Kijavítottuk a fast_atan2f függvényt x≤0 esetén (korábban mindig 0 volt — ellenőrizd újra a folt / vonal / kulcspont szögeket), a find_apriltags() memóriakezelését (eldobott tartalom és hibás realloc memóriahiány esetén), a bináris/bitmap soronkénti bpp-mutatókat (sérült bináris eredmények), a find_edges(EDGE_CANNY) működését ROI-val, a TO_GS_PIXEL makrót (integrál / morf), a bitmap/JPEG streamelést szürkeárnyalatos (bpp==0) képkockáknál, a kulcspont/folt lista pop_front műveletét, és a match_descriptor eredményeit.

Rendszer és kamera:

  • Kijavítottuk az USB HID interfész/végpont számokat, az XCLK frekvencia futásidejű dinamikus változtatását, hogy a Net.forward() a helyes számú kimenetet adja vissza, és egy hardfaultot a szkriptelemzés megszakításakor.

Hardver- és kártyatámogatás

  • OpenMV Cam M7 (STM32F7) — új kártya.

  • MT9V034 globális zár érzékelő (OpenMV 4, FSIN-triggerelt).

  • FLIR Lepton — frissített illesztőprogram pillanatkép-támogatással.

Törő API-változások

Felhasználó számára látható API-törések a v2.9.0 és v3.0.0 között. Hatókör: Python C-modulok a modules/ mappában és Python könyvtárak a scripts/libraries/ mappában.

Minden változás meg van jelölve a hatásával:

  • nagy — a legtöbb szkriptet érinti, amely az adott funkciót használta; portolnod kell a kódot.

  • kisebb — szűk API; csak az azt használó szkripteket érinti.

  • viselkedés — azonos API, eltérő eredmények; ellenőrizd újra a finomhangolt szkripteket.

A változások hatás szerint, ebben a sorrendben vannak csoportosítva. Ha csak portolni szeretnéd a kódodat, ugorj a migrációs ellenőrzőlistához a végén. Minden commit-hash a GitHubon lévő diffjére hivatkozik.

image.find_number() / image.classify_object() eltávolítva (nagy)

A beégetett image.find_number() (LeNet) és image.classify_object() (CMSIS CNN) metódusokat eltávolítottuk az új nn modul javára. Cseréld le őket a következőre: net = nn.load('/model.network'); out = net.forward(img).

Commitok: d151f7e38

sensor.sleep() / sensor.reset() hibánál kivételt dob (kisebb)

A sensor.sleep() és a sensor.reset() mostantól hiba esetén kivételt dob, ahelyett hogy True / False értéket adna vissza. Az a kód, amely a sensor.sleep() logikai visszatérési értékét ellenőrizte, mostantól try / except blokkba kell csomagolja a hívást.

Commitok: 7d16d008f

A WINC socketek a valós bájtszámot adják vissza (viselkedés)

A WINC1500 socket send / recv / sendto / recvfrom metódusai korábban mindig 0 értéket adtak vissza; mostantól az átvitt bájtok tényleges számát adják vissza. Az a kód, amely 0 visszatérési értéket feltételezett (vagy arra várt/blokkolt rajta ciklusban), kezelnie kell a valós értékeket.

Commitok: a07fb2f60

Az image.binary() új képet ad vissza (viselkedés)

Az image.binary() megkapta a to_bitmap / copy kulcsszavakat, és mostantól egy új képobjektumot ad vissza, ahelyett hogy a forrásképet helyben adná vissza/módosítaná. Az a kód, amely arra támaszkodott, hogy a binary() módosítja az eredeti képet, használja a visszaadott objektumot (és adja át a copy=True értéket a nem helyben végzett viselkedéshez).

Commitok: 8a44f0cd9

A find_apriltags() 64K képpontra korlátozva (viselkedés)

Az image.find_apriltags() mostantól kivételt dob, ha a kép (vagy ROI) meghaladja a 64K képpontot, és üres listát ad vissza a 4x4-nél kisebb képeknél. Méretezd le a nagy képeket (használj kisebb framesize értéket, vagy adj át egy explicit roi paramétert) a find_apriltags() hívása előtt.

Commitok: bd77afbc0

Migrációs ellenőrzőlista

A v3.0.0-ra való tiszta portoláshoz a tipikus teendők a következők:

  1. Cseréld le az image.find_number() / image.classify_object() metódusokat az nn modulra (az nn migráció).

  2. Csomagold a sensor.sleep() / sensor.reset() hívásokat try / except blokkba a logikai visszatérési érték ellenőrzése helyett (a sensor.sleep változás).

  3. Kezeld a valós bájtszámokat a WINC socket send / recv metódusaiból (a WINC socket változás).

  4. Használd az image.binary() által visszaadott képet a helyben történő módosítás elvárása helyett (a binary változás).

  5. Méretezd le a képeket a find_apriltags() hívása előtt, hogy 64K képpont alatt maradj (a find_apriltags korlát).

Minden más szkript változatlanul fut.