v3.0.0

v3.0.0 je glavno izdanje v2 → v3. Uvodi OpenMV Cam M7 (STM32F7) i novi nn CMSIS-NN modul neuronske mreže (koji zamjenjuje stare čvrsto kodirane metode find_number() / classify_object()), dodaje podršku za senzore MT9V034 s globalnim zatvaračem i FLIR Lepton, framesize-ove sensor.WVGA te ažurira jezgru na MicroPython 1.9.4. Promijenilo se nekoliko ponašanja image / sensor / WiFi — pročitajte promjene koje narušavaju kompatibilnost u nastavku.

Istaknuto

  • OpenMV Cam M7 — nova STM32F7 ploča.

  • nn modul — CMSIS-NN zaključivanje: nn.load(), Net.forward(), Net.search(), s pretvaračem modela i primjerima.

  • Novi senzori — MT9V034 s globalnim zatvaračem (okidan FSIN-om) i FLIR Lepton.

  • Ažuriranje jezgre na MicroPython 1.9.4.

  • Narušava kompatibilnost: uklonjene su čvrsto kodirane metode image.find_number() / image.classify_object(), sensor.sleep() sada izaziva iznimku, WINC utičnice vraćaju stvaran broj bajtova, image.binary() vraća novu sliku, a find_apriltags() je ograničen na 64K piksela — pogledajte promjene koje narušavaju kompatibilnost.

Nove značajke

  • nn — novi CMSIS-NN modul neuronske mreže: nn.load(path), Net.forward(img, roi=, softmax=, dry_run=) (vraća float vrijednosti 0.0–1.0), Net.search() za detekciju na više mjerila/položaja te Net.test(), plus CMSIS-NN pretvarač modela (nn_convert.py / nn_quantizer.py), priloženi modeli CIFAR-10 / LeNet / smile te primjeri skripti NN i NN-search.

  • Senzori — podrška za MT9V034 s globalnim zatvaračem (snimka okidana FSIN-om) na OpenMV 4, ažurirani upravljački program za FLIR Lepton s Lepton snimkom te novi framesize-ovi sensor.WVGA (720x480) / sensor.WVGA2 (752x480).

  • Obrada slikeimage.find_circles() dobio je ključne riječi r_min / r_max / r_step (brži Hough), find_keypoints() i Haar find_features() sada prihvaćaju RGB slike, a image.compress() / JPEG kodiranje sada podržavaju binarne (bitmap) slike.

  • Pokretanjeboot.py sada se izvodi prije inicijalizacije USB-a tako da može nadjačati USB način rada (npr. HID).

  • Primjeri — dodani primjeri AprilTag-a malih/visokih razlučivosti, primjer I2C LIDAR-Lite V3 te alati za skup podataka (augment_images.py / make_patches.py).

Ostale promjene i poboljšanja

  • Priloženi MicroPython ažuriran je na 1.9.4 (s vraćanjem pyexec parse/compile/exec i ispravkom PendSV-a); jasnije poruke o pogreškama nedostatka memorije za fb_alloc / xalloc; potisnut printf šum modula nn tijekom učitavanja mreže; reorganiziran repozitorij (primjeri → scripts/, alati → tools/, Haar kaskade → ml/). Modul nn nije dostupan na OpenMV 2 (nedovoljno flash memorije).

Ispravci grešaka

Obrada slike:

  • Ispravljeno fast_atan2f za x≤0 (prethodno uvijek 0 — ponovno provjerite kutove mrlja / linija / ključnih točaka), upravljanje memorijom u find_apriltags() (izgubljeni sadržaj i loš realloc pri OOM-u), pokazivači redaka po bpp za binary/bitmap (oštećeni binarni rezultati), find_edges(EDGE_CANNY) s ROI-jem, makro TO_GS_PIXEL (integral / morph), bitmap/JPEG strujanje za sličice u sivim tonovima (bpp==0), pop_front liste ključnih točaka/mrlja te rezultati match_descriptor.

Sustav i kamera:

  • Ispravljeni brojevi USB HID sučelja/krajnje točke, dinamička promjena frekvencije XCLK tijekom izvođenja, Net.forward() koji vraća točan broj izlaza te hardfault pri prekidanju parsiranja skripte.

Podrška za hardver i ploče

  • OpenMV Cam M7 (STM32F7) — nova ploča.

  • Senzor s globalnim zatvaračem MT9V034 (OpenMV 4, okidan FSIN-om).

  • FLIR Lepton — ažurirani upravljački program s podrškom za snimku.

Promjene API-ja koje narušavaju kompatibilnost

Promjene API-ja vidljive korisniku između v2.9.0 i v3.0.0. Opseg: Python C-moduli u modules/ i Python biblioteke u scripts/libraries/.

Svaka promjena označena je svojim utjecajem:

  • velika — utječe na većinu skripti koje su koristile značajku; morat ćete prilagoditi kôd.

  • manja — uzak API; utječe samo na skripte koje su ga koristile.

  • ponašanje — isti API, drugačiji rezultati; ponovno provjerite ugođene skripte.

Promjene su grupirane po utjecaju tim redoslijedom. Ako samo želite prilagoditi svoj kôd, prijeđite na popis za migraciju na kraju. Svaki hash commita vodi na svoj diff na GitHubu.

image.find_number() / image.classify_object() uklonjeni (velika)

Čvrsto kodirane metode image.find_number() (LeNet) i image.classify_object() (CMSIS CNN) uklonjene su u korist novog modula nn. Zamijenite ih s net = nn.load('/model.network'); out = net.forward(img).

Commiti: d151f7e38

sensor.sleep() / sensor.reset() izazivaju iznimku pri neuspjehu (manja)

sensor.sleep() i sensor.reset() sada izazivaju iznimku pri neuspjehu umjesto da vraćaju True / False. Kôd koji je provjeravao logičku povratnu vrijednost sensor.sleep() mora umjesto toga omotati poziv u try / except.

Commiti: 7d16d008f

WINC utičnice vraćaju stvaran broj bajtova (ponašanje)

Metode WINC1500 utičnice send / recv / sendto / recvfrom prethodno su uvijek vraćale 0; sada vraćaju stvaran broj prenesenih bajtova. Kôd koji je pretpostavljao povratnu vrijednost 0 (ili se na njoj vrtio/blokirao) mora obraditi stvarne brojeve.

Commiti: a07fb2f60

image.binary() vraća novu sliku (ponašanje)

image.binary() dobio je ključne riječi to_bitmap / copy i sada vraća novi objekt slike umjesto da vraća/mijenja izvornu sliku na mjestu. Kôd koji se oslanjao na to da binary() mijenja izvornu sliku trebao bi koristiti vraćeni objekt (i proslijediti copy=True za ponašanje koje nije na mjestu).

Commiti: 8a44f0cd9

find_apriltags() ograničen na 64K piksela (ponašanje)

image.find_apriltags() sada izaziva iznimku ako slika (ili ROI) premaši 64K piksela i vraća praznu listu za slike manje od 4x4. Smanjite velike slike (koristite manji framesize ili proslijedite eksplicitan roi) prije poziva find_apriltags().

Commiti: bd77afbc0

Popis za migraciju

Za čistu prilagodbu na v3.0.0 tipičan posao je:

  1. Zamijenite image.find_number() / image.classify_object() modulom nn (migracija na nn).

  2. Omotajte sensor.sleep() / sensor.reset() u try / except umjesto provjeravanja logičke povratne vrijednosti (promjena sensor.sleep).

  3. Obradite stvarne brojeve bajtova iz WINC utičnica send / recv (promjena WINC utičnice).

  4. Koristite sliku koju vraća image.binary() umjesto očekivanja izmjene na mjestu (promjena binary).

  5. Smanjite slike prije find_apriltags() kako biste ostali ispod 64K piksela (ograničenje find_apriltags).

Sve ostale skripte rade nepromijenjeno.