v3.0.0¶
v3.0.0 är den stora utgåvan v2 → v3. Den introducerar OpenMV Cam M7 (STM32F7) och den nya CMSIS-NN-neuronnätsmodulen nn (som ersätter de gamla hårdkodade metoderna find_number() / classify_object()), lägger till stöd för sensorerna MT9V034 global slutare och FLIR Lepton, bildstorlekarna sensor.WVGA samt uppdaterar kärnan till MicroPython 1.9.4. Flera beteenden i image / sensor / WiFi ändrades — läs de brytande ändringarna nedan.
Höjdpunkter¶
OpenMV Cam M7 — nytt STM32F7-kort.
Modulen
nn— CMSIS-NN-inferens:nn.load(),Net.forward(),Net.search(), med en modellkonverterare och exempel.Nya sensorer — MT9V034 global slutare (FSIN-utlöst) och FLIR Lepton.
Kärnuppdatering till MicroPython 1.9.4.
Brytande: de hårdkodade
image.find_number()/image.classify_object()togs bort,sensor.sleep()ger nu ett undantag, WINC-socklar returnerar verkliga byteantal,image.binary()returnerar en ny bild ochfind_apriltags()är begränsad till 64K pixlar — se de brytande ändringarna.
Nya funktioner¶
nn— en ny CMSIS-NN-neuronnätsmodul:nn.load(path),Net.forward(img, roi=, softmax=, dry_run=)(returnerar flyttal 0.0–1.0),Net.search()för detektering i flera skalor/positioner ochNet.test(), plus en CMSIS-NN-modellkonverterare (nn_convert.py/nn_quantizer.py), medföljande CIFAR-10- / LeNet- / smile-modeller och exempelskript för NN / NN-search.Sensorer — stöd för MT9V034 global slutare (FSIN-utlöst stillbild) på OpenMV 4, en uppdaterad FLIR Lepton-drivrutin med Lepton-stillbild samt de nya bildstorlekarna
sensor.WVGA(720x480) /sensor.WVGA2(752x480).Bildbehandling —
image.find_circles()fick nyckelordenr_min/r_max/r_step(snabbare Hough),find_keypoints()och Haar-find_features()accepterar nu RGB-bilder, ochimage.compress()/ JPEG-kodning stöder nu binära (bitmap) bilder.Uppstart —
boot.pykörs nu före USB-initieringen så att den kan åsidosätta USB-läget (t.ex. HID).Exempel — lade till AprilTag-exempel i liten/hög upplösning, ett I2C LIDAR-Lite V3-exempel och datamängdsverktyg (
augment_images.py/make_patches.py).
Övriga ändringar och förbättringar¶
Uppdaterade den medföljande MicroPython till 1.9.4 (med en återställning av pyexec parse/compile/exec och en PendSV-fix); tydligare felmeddelanden om slut på minne för
fb_alloc/xalloc; dämpadenn-printf-brus under nätverksladdning; omorganiserade arkivet (exempel →scripts/, verktyg →tools/, Haar-kaskader →ml/). Modulennnär inte tillgänglig på OpenMV 2 (otillräckligt flashminne).
Buggfixar¶
Bildbehandling:
Åtgärdade
fast_atan2fför x≤0 (tidigare alltid 0 — kontrollera om blob-/linje-/nyckelpunktsvinklar igen), minneshantering ifind_apriltags()(tappat innehåll och en felaktig realloc vid slut på minne), radpekare per bpp för binär/bitmap (korrupta binära resultat),find_edges(EDGE_CANNY)med ett ROI, makrotTO_GS_PIXEL(integral / morph), bitmap/JPEG-strömning för gråskalebildrutor (bpp==0),pop_frontför nyckelpunkts-/bloblistan samt resultat frånmatch_descriptor.
System och kamera:
Åtgärdade USB HID-gränssnitts-/slutpunktsnummer, dynamisk ändring av XCLK-frekvensen vid körning, att
Net.forward()returnerar rätt antal utdata samt ett hårdfel vid avbrott av skripttolkning.
Hårdvaru- och kortstöd¶
OpenMV Cam M7 (STM32F7) — nytt kort.
MT9V034 sensor med global slutare (OpenMV 4, FSIN-utlöst).
FLIR Lepton — uppdaterad drivrutin med stöd för stillbilder.
Brytande API-ändringar¶
Användarsynliga API-brott mellan v2.9.0 och v3.0.0. Omfattning: Python C-moduler i modules/ och Python-bibliotek i scripts/libraries/.
Varje ändring är märkt med sin påverkan:
major — påverkar de flesta skript som använde funktionen; du behöver porta kod.
minor — smalt API; påverkar endast skript som använde det.
behavior — samma API, andra resultat; kontrollera finjusterade skript igen.
Ändringarna grupperas efter påverkan i den ordningen. Om du bara vill porta din kod, hoppa till migrationschecklistan i slutet. Varje commit-hash länkar till sin diff på GitHub.
image.find_number() / image.classify_object() borttagna (major)¶
De hårdkodade metoderna image.find_number() (LeNet) och image.classify_object() (CMSIS CNN) togs bort till förmån för den nya modulen nn. Ersätt dem med net = nn.load('/model.network'); out = net.forward(img).
Commits: d151f7e38
sensor.sleep() / sensor.reset() ger undantag vid fel (minor)¶
sensor.sleep() och sensor.reset() ger nu ett undantag vid fel i stället för att returnera True / False. Kod som kontrollerade det booleska returvärdet från sensor.sleep() måste i stället omsluta anropet med try / except.
Commits: 7d16d008f
WINC-socklar returnerar det verkliga byteantalet (behavior)¶
Metoderna send / recv / sendto / recvfrom för WINC1500-sockeln returnerade tidigare alltid 0; de returnerar nu det faktiska antalet överförda byte. Kod som antog en returvärde på 0 (eller loopade/blockerade på det) måste hantera de verkliga antalen.
Commits: a07fb2f60
image.binary() returnerar en ny bild (behavior)¶
image.binary() fick nyckelorden to_bitmap / copy och returnerar nu ett nytt bildobjekt i stället för att returnera/mutera källbilden på plats. Kod som förlitade sig på att binary() muterade originalbilden bör använda det returnerade objektet (och skicka copy=True för beteende som inte sker på plats).
Commits: 8a44f0cd9
Migrationschecklista¶
För en ren portning till v3.0.0 är det typiska arbetet:
Ersätt
image.find_number()/image.classify_object()med modulennn(nn-migrationen).Omslut
sensor.sleep()/sensor.reset()medtry/excepti stället för att kontrollera ett booleskt returvärde (ändringen av sensor.sleep).Hantera verkliga byteantal från WINC-sockelns
send/recv(ändringen av WINC-sockeln).Använd bilden som returneras av
image.binary()i stället för att förvänta dig mutation på plats (binary-ändringen).Skala ner bilder före
find_apriltags()för att hålla dig under 64K pixlar (begränsningen av find_apriltags).
Alla övriga skript körs oförändrade.