v3.0.0¶
v3.0.0 to główne wydanie v2 → v3. Wprowadza OpenMV Cam M7 (STM32F7) oraz nowy moduł sieci neuronowej CMSIS-NN nn (zastępujący stare, zakodowane na stałe metody find_number() / classify_object()), dodaje wsparcie sensorów MT9V034 z migawką globalną i FLIR Lepton, rozmiary ramek sensor.WVGA oraz aktualizuje rdzeń do MicroPython 1.9.4. Zmieniło się kilka zachowań image / sensor / WiFi — przeczytaj poniższe zmiany powodujące niezgodność.
Najważniejsze zmiany¶
OpenMV Cam M7 — nowa płytka STM32F7.
Moduł
nn— wnioskowanie CMSIS-NN:nn.load(),Net.forward(),Net.search(), z konwerterem modeli i przykładami.Nowe sensory — MT9V034 z migawką globalną (wyzwalany przez FSIN) oraz FLIR Lepton.
Aktualizacja rdzenia MicroPython 1.9.4.
Niezgodność: zakodowane na stałe
image.find_number()/image.classify_object()zostały usunięte,sensor.sleep()zgłasza teraz wyjątek, gniazda WINC zwracają rzeczywistą liczbę bajtów,image.binary()zwraca nowy obraz, afind_apriltags()jest ograniczone do 64K pikseli — zobacz zmiany powodujące niezgodność.
Nowe funkcje¶
nn— nowy moduł sieci neuronowej CMSIS-NN:nn.load(path),Net.forward(img, roi=, softmax=, dry_run=)(zwraca liczby zmiennoprzecinkowe 0.0–1.0),Net.search()do wykrywania w wielu skalach/pozycjach orazNet.test(), a także konwerter modeli CMSIS-NN (nn_convert.py/nn_quantizer.py), dołączone modele CIFAR-10 / LeNet / smile oraz przykładowe skrypty NN i NN-search.Sensory — wsparcie MT9V034 z migawką globalną (zrzut obrazu wyzwalany przez FSIN) na OpenMV 4, zaktualizowany sterownik FLIR Lepton ze zrzutem obrazu Lepton oraz nowe rozmiary ramek
sensor.WVGA(720x480) /sensor.WVGA2(752x480).Obrazowanie —
image.find_circles()zyskało słowa kluczower_min/r_max/r_step(szybsze Hough),find_keypoints()oraz funkcja Haarfind_features()akceptują teraz obrazy RGB, aimage.compress()/ kodowanie JPEG obsługuje teraz obrazy binarne (bitmapy).Rozruch —
boot.pyuruchamia się teraz przed inicjalizacją USB, dzięki czemu może nadpisać tryb USB (np. HID).Przykłady — dodano przykłady AprilTag w małej i wysokiej rozdzielczości, przykład I2C LIDAR-Lite V3 oraz narzędzia do zbiorów danych (
augment_images.py/make_patches.py).
Inne zmiany i usprawnienia¶
Zaktualizowano dołączony MicroPython do 1.9.4 (z cofnięciem zmiany parse/compile/exec w pyexec i poprawką PendSV); czytelniejsze komunikaty o braku pamięci
fb_alloc/xalloc; wyciszono szum printf znnpodczas ładowania sieci; zreorganizowano repozytorium (przykłady →scripts/, narzędzia →tools/, kaskady Haar →ml/). Modułnnjest niedostępny na OpenMV 2 (niewystarczająca pamięć flash).
Poprawki błędów¶
Obrazowanie:
Naprawiono
fast_atan2fdla x≤0 (wcześniej zawsze 0 — ponownie sprawdź kąty plam (blob) / linii / punktów kluczowych), obsługę pamięcifind_apriltags()(utracona zawartość i błędne realloc przy braku pamięci), wskaźniki wierszy binarnych/bitmapowych dla każdej wartości bpp (uszkodzone wyniki binarne),find_edges(EDGE_CANNY)z ROI, makroTO_GS_PIXEL(integral / morph), strumieniowanie bitmap/JPEG dla ramek w skali szarości (bpp==0),pop_frontlisty punktów kluczowych/plam (blob) oraz wynikimatch_descriptor.
System i kamera:
Naprawiono numery interfejsu/punktu końcowego USB HID, dynamiczną zmianę częstotliwości XCLK w czasie działania, zwracanie przez
Net.forward()poprawnej liczby wyjść oraz hardfault podczas przerywania parsowania skryptu.
Wsparcie sprzętu i płytek¶
OpenMV Cam M7 (STM32F7) — nowa płytka.
Sensor MT9V034 z migawką globalną (OpenMV 4, wyzwalany przez FSIN).
FLIR Lepton — zaktualizowany sterownik ze wsparciem zrzutu obrazu.
Zmiany API powodujące niezgodność¶
Widoczne dla użytkownika zmiany API powodujące niezgodność pomiędzy v2.9.0 a v3.0.0. Zakres: C-moduły Pythona w modules/ oraz biblioteki Pythona w scripts/libraries/.
Każda zmiana jest oznaczona swoim wpływem:
major — dotyczy większości skryptów używających danej funkcji; konieczne będzie przeniesienie kodu.
minor — wąskie API; dotyczy wyłącznie skryptów, które go używały.
behavior — to samo API, inne wyniki; ponownie sprawdź dostrojone skrypty.
Zmiany są pogrupowane według wpływu w tej kolejności. Jeśli chcesz po prostu przenieść swój kod, przejdź do listy kontrolnej migracji na końcu. Każdy skrót hasza commita prowadzi do jego diffu na GitHubie.
Usunięto image.find_number() / image.classify_object() (major)¶
Zakodowane na stałe metody image.find_number() (LeNet) oraz image.classify_object() (CMSIS CNN) zostały usunięte na rzecz nowego modułu nn. Zastąp je przez net = nn.load('/model.network'); out = net.forward(img).
Commity: d151f7e38
sensor.sleep() / sensor.reset() zgłaszają wyjątek przy niepowodzeniu (minor)¶
sensor.sleep() i sensor.reset() zgłaszają teraz wyjątek przy niepowodzeniu zamiast zwracać True / False. Kod, który sprawdzał wartość logiczną zwracaną przez sensor.sleep(), musi zamiast tego opakować wywołanie w try / except.
Commity: 7d16d008f
Gniazda WINC zwracają rzeczywistą liczbę bajtów (behavior)¶
Metody gniazd WINC1500 send / recv / sendto / recvfrom wcześniej zawsze zwracały 0; teraz zwracają rzeczywistą liczbę przesłanych bajtów. Kod, który zakładał zwracanie 0 (lub zapętlał się/blokował na tej wartości), musi obsłużyć rzeczywiste liczby.
Commity: a07fb2f60
image.binary() zwraca nowy obraz (behavior)¶
image.binary() zyskało słowa kluczowe to_bitmap / copy i zwraca teraz nowy obiekt obrazu zamiast zwracać/modyfikować obraz źródłowy w miejscu. Kod, który polegał na modyfikowaniu oryginalnego obrazu przez binary(), powinien używać zwróconego obiektu (i przekazywać copy=True dla zachowania bez modyfikacji w miejscu).
Commity: 8a44f0cd9
Lista kontrolna migracji¶
Dla czystego przeniesienia na v3.0.0 typowa praca to:
Zastąp
image.find_number()/image.classify_object()modułemnn(migracja nn).Opakuj
sensor.sleep()/sensor.reset()wtry/exceptzamiast sprawdzać zwracaną wartość logiczną (zmiana sensor.sleep).Obsłuż rzeczywiste liczby bajtów z gniazda WINC
send/recv(zmiana gniazda WINC).Używaj obrazu zwracanego przez
image.binary()zamiast oczekiwać modyfikacji w miejscu (zmiana binary).Zmniejszaj obrazy przed
find_apriltags(), aby pozostać poniżej 64K pikseli (ograniczenie find_apriltags).
Wszystkie pozostałe skrypty działają bez zmian.