Moduł Coral USB Accelerator – akcelerator obliczeń sieci neuronowych dla Raspberry Pi
Google Coral to platforma umożliwiająca implementację algorytmów sztucznej inteligencji w urządzeniach brzegowych. Oznacza to, że wnioskowanie w ramach tych systemów może być wykonywane już w urządzeniu zbierającym dane i nie muszą być wysyłane do sieci w celu obliczeń w chmurze. Pozwala to zaoszczędzić czas i wykorzystać działanie algorytmów AI, gdy przesyłanie danych do sieci jest problematyczne, np. z powodu problemów z połączeniem lub dużej wrażliwości danych.
Jednym z systemów umożliwiającym wydajne obliczenia w urządzeniach brzegowych jest platforma Google Coral oparta na specjalnym układzie ASIC – Edge TPU. Jest to koprocesor wyspecjalizowany w szybkim przetwarzaniu dużych ilości danych o małej precyzji np. 8-bitowych. Są one kluczowe w efektywnych obliczeniach w algorytmach sztucznej inteligencji. Platforma współpracuje z TensorFlow – otwartą biblioteką zaprojektowaną przez Google Brain Team, służącą do uczenia maszynowego oraz głębokich sieci neuronowych.
Rys. 1. Minikomputer Coral Dev Board
Urządzenia Google Coral, zawierające układ Edge TPU, są dostępne w kilku wersjach. Po pierwsze można kupić kompletny komputer jednopłytkowy – Coral Dev Board. Jest to urządzenie o podobnej wielkości do Raspberry Pi, wyposażony w procesor NXP i.MX 8M, moduły Wi-Fi oraz Bluetooth, interfejsy USB, HDMI, Ethernet, MIPI CSI oraz MIPI DSI. Ponadto dostępne są moduły umożliwiające wykorzystanie możliwości platformy. Moduły te dostępne są w kilku formatach – są to m.in. niezależny moduł SoM, moduł Mini PCIe, oraz dwie karty M.2 – A+E key oraz B+M key. Dostępny jest także moduł podłączany za pomocą interfejsu USB.
Rys. 2. Moduł Coral USB Accelerator z koprocesorem Edge TPU
Moduł Coral USB Accelerator
Interfejs USB jest stosowany w większości komputerów. Jest też oczywiście o wiele wygodniejszy od np. M.2 czy PCIe. W związku z tym Coral USB Accelerator bez problemu może współpracować z każdym komputerem PC z systemem Windows, Linux oraz MacOS, a także z komputerami jednopłytkowymi, takimi jak Raspberry Pi. Można więc w dość prosty sposób dołączyć możliwości sztucznej inteligencji do istniejącego systemu opartego o malinkę lub niewielki komputer PC.
Akcelerator Coral USB jest bardzo popularny w połączeniu właśnie z Raspberry Pi. Urządzenia bardzo łatwo ze sobą skomunikować – wystarczy podpiąć moduł do portu USB malinki. W znaczny sposób pozwala też zwiększyć możliwości Raspberry Pi w zakresie wydajnych obliczeń sztucznej inteligencji. Pozwala to tworzyć projekty o wcześniej niespotykanych możliwościach, np. bardzo wydajne rozpoznawanie obrazów.
Rys. 3. Moduł Coral USB Accelerator podłączony do Raspberry Pi 4B
Instalacja sterowników Google Coral na Raspberry Pi
Aby rozpocząć współpracę modułu Coral USB z Raspberry Pi należy na początek dodać repozytorium Google Coral do listy systemu Raspberry Pi OS. W tym celu należy wykonać poniższe komendy:
echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - sudo apt-get update
Następnie należy zainstalować bibliotekę uruchomieniową Edge TPU:
sudo apt-get install libedgetpu1-std
W tym miejscu należy podłączyć akcelerator do urządzenia za pomocą dołączonego przewodu USB 3.0. Jeśli w momencie instalacji akcelerator był już podłączony, trzeba moduł odłączyć i podłączyć ponownie, aby program udev mógł zastosować nowo wprowadzoną regułę.
Pakiet libedgetpu1-std pozwala na przetwarzanie danych z ograniczoną prędkością. Aby przetwarzać dane z pełną prędkością należy w miejsce pakietu std zastosować pakiet libedgetpu1-max. Pozwala on na wykorzystanie pełni możliwości akceleratora Coral USB, ale znacznie zwiększa pobór mocy i sprawia, że akcelerator bardzo się grzeje. W związku z tym pakiet jest zalecany tylko wtedy, kiedy aplikacja naprawdę potrzebuje zwiększonej mocy obliczeniowej. We wszystkich innych zastosowaniach Google rekomenduje użycie pakietu standardowego.
Instalacja biblioteki TensorFlow Lite
W tym momencie należy zainstalować bibliotekę TensorFlow Lite. Jest to odmiana pakietu TensorFlow do obsługi uczenia maszynowego, przeznaczona specjalnie do stosowania w urządzeniach wbudowanych i mobilnych. Aby zainstalować TensorFlow Lite dla języka Python należy wykonać polecenie:
pip3 install https://dl.google.com/coral/python/tflite_runtime-2.1.0.post1-cp37-cp37m-linux_armv7l.whl
Przykłady wykorzystania biblioteki TensorFlow Lite wraz z kamerą
Google przygotował serię przykładów wykorzystania biblioteki do rozmaitych aplikacji wykorzystujących uczenie maszynowe. W doskonałej większości przypadków koprocesor Edge TPU pozwala wykonać algorytmy dużo sprawniej niż w przypadku bazowania tylko na procesorze komputera. Dobrym przykładem jest tu rozpoznawanie obiektów w czasie rzeczywistym na obrazie z kamery podłączonej do Raspberry Pi. Jeśli korzystamy z samego procesora malinki, jesteśmy w stanie osiągnąć zazwyczaj ok. 4-5 klatek na sekundę. Natomiast jeśli wspomożemy malinkę akceleratorem Coral USB, możemy pracować już z częstotliwością 20-22 FPS.
Przykłady użycia sztucznej inteligencji do rozpoznawania obiektów na obrazach z kamery można pobrać z repozytorium Google. Aby to zrobić należy wykonać polecenia:
mkdir google-coral && cd google-coral git clone https://github.com/google-coral/examples-camera.git --depth 1
Następnie należy pobrać modele decyzyjne.
cd examples-camera sh download_models.sh
Pobrany pakiet zawiera kilka przykładów rozpoznawania obiektów na obrazie z kamery. Różne przykłady wykorzystują różne biblioteki, co pozwala użytkownikowi porównać kilka podejść do rozwiązania problemu. W przykładzie zaprezentuję kod wykorzystujący popularną i otwartą bibliotekę do przetwarzania obrazu – OpenCV. W mojej opinii to właśnie ten kod działa najlepiej ze wszystkich dostarczonych przykładów.
Aby to zrobić należy wejść w folder z przykładami, a następnie w podfolder opencv. Aby zainstalować niezbędne pakiety oraz biblioteki należy uruchomić skrypt install_requirements.sh następującym poleceniem:
./install_requirements.sh
Aby włączyć przykład oparty o bibliotekę OpenCV należy uruchomić komendę:
python3 detect.py
Poniższy zrzut ekranu obrazuje pracę przykładu.
Rys. 4. Rozpoznawanie obrazu za pomocą Raspberry Pi oraz akceleratora Coral USB
Przykład działa dość płynnie i nie ma problemów z rozpoznawaniem podstawowych obiektów. Pozwala też na zmianę modelu decyzyjnego za pomocą parametru –model oraz —label. Można więc dostosować użycie algorytmu do swoich potrzeb.
Więcej informacji o platformie, bibliotece oraz inne przykłady użycia można znaleźć na stronie https://coral.ai/
Podsumowanie
Akcelerator Coral USB umożliwia rozszerzenie możliwości komputerów takich jak Raspberry Pi o szybkie wnioskowanie w ramach uczenia maszynowego. Produkt wykorzystuje układ Google Edge TPU oraz współpracuje z biblioteką TensorFlow Lite. Pozwala więc na współpracę z wiodącym ekosystemem Google do rozwoju sztucznej inteligencji. Połączenie powszechnej i łatwej w programowaniu platformy Raspberry Pi oraz mocy obliczeniowej dostarczanej przez Coral USB pozwala na efektywne projektowanie aplikacji wbudowanych wykorzystującej algorytmy sztucznej inteligencji w urządzeniach brzegowych.
Wszystkie urządzenia z oferty Google Coral, w tym akcelerator Coral USB są dostępne w ofercie sklepu Kamami.pl