v3.0.0

v3.0.0 on suuri v2 → v3 -julkaisu. Se esittelee OpenMV Cam M7 -kortin (STM32F7) ja uuden nn CMSIS-NN -neuroverkkomoduulin (korvaten vanhat kovakoodatut find_number() / classify_object() -metodit), lisää MT9V034 global-shutter- ja FLIR Lepton -sensorituen, sensor.WVGA-kehyskoot sekä päivittää ytimen versioon MicroPython 1.9.4. Useat image- / sensor- / WiFi-toiminnot muuttuivat — lue alla olevat yhteensopivuutta rikkovat muutokset.

Kohokohdat

  • OpenMV Cam M7 — uusi STM32F7-kortti.

  • nn-moduuli — CMSIS-NN-päättely: nn.load(), Net.forward(), Net.search(), mallimuuntimen ja esimerkkien kanssa.

  • Uudet sensorit — MT9V034 global-shutter (FSIN-laukaistu) ja FLIR Lepton.

  • MicroPython 1.9.4 -ytimen päivitys.

  • Yhteensopivuutta rikkova: kovakoodatut image.find_number() / image.classify_object() poistettiin, sensor.sleep() nostaa nyt poikkeuksen, WINC-soketit palauttavat todelliset tavumäärät, image.binary() palauttaa uuden kuvan ja find_apriltags() on rajattu 64K pikseliin — katso yhteensopivuutta rikkovat muutokset.

Uudet ominaisuudet

  • nn — uusi CMSIS-NN-neuroverkkomoduuli: nn.load(path), Net.forward(img, roi=, softmax=, dry_run=) (palauttaa 0.0–1.0 liukulukuja), Net.search() monimittakaava-/sijaintitunnistukseen sekä Net.test(), lisäksi CMSIS-NN-mallimuunnin (nn_convert.py / nn_quantizer.py), mukana toimitetut CIFAR-10- / LeNet- / hymymallit ja NN- / NN-search-esimerkkiskriptit.

  • Sensorit — MT9V034 global-shutter -tuki (FSIN-laukaistu snapshot) OpenMV 4:llä, päivitetty FLIR Lepton -ajuri Lepton-snapshotilla sekä uudet sensor.WVGA (720x480) / sensor.WVGA2 (752x480) -kehyskoot.

  • Kuvantaminenimage.find_circles() sai r_min / r_max / r_step -avainsanat (nopeampi Hough), find_keypoints() ja Haar find_features() hyväksyvät nyt RGB-kuvia, ja image.compress() / JPEG-koodaus tukevat nyt binäärisiä (bittikartta-) kuvia.

  • Käynnistysboot.py ajetaan nyt ennen USB:n alustusta, jotta se voi korvata USB-tilan (esim. HID).

  • Esimerkit — lisättiin pieni-/korkearesoluutioiset AprilTag-esimerkit, I2C LIDAR-Lite V3 -esimerkki sekä aineistotyökaluja (augment_images.py / make_patches.py).

Muut muutokset ja parannukset

  • Päivitettiin mukana toimitettu MicroPython versioon 1.9.4 (pyexec-jäsennys/-käännös/-suoritus -peruutuksella ja PendSV-korjauksella); selkeämmät fb_alloc / xalloc -muistinloppumis-virheviestit; vaimennettiin nn-printf-kohina verkon latauksen aikana; järjestettiin arkisto uudelleen (esimerkit → scripts/, työkalut → tools/, Haar-kaskadit → ml/). nn-moduuli ei ole käytettävissä OpenMV 2:lla (riittämätön flash-muisti).

Virheenkorjaukset

Kuvantaminen:

  • Korjattiin fast_atan2f arvolla x≤0 (aiemmin aina 0 — tarkista uudelleen blob-/viiva-/avainpistekulmat), find_apriltags()-muistinkäsittely (hävitti sisältöä ja virheellinen realloc muistin loppuessa), binääri-/bittikartta-rivikohtaiset bpp-osoittimet (vialliset binääritulokset), find_edges(EDGE_CANNY) ROI:n kanssa, TO_GS_PIXEL-makro (integraali / morfologia), bittikartta-/JPEG-suoratoisto harmaasävykehyksille (bpp==0), avainpiste-/blob-listan pop_front ja match_descriptor-tulokset.

Järjestelmä ja kamera:

  • Korjattiin USB HID -liitännän/-päätepisteen numerot, XCLK-taajuuden dynaaminen muuttaminen ajonaikaisesti, Net.forward()-funktion oikean ulostulomäärän palauttaminen sekä hardfault, kun skriptin jäsennys keskeytetään.

Laitteisto- ja korttituki

  • OpenMV Cam M7 (STM32F7) — uusi kortti.

  • MT9V034 global-shutter -sensori (OpenMV 4, FSIN-laukaistu).

  • FLIR Lepton — päivitetty ajuri snapshot-tuella.

Yhteensopivuutta rikkovat API-muutokset

Käyttäjälle näkyvät API-muutokset versioiden v2.9.0 ja v3.0.0 välillä. Laajuus: Python-C-moduulit hakemistossa modules/ ja Python-kirjastot hakemistossa scripts/libraries/.

Jokainen muutos on merkitty sen vaikutuksella:

  • suuri — vaikuttaa useimpiin skripteihin, jotka käyttivät ominaisuutta; sinun on muokattava koodia.

  • vähäinen — suppea API; vaikuttaa vain skripteihin, jotka käyttivät sitä.

  • käyttäytyminen — sama API, eri tulokset; tarkista uudelleen viritetyt skriptit.

Muutokset on ryhmitelty vaikutuksen mukaan tässä järjestyksessä. Jos haluat vain siirtää koodisi, siirry lopussa olevaan migraation tarkistuslistaan. Jokainen commitin tiiviste linkittää sen erotteluun GitHubissa.

image.find_number() / image.classify_object() poistettiin (suuri)

Kovakoodatut image.find_number() (LeNet) ja image.classify_object() (CMSIS CNN) -metodit poistettiin uuden nn-moduulin hyväksi. Korvaa ne koodilla net = nn.load('/model.network'); out = net.forward(img).

Commitit: d151f7e38

sensor.sleep() / sensor.reset() nostavat poikkeuksen epäonnistuessa (vähäinen)

sensor.sleep() ja sensor.reset() nostavat nyt poikkeuksen epäonnistuessaan sen sijaan, että palauttaisivat True / False. Koodin, joka tarkisti sensor.sleep() -funktion totuusarvopaluun, on sen sijaan ympäröitävä kutsu try / except -rakenteella.

Commitit: 7d16d008f

WINC-soketit palauttavat todellisen tavumäärän (käyttäytyminen)

WINC1500-soketin send / recv / sendto / recvfrom -metodit palauttivat aiemmin aina 0; ne palauttavat nyt todellisen siirrettyjen tavujen määrän. Koodin, joka oletti 0-paluun (tai jäi silmukkaan/lukkoon sen vuoksi), on käsiteltävä todelliset määrät.

Commitit: a07fb2f60

image.binary() palauttaa uuden kuvan (käyttäytyminen)

image.binary() sai to_bitmap / copy -avainsanat ja palauttaa nyt uuden kuvaobjektin sen sijaan, että palauttaisi/muuttaisi lähdekuvaa paikallaan. Koodin, joka luotti binary()-funktion muuttavan alkuperäistä kuvaa, tulisi käyttää palautettua objektia (ja välittää copy=True ei-paikallaan-toimintaa varten).

Commitit: 8a44f0cd9

find_apriltags() rajattu 64K pikseliin (käyttäytyminen)

image.find_apriltags() nostaa nyt poikkeuksen, jos kuva (tai ROI) ylittää 64K pikseliä, ja palauttaa tyhjän listan kuville, jotka ovat pienempiä kuin 4x4. Pienennä suuret kuvat (käytä pienempää framesize-arvoa tai välitä eksplisiittinen roi) ennen find_apriltags()-funktion kutsumista.

Commitit: bd77afbc0

Migraation tarkistuslista

Siistiä siirtoa versioon v3.0.0 varten tyypillinen työ on:

  1. Korvaa image.find_number() / image.classify_object() nn-moduulilla (nn-migraatio).

  2. Ympäröi sensor.sleep() / sensor.reset() try / except -rakenteella sen sijaan, että tarkistaisit totuusarvopaluun (sensor.sleep-muutos).

  3. Käsittele todelliset tavumäärät WINC-soketin send / recv -metodeista (WINC-soketin muutos).

  4. Käytä image.binary()-funktion palauttamaa kuvaa sen sijaan, että odottaisit paikallaan tapahtuvaa muutosta (binary-muutos).

  5. Pienennä kuvat ennen find_apriltags()-funktiota pysyäksesi alle 64K pikselin (find_apriltags-raja).

Kaikki muut skriptit toimivat ennallaan.