Spisu treści:

Demonstracje Sipeed MaiX Bit OpenMV - Wizja komputerowa: 3 kroki
Demonstracje Sipeed MaiX Bit OpenMV - Wizja komputerowa: 3 kroki

Wideo: Demonstracje Sipeed MaiX Bit OpenMV - Wizja komputerowa: 3 kroki

Wideo: Demonstracje Sipeed MaiX Bit OpenMV - Wizja komputerowa: 3 kroki
Wideo: Unpacking and OpenMV Demos Sipeed MaiX Bit 2024, Listopad
Anonim
Image
Image

Jest to drugi artykuł z serii o Sipeed AI na platformie mikrokontrolerów Edge. Tym razem będę pisał o MaiX Bit (link do sklepu Seeed Studio), mniejszej, gotowej do pracy na płytce prototypowej. Jego specyfikacje są bardzo podobne do MaiX Dock, płyty, której użyłem w ostatnim samouczku, ponieważ używają tego samego chipa, Kendryte K210.

Będziemy używać oprogramowania układowego micropython, aby wypróbować niektóre wersje demonstracyjne OpenMV. Oto opis ze strony głównej OpenMV:

Projekt OpenMV polega na tworzeniu tanich, rozszerzalnych, opartych na języku Python modułów widzenia maszynowego i ma na celu stanie się „Arduino wizji maszynowej”.… Python znacznie ułatwia pracę z algorytmami wizji maszynowej. Na przykład metoda find_blobs() w kodzie wyszukuje kolorowe obiekty blob i zwraca listę 8-wartościowych obiektów reprezentujących każdy znaleziony kolor blob. W Pythonie iterowanie po liście obiektów zwracanych przez find_blobs() i rysowanie prostokąta wokół każdego koloru blob jest łatwe do wykonania w zaledwie dwóch wierszach kodu.

Tak więc, pomimo tego, że MaiX Bit oferuje dedykowany akcelerator sieci neuronowych, czasami może być łatwiej po prostu użyć zakodowanych na sztywno algorytmów OpenMV do wykonania zadania lub użyć ich razem.

Niektóre przypadki użycia, które przychodzą mi do głowy, to:

1) Wykrywanie linii dla bota podążającego za linią

2) Wykrywanie sygnalizacji świetlnej z wykrywaniem okręgów i kolorów

3) Korzystanie z wykrywania twarzy, aby znaleźć twarze do rozpoznawania twarzy (z DNN)

Repozytorium Github dla tego artykułu

Krok 1: Oprogramowanie Flash Micropython

Połącz się z MaiX Bit
Połącz się z MaiX Bit

Przede wszystkim będziemy musieli sflashować oprogramowanie micropython na naszą płytę. Prekompilowany plik binarny znajduje się w repozytorium github dla tego artykułu, wraz z kflash.py (narzędziem flash). Jeśli chcesz skompilować oprogramowanie układowe z kodu źródłowego, po prostu pobierz kod źródłowy z https://github.com/sipeed/MaixPy, zainstaluj toolchain i skompiluj kod źródłowy do pliku maixpy.bin. Szczegółowe instrukcje budowania można znaleźć tutaj.

Flashuj plik binarny za pomocą

sudo python3 kflash.py kpu.bin

Po pomyślnym flashowaniu przejdź do następnego kroku.

Krok 2: Połącz się z MaiX Bit

Teraz nasz Bit MaiX powinien być dostępny przez połączenie szeregowe USB z szybkością transmisji 115200. Możesz użyć swojego ulubionego oprogramowania do komunikacji szeregowej lub po prostu poleceń cat and echo, cokolwiek odpowiada Twoim potrzebom. Używałem ekranu do komunikacji szeregowej i uważam, że jest to bardzo wygodne.

Polecenie nawiązania sesji komunikacji szeregowej z ekranem to:

ekran sudo /dev/ttyUSB0 115200

gdzie /dev/ttyUSB0 to adres twojego urządzenia.

Może być konieczne naciśnięcie przycisku resetowania na mikrokontrolerze, aby zobaczyć powitanie i monit interpretera Pythona.

Krok 3: Uruchom wersje demonstracyjne

Teraz możesz uzyskać dostęp do trybu kopiowania, naciskając Ctrl + E i skopiuj i wklej kody demonstracyjne. Aby je uruchomić, naciśnij Ctrl+D w trybie kopiowania.

Jeśli nie chcesz nagrywać filmów, musisz skomentować linie nagrywania wideo. W przeciwnym razie kod zgłosi wyjątek, jeśli nie ma włożonej karty SD

Oto krótkie opisy każdego demo:

Znajdź kręgi - używa funkcji find_circles z OpenMV. Potrzebuje więcej poprawek dla konkretnej aplikacji, w szczególności progu (kontroluje, jakie okręgi są wykrywane z transformacji hough. Zwracane są tylko okręgi o wielkości większej lub równej wartości progowej) oraz wartości r_min, r_max.

Znajdź prostokąty - używa funkcji find_rects z OpenMV. Możesz bawić się wartością progową, ale wartość, którą mam w demie, działa całkiem dobrze przy znajdowaniu prostokątów.

Znajdź twarze, znajdź oczy - wykorzystuje funkcję find_features z kaskadami Haar do wykrywania oczu i twarzy na obrazie. Możesz bawić się wartościami progowymi i skalowymi, aby uzyskać odpowiedni kompromis między prędkością a dokładnością.

Znajdź nieskończone linie - używa funkcji find_lines, aby znaleźć wszystkie nieskończone linie na obrazie za pomocą przekształcenia hough.

Wykryj kolor - używa funkcji get_statistics do uzyskania obiektu percentyla, a następnie konwertuje średnie wartości krotki LAB na krotkę wartości RGB. Sam napisałem ten przykład i działa on całkiem dobrze, ale pamiętaj, że na wyniki wykrywania kolorów będą miały wpływ warunki oświetlenia otoczenia.

W repozytorium OpenMV na githubie znajdziesz o wiele więcej ciekawych dem! Są one w większości kompatybilne z micropythonem MaiX Bit, jedyne, o czym musisz pamiętać, to dodać sensor.run(1) po ustawieniu formatu pikseli i rozmiaru ramki.

Miłego eksperymentowania z kodem OpenMV. Jeśli masz jakieś pytania lub chcesz podzielić się swoimi interesującymi wynikami, nie wahaj się skontaktować ze mną na Youtube lub LinkedIn. A teraz przepraszam, zrobię roboty!

Zalecana: