v3.0.0¶
v3.0.0 is de grote v2 → v3-release. Hij introduceert de OpenMV Cam M7 (STM32F7) en de nieuwe nn CMSIS-NN neurale-netwerkmodule (ter vervanging van de oude hardgecodeerde find_number() / classify_object() methoden), voegt ondersteuning toe voor de MT9V034 global-shutter en FLIR Lepton sensoren, de sensor.WVGA framesizes, en werkt de core bij naar MicroPython 1.9.4. Diverse gedragingen van image / sensor / WiFi zijn gewijzigd — lees hieronder de breaking changes.
Hoogtepunten¶
OpenMV Cam M7 — nieuw STM32F7-board.
nnmodule — CMSIS-NN inferentie:nn.load(),Net.forward(),Net.search(), met een modelconverter en voorbeelden.Nieuwe sensoren — MT9V034 global-shutter (FSIN-getriggerd) en FLIR Lepton.
MicroPython 1.9.4 core-update.
Breaking: de hardgecodeerde
image.find_number()/image.classify_object()zijn verwijderd,sensor.sleep()werpt nu een uitzondering op, WINC-sockets geven echte byte-aantallen terug,image.binary()geeft een nieuwe afbeelding terug, enfind_apriltags()is begrensd op 64K pixels — zie de breaking changes.
Nieuwe functies¶
nn— een nieuwe CMSIS-NN neurale-netwerkmodule:nn.load(path),Net.forward(img, roi=, softmax=, dry_run=)(geeft floats van 0.0–1.0 terug),Net.search()voor detectie op meerdere schalen/posities, enNet.test(), plus een CMSIS-NN modelconverter (nn_convert.py/nn_quantizer.py), gebundelde CIFAR-10 / LeNet / smile-modellen, en NN / NN-search voorbeeldscripts.Sensoren — MT9V034 global-shutter ondersteuning (FSIN-getriggerde snapshot) op de OpenMV 4, een bijgewerkte FLIR Lepton-driver met Lepton-snapshot, en de nieuwe
sensor.WVGA(720x480) /sensor.WVGA2(752x480) framesizes.Imaging —
image.find_circles()kreegr_min/r_max/r_stepkeywords (snellere Hough),find_keypoints()en de Haarfind_features()accepteren nu RGB-afbeeldingen, enimage.compress()/ JPEG-encodering ondersteunt nu binaire (bitmap-)afbeeldingen.Boot —
boot.pydraait nu vóór de USB-initialisatie zodat het de USB-modus kan overschrijven (bijv. HID).Voorbeelden — kleine/high-res AprilTag-voorbeelden, een I2C LIDAR-Lite V3-voorbeeld, en dataset-tooling (
augment_images.py/make_patches.py) toegevoegd.
Overige wijzigingen en verbeteringen¶
De gebundelde MicroPython bijgewerkt naar 1.9.4 (met een terugdraaiing van pyexec parse/compile/exec en een PendSV-fix); duidelijkere
fb_alloc/xallocout-of-memory foutmeldingen;nnprintf-ruis onderdrukt tijdens het laden van netwerken; de repository gereorganiseerd (voorbeelden →scripts/, tools →tools/, Haar Cascades →ml/). Dennmodule is niet beschikbaar op de OpenMV 2 (onvoldoende flashgeheugen).
Foutoplossingen¶
Imaging:
fast_atan2fvoor x≤0 opgelost (voorheen altijd 0 — controleer blob- / lijn- / sleutelpunthoeken opnieuw), het geheugenbeheer vanfind_apriltags()(verloren inhoud en een onjuiste realloc bij OOM), binaire/bitmap per-bpp rij-pointers (corrupte binaire resultaten),find_edges(EDGE_CANNY)met een ROI, deTO_GS_PIXELmacro (integral / morph), bitmap/JPEG-streaming voor grijswaarden-frames (bpp==0), depop_frontvan de sleutelpunt-/bloblijst, en de resultaten vanmatch_descriptor.
Systeem en camera:
De USB HID-interface-/endpointnummers opgelost, het dynamisch wijzigen van de XCLK-frequentie tijdens runtime,
Net.forward()dat het juiste aantal outputs teruggeeft, en een hardfault bij het onderbreken van het parsen van een script.
Hardware- en boardondersteuning¶
OpenMV Cam M7 (STM32F7) — nieuw board.
MT9V034 global-shutter sensor (OpenMV 4, FSIN-getriggerd).
FLIR Lepton — bijgewerkte driver met snapshot-ondersteuning.
Breaking API-wijzigingen¶
Voor gebruikers zichtbare API-breaks tussen v2.9.0 en v3.0.0. Reikwijdte: Python C-modules in modules/ en Python-bibliotheken in scripts/libraries/.
Elke wijziging is gemarkeerd met de impact ervan:
major — treft de meeste scripts die de functie gebruikten; je zult code moeten porten.
minor — beperkte API; treft alleen scripts die deze gebruikten.
behavior — dezelfde API, andere resultaten; controleer afgestemde scripts opnieuw.
Wijzigingen zijn in die volgorde gegroepeerd op impact. Als je alleen je code wilt porten, spring dan naar de migratiechecklist aan het einde. Elke commit-hash linkt naar de bijbehorende diff op GitHub.
image.find_number() / image.classify_object() verwijderd (major)¶
De hardgecodeerde image.find_number() (LeNet) en image.classify_object() (CMSIS CNN) methoden zijn verwijderd ten gunste van de nieuwe nn module. Vervang ze door net = nn.load('/model.network'); out = net.forward(img).
Commits: d151f7e38
sensor.sleep() / sensor.reset() werpen een uitzondering bij fouten (minor)¶
sensor.sleep() en sensor.reset() werpen nu een uitzondering bij een fout in plaats van True / False terug te geven. Code die de booleaanse retourwaarde van sensor.sleep() controleerde, moet de aanroep in plaats daarvan in een try / except plaatsen.
Commits: 7d16d008f
WINC-sockets geven het echte byte-aantal terug (behavior)¶
De WINC1500 socket-methoden send / recv / sendto / recvfrom gaven voorheen altijd 0 terug; ze geven nu het werkelijke aantal overgedragen bytes terug. Code die uitging van een retourwaarde van 0 (of erop wachtte/blokkeerde) moet de echte aantallen verwerken.
Commits: a07fb2f60
image.binary() geeft een nieuwe afbeelding terug (behavior)¶
image.binary() kreeg to_bitmap / copy keywords en geeft nu een nieuw afbeeldingsobject terug in plaats van de bronafbeelding ter plekke terug te geven/te muteren. Code die erop vertrouwde dat binary() de originele afbeelding muteerde, moet het geretourneerde object gebruiken (en copy=True doorgeven voor niet-ter-plekke gedrag).
Commits: 8a44f0cd9
Migratiechecklist¶
Voor een schone port naar v3.0.0 is het typische werk:
Vervang
image.find_number()/image.classify_object()door dennmodule (de nn-migratie).Plaats
sensor.sleep()/sensor.reset()in eentry/exceptin plaats van een booleaanse retourwaarde te controleren (de sensor.sleep-wijziging).Verwerk echte byte-aantallen van WINC socket
send/recv(de WINC socket-wijziging).Gebruik de afbeelding die
image.binary()teruggeeft in plaats van mutatie ter plekke te verwachten (de binary-wijziging).Verklein afbeeldingen vóór
find_apriltags()om onder 64K pixels te blijven (de find_apriltags-begrenzing).
Alle andere scripts draaien ongewijzigd.