Spisu treści:
- Krok 1: Sipeed MAix: AI na krawędzi
- Krok 2: Przygotuj swoje środowisko
- Krok 3: Skompiluj kod
- Krok 4: Przesyłanie pliku.bin
- Krok 5: Łączenie z Arduino
- Krok 6: Łączenie z Raspberry Pi
- Krok 7: Wniosek
Wideo: Kamera AI dla Raspberry Pi/Arduino: 7 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
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
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
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
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
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
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
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:
Jak korzystać z multimetru w języku tamilskim - Przewodnik dla początkujących - Multimetr dla początkujących: 8 kroków
Jak korzystać z multimetru w języku tamilskim | Przewodnik dla początkujących | Multimetr dla początkujących: Witajcie przyjaciele, W tym samouczku wyjaśniłem, jak używać multimetru we wszelkiego rodzaju obwodach elektronicznych w 7 różnych krokach, takich jak 1) test ciągłości w celu rozwiązywania problemów ze sprzętem 2) Pomiar prądu stałego 3) testowanie diody i diody LED 4) Pomiar Żyw
Karmnik dla kotów (dla zwierząt domowych): 10 kroków
Karmnik dla kotów Industrial Strength (dla zwierząt domowych): Podróżuję przez wiele tygodni i mam te dzikie koty na zewnątrz, które muszą być karmione podczas mojej nieobecności. Od kilku lat korzystam ze zmodyfikowanych podajników zakupionych od Amazona sterowanych za pomocą komputera raspberry pi. Mimo że moje
OXsC-ACW: GUI Customiseur dla OpenXsensor dla multipleksu Wysokościomierz/wariometr: 11 kroków
OXsC-ACW: GUI Customiseur Pour OpenXsensor Pour Multiplex Altimetre/Variometre: openXsensor jest groźny, nie jest łatwy w modyfikowaniu parametrów, które pozwolą Ci osiągnąć doświadczenie J'ai donc écrit un petit program qui permet de choisir les options via une interface si
Użyj 1 wejścia analogowego dla 6 przycisków dla Arduino: 6 kroków
Użyj 1 wejścia analogowego dla 6 przycisków dla Arduino: Często zastanawiałem się, jak mogę uzyskać więcej wejść cyfrowych dla mojego Arduino. Niedawno przyszło mi do głowy, że powinienem móc użyć jednego z wejść analogowych do wprowadzenia wielu wejść cyfrowych. Zrobiłem szybkie wyszukiwanie i znalazłem, gdzie ludzie byli a
Uzyskaj ekran dla swojego Google Home za pomocą Raspberry Pi i Dialogflow (alternatywa dla Chromecasta): 13 kroków
Uzyskaj ekran dla swojego domu Google za pomocą Raspberry Pi i Dialogflow (alternatywa dla Chromecasta): Odkąd kupiłem dom Google, chcę sterować moimi urządzeniami w domu za pomocą poleceń głosowych. Działa świetnie pod każdym względem, ale czułem się źle z powodu jego funkcji wideo. Youtube i Netflix możemy oglądać tylko wtedy, gdy mamy urządzenie Chromecast lub T