v3.0.0

Verze v3.0.0 je hlavní vydání v2 → v3. Zavádí OpenMV Cam M7 (STM32F7) a nový modul neuronových sítí nn CMSIS-NN (nahrazující staré pevně zabudované metody find_number() / classify_object()), přidává podporu senzorů MT9V034 s globální závěrkou a FLIR Lepton, velikosti snímku sensor.WVGA a aktualizuje jádro na MicroPython 1.9.4. Změnilo se několik chování v image / sensor / WiFi — přečtěte si přelomové změny níže.

Hlavní novinky

  • OpenMV Cam M7 — nová deska STM32F7.

  • Modul nn — inference CMSIS-NN: nn.load(), Net.forward(), Net.search(), s konvertorem modelů a příklady.

  • Nové senzory — MT9V034 s globální závěrkou (spouštěná přes FSIN) a FLIR Lepton.

  • Aktualizace jádra na MicroPython 1.9.4.

  • Přelomová změna: pevně zabudované image.find_number() / image.classify_object() byly odstraněny, sensor.sleep() nyní vyvolává výjimku, WINC sockety vracejí skutečné počty bajtů, image.binary() vrací nový obraz a find_apriltags() je omezen na 64K pixelů — viz přelomové změny.

Nové funkce

  • nn — nový modul neuronových sítí CMSIS-NN: nn.load(path), Net.forward(img, roi=, softmax=, dry_run=) (vrací floaty 0.0–1.0), Net.search() pro detekci ve více měřítkách/pozicích a Net.test(), plus konvertor modelů CMSIS-NN (nn_convert.py / nn_quantizer.py), přibalené modely CIFAR-10 / LeNet / smile a ukázkové skripty NN / NN-search.

  • Senzory — podpora MT9V034 s globální závěrkou (snímek spouštěný přes FSIN) na OpenMV 4, aktualizovaný ovladač FLIR Lepton se snímkem Lepton a nové velikosti snímku sensor.WVGA (720x480) / sensor.WVGA2 (752x480).

  • Zpracování obrazuimage.find_circles() získalo klíčová slova r_min / r_max / r_step (rychlejší Houghova transformace), find_keypoints() a Haar find_features() nyní přijímají RGB obrazy a image.compress() / kódování JPEG nyní podporuje binární (bitmapové) obrazy.

  • Bootboot.py se nyní spouští před inicializací USB, takže může přepsat režim USB (např. HID).

  • Příklady — přidány příklady AprilTag v malém/vysokém rozlišení, příklad I2C LIDAR-Lite V3 a nástroje pro datové sady (augment_images.py / make_patches.py).

Další změny a vylepšení

  • Aktualizace přibaleného MicroPythonu na 1.9.4 (s vrácením parse/compile/exec v pyexec a opravou PendSV); srozumitelnější chybové zprávy o nedostatku paměti fb_alloc / xalloc; potlačen šum z printf modulu nn během načítání sítě; reorganizace repozitáře (příklady → scripts/, nástroje → tools/, Haar kaskády → ml/). Modul nn není na OpenMV 2 dostupný (nedostatek flash paměti).

Opravy chyb

Zpracování obrazu:

  • Opraveno fast_atan2f pro x≤0 (dříve vždy 0 — překontrolujte úhly blobů / čar / klíčových bodů), správa paměti find_apriltags() (ztracený obsah a chybný realloc při nedostatku paměti), ukazatele řádků pro jednotlivé bpp u binárních/bitmapových obrazů (poškozené binární výsledky), find_edges(EDGE_CANNY) s ROI, makro TO_GS_PIXEL (integrál / morfologie), streamování bitmap/JPEG pro snímky ve stupních šedi (bpp==0), pop_front u seznamu klíčových bodů/blobů a výsledky match_descriptor.

Systém a kamera:

  • Opraveno číslování rozhraní/endpointů USB HID, dynamická změna frekvence XCLK za běhu, Net.forward() vracející správný počet výstupů a hardfault při přerušení parsování skriptu.

Hardware a podpora desek

  • OpenMV Cam M7 (STM32F7) — nová deska.

  • Senzor MT9V034 s globální závěrkou (OpenMV 4, spouštěný přes FSIN).

  • FLIR Lepton — aktualizovaný ovladač s podporou snímku.

Přelomové změny API

Uživatelsky viditelné změny API mezi v2.9.0 a v3.0.0. Rozsah: Python C-moduly v modules/ a knihovny Pythonu v scripts/libraries/.

Každá změna je označena podle svého dopadu:

  • major — týká se většiny skriptů, které danou funkci používaly; budete muset přepsat kód.

  • minor — úzké API; týká se pouze skriptů, které jej používaly.

  • behavior — stejné API, jiné výsledky; překontrolujte vyladěné skripty.

Změny jsou seskupeny podle dopadu v tomto pořadí. Pokud chcete jen přenést svůj kód, přejděte na kontrolní seznam migrace na konci. Každý hash commitu odkazuje na svůj diff na GitHubu.

image.find_number() / image.classify_object() odstraněny (major)

Pevně zabudované metody image.find_number() (LeNet) a image.classify_object() (CMSIS CNN) byly odstraněny ve prospěch nového modulu nn. Nahraďte je výrazem net = nn.load('/model.network'); out = net.forward(img).

Commity: d151f7e38

sensor.sleep() / sensor.reset() vyvolávají výjimku při selhání (minor)

sensor.sleep() a sensor.reset() nyní při selhání vyvolávají výjimku místo vrácení True / False. Kód, který kontroloval logickou návratovou hodnotu sensor.sleep(), musí volání místo toho obalit do try / except.

Commity: 7d16d008f

WINC sockety vracejí skutečný počet bajtů (behavior)

Metody socketu WINC1500 send / recv / sendto / recvfrom dříve vždy vracely 0; nyní vracejí skutečný počet přenesených bajtů. Kód, který předpokládal návratovou hodnotu 0 (nebo na ní zacyklil/blokoval), musí ošetřit skutečné počty.

Commity: a07fb2f60

image.binary() vrací nový obraz (behavior)

image.binary() získalo klíčová slova to_bitmap / copy a nyní vrací nový objekt obrazu místo vrácení/úpravy zdrojového obrazu na místě. Kód, který spoléhal na to, že binary() upravuje původní obraz, by měl používat vrácený objekt (a předat copy=True pro chování bez úpravy na místě).

Commity: 8a44f0cd9

find_apriltags() omezen na 64K pixelů (behavior)

image.find_apriltags() nyní vyvolá výjimku, pokud obraz (nebo ROI) překročí 64K pixelů, a vrací prázdný seznam pro obrazy menší než 4x4. Před voláním find_apriltags() zmenšete velké obrazy (použijte menší framesize nebo předejte explicitní roi).

Commity: bd77afbc0

Kontrolní seznam migrace

Pro čistý přechod na v3.0.0 je typická práce následující:

  1. Nahraďte image.find_number() / image.classify_object() modulem nn (migrace na nn).

  2. Obalte sensor.sleep() / sensor.reset() do try / except místo kontroly logické návratové hodnoty (změna sensor.sleep).

  3. Ošetřete skutečné počty bajtů z WINC socketu send / recv (změna WINC socketu).

  4. Používejte obraz vrácený z image.binary() místo očekávání úpravy na místě (změna binary).

  5. Před find_apriltags() zmenšete obrazy, aby zůstaly pod 64K pixelů (omezení find_apriltags).

Všechny ostatní skripty běží beze změny.