Spisu treści:

Kamera AI dla Raspberry Pi/Arduino: 7 kroków
Kamera AI dla Raspberry Pi/Arduino: 7 kroków

Wideo: Kamera AI dla Raspberry Pi/Arduino: 7 kroków

Wideo: Kamera AI dla Raspberry Pi/Arduino: 7 kroków
Wideo: Co potrafi KOMPUTER ZA 200 PLN? | Raspberry PI 4B 2024, Czerwiec
Anonim
Image
Image

Jeśli ostatnio śledziłeś wiadomości, nastąpiła eksplozja start-upów opracowujących chipy przyspieszające wnioskowanie i szkolenie algorytmów ML (uczenia maszynowego). Jednak większość z tych żetonów jest wciąż w fazie rozwoju i nie jest to coś, na czym przeciętny producent może zdobyć rękę. Jak dotąd jedynym znaczącym wyjątkiem był Intel Movidius Neural Compute Stick, który jest dostępny w sprzedaży i jest dostarczany z dobrym pakietem SDK. Ma kilka istotnych wad - mianowicie cenę (około 100 USD) i fakt, że jest w formacie pamięci USB. Świetnie, jeśli chcesz go używać z laptopem lub Raspberry PI, ale co, jeśli chcesz wykonać kilka projektów rozpoznawania obrazu za pomocą Arduino? Lub Raspberry Pi Zero?

Krok 1: Sipeed MAix: AI na krawędzi

Sipeed MAix: AI na krawędzi
Sipeed MAix: AI na krawędzi

Nie tak dawno temu dostałem w swoje ręce płytkę rozwojową Sipeed M1w K210, która ma dwurdzeniowy, 64-bitowy procesor RISC-V i może pochwalić się wbudowanym KPU (procesorem sieci neuronowych), specjalnie zaprojektowanym do przyspieszania CNN do przetwarzania obrazu. Więcej szczegółów znajdziesz tutaj.

Cena tej płyty szczerze mnie zszokowała, to tylko 19 USD za pełnoprawną płytkę rozwojową AI-on-the-edge z obsługą Wi-Fi! Jest jednak pewne zastrzeżenie (oczywiście jest): oprogramowanie układowe micropython dla płyty jest wciąż w fazie rozwoju i ogólnie nie jest na razie zbyt przyjazne dla użytkownika. Jedynym sposobem na dostęp do wszystkich jego funkcji jest napisanie własnego wbudowanego kodu C lub zmodyfikowanie niektórych istniejących wersji demonstracyjnych.

Ten samouczek wyjaśnia, jak używać modelu wykrywania klasy Mobilenet 20 do wykrywania obiektów i wysyłania wykrytego kodu obiektu przez UART, skąd może zostać odebrany przez Arduino/Raspberry Pi.

W tym samouczku zakładamy, że znasz Linuksa i podstawy kompilacji kodu C. Jeśli usłyszenie tego wyrażenia sprawiło, że trochę zakręciło Ci się w głowie:) po prostu przejdź do kroku 4, w którym przesyłasz mój gotowy plik binarny do Sipeed M1 i pomiń kompilację.

Krok 2: Przygotuj swoje środowisko

Przygotuj swoje środowisko
Przygotuj swoje środowisko

Użyłem Ubuntu 16.04 do kompilacji i przesyłania kodu C. Można to zrobić w Windowsie, ale sam tego nie próbowałem.

Pobierz RISC-V GNU Compiler Toolchain, zainstaluj wszystkie niezbędne zależności.

git clone --recursive

sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev

Skopiuj pobrany toolchain do katalogu /opt. Następnie uruchom następujące polecenia

./configure --prefix=/opt/kendryte-toolchain --with-cmodel=medany

robić

Dodaj teraz /opt/kendryte-toolchain/bin do swojej PATH.

Jesteś teraz gotowy do skompilowania kodu!

Krok 3: Skompiluj kod

Skompiluj kod
Skompiluj kod

Pobierz kod z mojego repozytorium github.

Pobierz samodzielny pakiet SDK Kendryte K210

Skopiuj folder /kpu z mojego repozytorium github do folderu /src w SDK.

Uruchom następujące polecenia w folderze SDK (nie w folderze /src!)

mkdir build && cd build

cmake.. -DPROJ=nazwa_projektu -DTOOLCHAIN=/opt/kendryte-toolchain/bin && make

gdzie nazwa_projektu jest nazwą twojego projektu (do Ciebie), a -DTOOLCHAIN= powinno wskazywać na lokalizację twojego łańcucha narzędzi risc-v (pobrałeś go w pierwszym kroku, pamiętasz?)

Świetny! Teraz miejmy nadzieję, że zobaczysz, że kompilacja została zakończona bez błędów i masz plik.bin, który możesz przesłać.

Krok 4: Przesyłanie pliku.bin

Przesyłanie pliku.bin
Przesyłanie pliku.bin

Teraz podłącz Sipeed M1 do komputera i z folderu /build uruchom następujące polecenie

sudo python3 isp_auto.py -d /dev/ttyUSB0 -b 200000 kpu.bin

Gdzie kpu.bin to nazwa twojego pliku.bin

Przesyłanie trwa zwykle 2-3 minuty, po jego zakończeniu zobaczysz, że tablica wykrywa 20 klas. Ostatnim krokiem dla nas jest podłączenie go do Arduino mega lub Raspberry Pi.

!!! Jeśli właśnie przyszedłeś z kroku 2 !

Uruchom następujące polecenie z folderu, w którym sklonowałeś moje repozytorium github

sudo python3 isp_auto.py -d /dev/ttyUSB0 -b 200000 kpu_bin.bin

Przesyłanie trwa zwykle 2-3 minuty, po jego zakończeniu zobaczysz, że tablica wykrywa 20 klas. Ostatnim krokiem dla nas jest podłączenie go do Arduino mega lub Raspberry Pi.

Krok 5: Łączenie z Arduino

Łączenie z Arduino
Łączenie z Arduino
Łączenie z Arduino
Łączenie z Arduino
Łączenie z Arduino
Łączenie z Arduino

Użyłem Arduino Mega z Seeed Studio Mega Shield, dlatego przylutowałem złącze Grove do płytki Sipeed M1. Możesz jednak po prostu użyć przewodów połączeniowych i podłączyć Sipeed M1 bezpośrednio do Arduino Mega, postępując zgodnie z tym schematem połączeń.

Następnie prześlij szkic camera.ino i otwórz monitor szeregowy. Kiedy skierujesz kamerę na różne obiekty (lista 20 klas znajduje się na szkicu) powinna wyświetlić nazwę klasy na monitorze szeregowym!

Gratulacje! Masz teraz działający moduł wykrywania obrazu dla swojego Arduino!

Krok 6: Łączenie z Raspberry Pi

Łączenie z Raspberry Pi
Łączenie z Raspberry Pi
Łączenie z Raspberry Pi
Łączenie z Raspberry Pi

Użyłem czapki Grove Pi+ dla Raspberry Pi 2B, ale znowu, podobnie jak w przypadku Arduino, możesz po prostu bezpośrednio podłączyć Sipeed M1 do interfejsu UART Raspberry Pi zgodnie z tym schematem połączeń.

Następnie uruchom camera_speak.py i skieruj kamerę na różne obiekty, terminal wyświetli następujący tekst „Myślę, że to jest”, a jeśli masz podłączone głośniki, wypowie to zdanie na głos. Całkiem fajnie, prawda?

Krok 7: Wniosek

Żyjemy w bardzo ekscytujących czasach, w których sztuczna inteligencja i uczenie maszynowe przenikają wszystkie obszary naszego życia. Nie mogę się doczekać rozwoju w tym obszarze. Utrzymuję kontakt z zespołem Sipeed i wiem, że aktywnie rozwijają opakowanie micropython dla wszystkich niezbędnych funkcji, w tym akceleracji CNN.

Kiedy będzie gotowy, najprawdopodobniej opublikuję więcej instrukcji, jak korzystać z własnych modeli CNN z micropythonem. Pomyśl o wszystkich ekscytujących aplikacjach, jakie możesz mieć dla płyty, która może obsługiwać własne sieci neuronowe przetwarzania obrazu za tę cenę i przy takim rozmiarze!

Zalecana: