v4.7.0¶
v4.7.0 to duże wydanie skupione na NPU i ROMFS, zbudowane na Qt Creator 14.0.2. Wprowadza ono działający na urządzeniu przepływ pracy z systemem plików ROM, z zintegrowanymi kompilatorami modeli ARM Ethos-U (Vela) oraz ST Edge AI, dodaje programowanie fabryczne oparte na STM32CubeProgrammer dla OpenMV N6 oraz dołącza oprogramowanie układowe OpenMV 4.7.0 dla każdej płytki. Należy pamiętać, że aktualizacja dowolnej kamery z oprogramowania układowego starszego niż 4.7.0 wymusza teraz wymazanie systemu plików FAT oraz reset ROMFS, co usuwa pliki zapisane w wewnętrznej pamięci flash urządzenia; zobacz Breaking changes poniżej.
Najważniejsze zmiany¶
Przepływ pracy z systemem plików ROM pozwala tworzyć, edytować, wgrywać do pamięci flash i resetować działający na urządzeniu system plików tylko do odczytu, dzięki czemu modele ML mogą być przechowywane na kamerze; zintegrowany z bootloaderami DFU, IMX, Bossac, Picotool oraz Arduino-DFU. (efcc52fd8, f2cbcc802, a7e52424a, 60b05326d, 7140fc2aa)
Kompilatory modeli ARM Ethos-U Vela oraz ST Edge AI są teraz zintegrowane, dzięki czemu modele
.tflite/.onnxsą automatycznie kompilowane do NPU po załadowaniu na płytki Ethos-U55 (OpenMV AE3) lub Neural-ART (OpenMV N6). (411f708ea, 3064411ad)STM32CubeProgrammer jest teraz dołączony, aby umożliwić fabryczne programowanie bootloadera OpenMV N6 (STM32N657) za pomocą pliku
FlashLayout.tsv. (334b04dbd, 54fea4d57, 28cc94a6e)Przeglądarka Model Zoo zyskuje pole wyboru „Filter models by board type” sterowane nową tabelą
models/index.csv, która ukrywa modele niezgodne z podłączoną płytką. (80adb2079)Wyrównanie ROMFS dla poszczególnych rozszerzeń: edytor obrazu ROMFS sortuje teraz pliki alfabetycznie i pakuje je przy użyciu reguł wyrównania bajtowego z
settings.json(np. modele.tflitewyrównane do 16 bajtów). (e87b2bf06)Dołączone oprogramowanie układowe zaktualizowane do 4.7.0 na wszystkich płytkach OpenMV i Arduino. (6d04b1b50, d0bbb1fe7, d7d3120b3)
Nowe funkcje¶
Podmenu systemu plików ROM (
New/Open/Edit ROMFS on OpenMV Cam/Reset ROMFS on OpenMV Cam) zastępuje dawną pojedynczą akcjęEdit ROM File System. (0bc275a0a, 958f732b5)Przeglądarka Open Model Zoo z trwałym stanem wybranego modelu oraz podglądem przy zmianie wyboru, w tym dołączone biblioteki modeli STMicroelectronics, Qualcomm, DeGirum, Edge Impulse oraz Google. (58033c5df, 2a1fb071a, 48c5b96fe, c0959833c)
Pozycja menu Convert Model for NPU w
Machine Vision Toolskompiluje model TensorFlow Lite (.tflite) lub ONNX (.onnx) dla akceleratora NPU płytki (Vela dla Ethos-U.tflite, ST Edge AI dla N6 Neural-ART.tflite/.onnx) i zapisuje przekonwertowany model na dysku lub na kamerze. (3913f5b8b)Narzędzie Copy/Convert Python File kopiuje skrypt Python na kamerę lub na dysk i opcjonalnie kompiluje go krzyżowo do kodu bajtowego MicroPython
.mpyza pomocąmpy-cross; znajduje się ono w nowym podmenuMicroPython Toolsw menuTools. (e9d7fa143, 47188c0e3)Przyciski przełączające Wrap Text zostały dodane do terminala szeregowego OpenMV oraz do panelu wyjściowego
General Messages; oba zawijają wyjście według słów i zachowują to ustawienie między sesjami. (8c052845a, 51d3e1ad6)Kompilacja krzyżowa ROMFS przez mpy-cross z flagami architektury dla poszczególnych płytek (
armv7emsp/armv7emdp) pozwala zamrażać skrypty MicroPython w obrazach ROMFS. (8c71548df)Okno dialogowe bootloadera oprogramowania układowego akceptuje teraz pliki ROMFS
*.imgobok*.bini*.dfu, sprawdza rozszerzenia dla poszczególnych bootloaderów oraz wyłącza istniejące pole wyboruReset ROMFS file systempodczas ładowania pliku*.img. (79f348b36)Aktualizacje z wersji starszych niż 4.7.0 wymuszają teraz włączenie pól wyboru wymazania FAT oraz resetu/aktualizacji ROMFS i ostrzegają, że aktualizacja wymaga wymazania systemu plików FAT. (f6f3355b0)
Inne zmiany i ulepszenia¶
Zreorganizowano dołączony zbiór modeli Qualcomm na foldery oparte na zadaniach (
image_classification,object_detection,pose_estimation,semantic_segmentation,depth_estimation), usunięto nieobsługiwane duże modele (YOLOv7, YOLOv8, deeplabv3, mobilenet_v2) oraz dodanoresnet18idensenet_121(z szerszą zgodnością płytek), a takżefacemap_3dmmiFFNet_40S(tylko AE3/N6). (300ce2fc2)Dodano nowego dostawcę modeli Edge Impulse (model wykrywania twarzy FOMO) oraz nowe modele Google (
micro_speech,mnist_lstm,person_detection) do dołączonego zbioru modeli, a także dodano akcjęView/Editdo menu kontekstowego edytora ROMFS. (80adb2079)Uporządkowano łącza do zbioru modeli: dodano model Qualcomm
face_attrib_net(AE3/N6), usunięto niedziałający wpis YOLO-NAS oraz poprawiono filtry zgodności płytek dla kilku modeli wykrywania obiektów STMicroelectronics. (fd639bda0)Dodano więcej etykiet modeli, zmieniono konfigurację akceleratora NPU jednego z modeli z
stainastedgeaioraz poszerzono filtr zgodności płytekst_yolo_x(teraz również OPENMV_RT1060, OPENMV4P, ARDUINO_GIGA, PORTENTA_H7 i NICLA_VISION oprócz AE3/N6). (1515631ce)Dodanie modelu
.tflitedo ROMFS pomija teraz kompilację Vela/Ethos-U, jeśli model jest już skompilowany dla Ethos-U (jest jedynie kopiowany), a akcja okna dialogowego została przemianowana zAdd ModelnaModel Zoo. (9c0b178fa)Kompilacja ST Edge AI pomija konwersję dla modeli już w formacie
NBIN. (3064411ad)Okno dialogowe kompilatora Vela analizuje zgłaszane przez model zużycie SRAM względem skonfigurowanego rozmiaru sterty każdej płytki i wyświetla procent z ostrzeżeniami/błędami, gdy model przekracza 90% lub 100% dostępnej sterty. (7140fc2aa)
Kompilator Vela zgłasza teraz czytelny błąd „not supported on this platform” zamiast cicho zawodzić, a przeciągnięcie modelu do zbioru modeli nie wymaga już obecności Vela. (c736dd54d, 0ad7fd705)
Kompilator Vela Ethos-U działa teraz poprzez dołączone wbudowane środowisko uruchomieniowe Python (
python -m ethosu.vela) zamiast samodzielnego pliku binarnego. (52f9b8820)Długo działające okna dialogowe kompilacji modeli ST Edge AI i Vela wyświetlają teraz komunikat „This command takes a while to execute. Please be patient.”. (fc9ac2ab5)
Otwieranie przykładów lub nowych skryptów na sensorach PAG7936 (N6/AE3) i PS5520 automatycznie podnosi teraz
sensor.set_framesize(QVGA)doVGAdla sensorów o wyższej rozdzielczości. (dfc27dd25)Dodano automatyczne poprawianie przykładowych skryptów dla kamer termowizyjnych FLIR Boson 320/640, PixArt PAG7920/PAJ6100, FROGEYE2020 oraz kamery zdarzeniowej Prophesee GENX320. (1f54ad01b)
Pobieralne zasoby IDE (oprogramowanie układowe/modele/dokumentacja) instalują się teraz we wspólnym katalogu danych aplikacji dla wszystkich użytkowników poprzez nowe API
ICore::allUsersResourcePath(), a manifest wersji zasobów jest przechowywany w plikuOpenMVIDE.jsonjeden poziom powyżej folderu zasobów dla wszystkich użytkowników. (be308ace2, 7c7dddb87)Podczas aktualizacji oprogramowania układowego pakietu systemowego Alif IDE prosi teraz użytkownika o wykonanie cyklu zasilania (odłączenie i ponowne podłączenie) kamery przed kontynuacją. (162d128f9, 756611696)
Przebudowano przepływ pobierania bootloadera/oprogramowania układowego Alif (Ensemble), aby był zgodny z ROMFS: generuje on App TOC po zapisaniu bootloadera, kopiuje obrazy bin/sign do podfolderu
images/i wgrywafirmware_pad.toc. (f623c9231)Uproszczono nazwy wyświetlane płytek w selektorze oprogramowania układowego poprzez usunięcie zbędnych przyrostków z nazwą układu w nawiasach oraz znaczników „Legacy” (np. „OpenMV Cam H7 (STM32H743)” staje się „OpenMV Cam H7”). (334b04dbd)
Przemianowano dwie akcje w menu Tools dla większej jasności:
Run Bootloader (Load Firmware)to terazLoad Custom Firmware, aErase Onboard Data Flashto terazErase Internal FAT File System(okno potwierdzenia odnosi się teraz do wewnętrznego systemu plików FAT kamery). (0bc275a0a)Przywrócono skróty klawiaturowe
Ctrl+Shift+L(Load Custom Firmware) orazCtrl+Shift+E(Erase Internal FAT File System) i przeniesiono z powrotem pozycjęPreferencesdo menuEdit. (dabb6f7d9, b5daf59a6)Wyłączono automatyczne wykrywanie kompilatora C/C++ oraz łańcucha narzędzi przy uruchomieniu, ponieważ IDE jest przeznaczone dla MicroPython. (f42fcc8f2)
Dodano logo partnera Alif Semiconductor (jasne/ciemne) do sekcji partnerów okna dialogowego
About. (4878781bb)Odczyt oprogramowania układowego podłączonej płytki może teraz opróżnić nieaktualne dane portu szeregowego przed wydaniem polecenia, poprawiając niezawodność zapytań o oprogramowanie układowe/wersję. (c15a46f5b)
Poprawiono niezawodność połączenia ROMFS poprzez wymuszenie ponownego połączenia/odświeżenia przy operacjach odczytu, zapisu i resetu ROMFS. (f9bc83007)
Poprawki błędów¶
Naprawiono okna dialogowe zapisu modeli/skryptów oraz dodawania plików/modeli do ROMFS, aby używały prostego przyrostka pliku zamiast pełnego przyrostka, zapobiegając zniekształceniu rozszerzeń przy zmianie nazw plików zawierających kropki. (52c6820d2)
Naprawiono przepełnienie paska postępu wysyłania DFU przy dużych transferach poprzez obliczanie procentu z użyciem arytmetyki 64-bitowej. (4b91ff2ba)
Naprawiono wgrywanie starszego oprogramowania układowego/bootloaderów OpenMV poprzez zabezpieczenie kroków wymazywania i programowania pamięci flash przed nieprawidłowymi (niedodatnimi) zakresami sektorów flash oraz wyświetlanie wyraźnego błędu zamiast awarii, a także naprawiono zabezpieczenie dostępu do ROMFS podczas aktualizacji starego oprogramowania układowego. (ae2cc15b4, 235dbdb10)
Naprawiono wykrywanie płytki po porcie szeregowym, tak aby odwrotny filtr numeru seryjnego był stosowany tylko podczas walidacji portu (a nie podczas połączenia), oraz dodano odwrotne filtry dla płytki i.MX, aby wykluczyć numery seryjne w trybie bootloadera. (ae2cc15b4)
Naprawiono trwałość typu płytki, tak aby wcześniej zapisane mapowanie płytki nie było już nadpisywane przy ręcznym wyborze typu płytki. (c42d36001)
Naprawa bootloadera rozwiązuje teraz nazwę wyświetlaną ukrytej płytki na jej łańcuch architektury, dzięki czemu ponowne połączenie/naprawa oprogramowania układowego mapuje właściwą płytkę. (a1de7a09c)
Wykrywanie płytki dopasowuje teraz łańcuchy architektury płytki bez rozróżniania wielkości liter. (7a2e0e93f)
Naprawiono brak montowania dysku urządzenia przy szybkim odłączeniu/ponownym podłączeniu poprzez utrwalenie wątku skanowania dysków i ponawianie skanowania dysków do trzech razy, a także zapewniono niezawodne wykonywanie skanowania dysków na wątku skanowania. (455dbe967, 58c0e5456)
Naprawiono brak działania kompilatora modeli (ST Edge AI i Vela) na komputerach Mac z procesorem Intel poprzez zezwolenie na ścieżkę narzędzia ARM64 podczas działania w Rosetta. (32e309e86)
Naprawiono problemy z pamięcią podręczną narzędzi Python i serwera językowego poprzez kierowanie całego dołączonego
__pycache__Pythona do wspólnego katalogu zasobów oraz wstępne rozgrzewanie pamięci podręcznejblhosti.MX przed ograniczonym czasowo połączeniem bootloadera, dzięki czemu wgrywanie nie przekracza już limitu czasu. (f64f3330f)Naprawiono ścieżkę nagłówka MicroPython używaną przez serwer językowy Pythona (do autouzupełniania), aby rozwiązywała się ze ścieżki zasobów dla wszystkich użytkowników, oraz uczyniono wyszukiwanie ścieżki zasobów dla wszystkich użytkowników bardziej odpornym, gdy filtrowanie po nazwie użytkownika nic nie znajduje. (5f2648565, fc1938818)
Naprawiono niedziałające łącza do dokumentacji ST Edge AI w oknie dialogowym opcji kompilatora poprzez konwersję lokalnych ścieżek plików na poprawne adresy URL
file://. (3ac136444)Naprawiono automatyczne wcięcia w edytorze Python, tak aby linie nie były już błędnie wycofywane po linii kończącej się dwukropkiem (electric), np. po nagłówkach
if/for/def. (6555f44ba)Naprawiono wyrównanie rekordu katalogu ROMFS, tak aby przesunięcia folderów uwzględniały rozmiar rekordu nazwy katalogu, oraz zwiększono opóźnienie między plikami przy rozpakowywaniu/tworzeniu plików ROMFS i zbioru modeli, aby zapewnić odrębne znaczniki czasu utworzenia. (9bf7e1d9e, d968a6e46)
Naprawiono przepełnienie liczb całkowitych w konwersji mean-to-depthwise-conv optymalizatora grafu Vela poprzez obliczanie mnożnika wyjściowego w 64 bitach oraz naprawiono nazwę bazową używaną w tytule/wyjściu okna dialogowego kompilatora Vela. (d217a46e9, 8376490eb)
Naprawiono przywracanie rozwiniętych folderów i wybranego modelu w przeglądarce zbioru modeli po ponownym otwarciu oraz przełączono okno dialogowe na alokację na stercie, aby uniknąć problemów z czasem życia GUI. (84a63ef4c)
Naprawiono ścieżkę zapisu jako w Model Zoo, tak aby zapamiętany katalog był przechowywany jako folder, a nie jako pełna nazwa pliku. (be877f7af)
Zachowano starszą ścieżkę zasobów użytkownika zamiast usuwania jej przy uruchomieniu, unikając błędu „close any programs viewing OpenMV IDE data”, gdy stary folder jest zablokowany. (775656775)
Naprawiono skrypty instalatora sterowników Windows oraz pliki catalog/inf, tak aby sterowniki OpenMV DFU, dfuse, FTDI, Arduino, pybcdc i VCR instalowały się niezawodnie i poprawnie zgłaszały kody powodzenia, wzmocniono skrypty instalacyjne sterowników DFU dfuse/vcr oraz ponownie podpisano dołączone katalogi sterowników OpenMV DFU. (48a0a21e3, b7b607250, b4221a884, e4f3bb8f8, 62e869c0b, 583576f2a)
Naprawiono instalator Linux, aby instalował
pyusbpoprzez pakiet dystrybucjipython3-usbi dodawałbuild-essentialzamiast uruchamiaćpip install pyusboraz aby wykrywał system operacyjny za pomocą/etc/os-release. (c471ddc42, 4014a0ba5)Instalator Windows włącza teraz obsługę długich ścieżek, dzięki czemu głęboko zagnieżdżone pliki ST Edge AI instalują się poprawnie. (0b3ca6945)
Obsługa platform i narzędzi¶
Baza Qt Creator: 14.0.2.
Dołączone oprogramowanie układowe OpenMV: zaktualizowane do 4.7.0 na wszystkich płytkach OpenMV i Arduino (OPENMV2/3/4/4P/PT, RT1060, GIGA, Portenta H7, Nicla Vision, Nano 33 BLE/RP2040, AE3, N6); oprogramowanie układowe zostało przebudowane z obsługą ROMFS (
romfs0.img). (6d04b1b50, c44e33d70, a1de7a09c)OpenMV N6 ROMFS: zwiększony z 16MB do 24MB, a obraz romfs przeniesiono do alt-setting 3 DFU. (d0bbb1fe7, d7d3120b3)
OpenMV AE3 ROMFS: zwiększony z 16MB do 24MB, z dodanymi regułami wyrównania 16/32 bajtów dla dołączonych plików modeli
.binna wszystkich płytkach. (746da8914)STM32CubeProgrammer (STM32_Programmer_CLI) dołączony dla macOS, Linux i Windows z pełną bazą urządzeń STM32 oraz zewnętrznymi loaderami do programowania fabrycznego N6; instalacja została odchudzona z nieużywanych zewnętrznych loaderów i plików bazy danych dla poszczególnych MCU, aby zmniejszyć rozmiar. (334b04dbd, 54fea4d57, 28cc94a6e, 2522c900f)
Kompilator ST Edge AI (stedgeai) 2.1.0 dołączony (Windows) dla NPU N6 Neural-ART. (3064411ad)
Kompilator ARM Ethos-U Vela 4.2.0 (z numpy 2.2.4) dołączony dla Linux x86-64, macOS (Apple silicon) i Windows. Pakiet Windows został najpierw dodany w wersji Vela 4.1.0 / numpy 2.2.3, a później podniesiony do końcowej wersji 4.2.0 / numpy 2.2.4. (f9323a1d6, 5f551a5c5, 6506497c6, bcda7d1f0)
mpy-cross 1.25.0.post2 dołączony (macOS/Windows). (8c71548df, 3ab42d58a)
Alif Security Toolkit: zaktualizowany do v1.104.0 (podpisane pliki binarne setools oraz dokument PDF User Guide v1.104.0) dla płytek opartych na Alif Ensemble. (43260719c, 75a58e61b)
Dodano konfiguracje NPU OPENMV_AE3 (Alif Ensemble) ukierunkowane na akceleratory ethos-u55-256 i ethos-u55-128 z konfiguracjami systemowymi RTSS HP/HE SRAM/MRAM/OSPI. (1f5fc546d, 411f708ea)
Dodano schematy wyprowadzeń dla kamer OpenMV N6 i AE3 (sensor PAG7936) do selektora wyprowadzeń oraz nowy przykład kamery zdarzeniowej Genx320 w skali szarości demonstrujący konfigurację filtra antymigotaniowego. (60184bbc5, 6d04b1b50)
Zaktualizowano dopasowywanie USB PID dla Arduino Nicla Vision, aby rozpoznawać nowy PID aplikacji (0x055F) obok oryginalnego (0x045F). (91ce4007c)
Zaktualizowano parametry wgrywania bezpiecznego bootloadera NXP/blhost, aby używały jawnego adresu/długości FCB oraz rozmiaru dysku MBR, zgodnie z najnowszym zestawem narzędzi spsdk. (16b66c3e2)
Instalator Windows dołącza teraz dedykowany sterownik bootloadera STM32 DFU oraz redystrybucyjne pakiety Microsoft Visual C++ 2015+. (cdcd4a5a6, 0cdebfc4c, a02b1f21a)
Usunięto dołączony zbiór modeli DeGirum YOLOv5/YOLOv8 z IDE. (26710be1c)
Breaking changes¶
Widoczne dla użytkownika zmiany przepływu pracy i zachowania w v4.7.0. Nie ma żadnego przełomu w API skryptowym, ale należy zwrócić uwagę na poniższe:
System plików FAT wymazany przy aktualizacji z wersji starszej niż 4.7.0. Aktualizacja dowolnej kamery OpenMV Cam z oprogramowania układowego starszego niż 4.7.0 wymusza teraz wymazanie systemu plików FAT oraz reset/aktualizację ROMFS podczas aktualizacji oprogramowania układowego (pola wyboru okna dialogowego są wymuszone i nie można ich wyłączyć), więc pliki użytkownika przechowywane w wewnętrznej pamięci flash urządzenia zostaną usunięte podczas aktualizacji. (f6f3355b0)
Usunięto pliki binarne oprogramowania układowego UVC i bootloadera Portenta H7. Prekompilowane obrazy oprogramowania układowego kamery internetowej UVC (
uvc.bin/dfu/elf) zostały usunięte dla wszystkich płytek, a pliki binarne bootloadera Arduino Portenta H7 zostały usunięte z pakietu; te prekompilowane obrazy nie mogą już być wgrywane z IDE. (c44e33d70)Przeniesienie katalogu zasobów. Pobieralne zasoby IDE (oprogramowanie układowe, zbiór modeli, dokumentacja) instalują się teraz we wspólnym katalogu danych aplikacji dla wszystkich użytkowników zamiast w ścieżce zasobów dla poszczególnych użytkowników, a manifest wersji przeniesiono z QSettings do pliku
OpenMVIDE.jsonprzechowywanego jeden poziom powyżej folderu zasobów dla wszystkich użytkowników (z wstecznie zgodnym dublowaniem w QSettings). Ponowne pobranie zasobów jest wyzwalane przy pierwszym uruchomieniu po aktualizacji. (be308ace2, 7c7dddb87)