Obsah:

AI kamera pro Raspberry Pi/Arduino: 7 kroků
AI kamera pro Raspberry Pi/Arduino: 7 kroků

Video: AI kamera pro Raspberry Pi/Arduino: 7 kroků

Video: AI kamera pro Raspberry Pi/Arduino: 7 kroků
Video: Автопилот для автомобиля на raspberry pi, arduino и OpenCV 2024, Listopad
Anonim
Image
Image

Pokud jste v poslední době sledovali novinky, došlo k explozi začínajících firem vyvíjejících čipy pro urychlování odvozování a školení algoritmů ML (strojového učení). Většina těchto čipů je však stále ve vývoji a není to něco, co by váš průměrný výrobce mohl dostat do rukou. Jedinou významnou výjimkou byla zatím Intel Movidius Neural Compute Stick, kterou je možné zakoupit a je dodávána s dobrou sadou SDK. Má to několik významných nevýhod - konkrétně cenu (kolem 100 USD) a skutečnost, že je dodáván ve formátu USB. Je skvělé, pokud ho chcete používat s notebookem nebo Raspberry PI, ale co když chcete s Arduinem provádět nějaké projekty rozpoznávání obrázků? Nebo Raspberry Pi Zero?

Krok 1: Sipeed MAix: AI na okraji

Sipeed MAix: AI na okraji
Sipeed MAix: AI na okraji

Není to tak dávno, co se mi dostala do rukou vývojová deska Sipeed M1w K210, která má dvoujádrový 64bitový procesor RISC-V a pyšní se integrovaným KPU (Neural Network Processor), speciálně navrženým pro akceleraci CNN pro zpracování obrazu. Více podrobností si můžete přečíst zde.

Cena této desky mě upřímně šokovala, je to pouhých 19 USD za plnohodnotnou vývojovou desku AI-on-the-edge s podporou Wi-Fi! Existuje však varování (samozřejmě existuje): firmware mikropythonu pro desku je stále ve vývoji a celkově není prozatím příliš uživatelsky přívětivý. Jediný způsob, jak získat přístup ke všem jeho funkcím právě teď, je napsat vlastní vložený kód C nebo upravit některá stávající dema.

Tento tutoriál vysvětluje, jak pomocí modelu detekce třídy Mobilenet 20 detekovat objekty a odeslat kód detekovaného objektu přes UART, odkud jej může přijímat Arduino/Raspberry Pi.

Tento tutoriál předpokládá, že jste obeznámeni s Linuxem a základy kompilace kódu C. Pokud se vám tato fráze trochu zatočila:), pak přejděte ke kroku 4, kde nahrajete můj předem vytvořený binární soubor na Sipeed M1 a přeskočíte kompilaci.

Krok 2: Připravte si prostředí

Připravte si prostředí
Připravte si prostředí

Pro kompilaci a nahrávání kódu C jsem použil Ubuntu 16.04. Ve Windows je to možné, ale sám jsem to nezkoušel.

Stáhněte si RISC-V GNU Compiler Toolchain, nainstalujte všechny potřebné závislosti.

git clone-rekurzivní

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

Zkopírujte stažený řetězec nástrojů do adresáře /opt. Poté spusťte následující příkazy

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

udělat

Přidejte/opt/kendryte-toolchain/bin do své PATH nyní.

Nyní jste připraveni zkompilovat kód!

Krok 3: Sestavte kód

Sestavte kód
Sestavte kód

Stáhněte si kód z mého úložiště github.

Stáhněte si samostatnou SDK Kendryte K210

Zkopírujte složku /kpu z mého úložiště github do složky /src v SDK.

Spusťte následující příkazy ve složce SDK (ne ve složce /src!)

mkdir build && cd build

cmake.. -DPROJ = název_projektu -DTOOLCHAIN =/opt/kendryte -toolchain/bin && make

kde název_projektu je název vašeho projektu (na vás) a -DTOOLCHAIN = by měl ukazovat na umístění vašeho řetězce nástrojů risc -v (stáhli jste si jej v prvním kroku, pamatujete?)

Skvělý! Doufejme, že nyní uvidíte kompilaci dokončenou bez chyb a máte soubor.bin, který můžete nahrát.

Krok 4: Nahrání souboru.bin

Odesílání souboru.bin
Odesílání souboru.bin

Nyní připojte svůj Sipeed M1 k počítači a ze složky /build spusťte následující příkaz

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

Kde kpu.bin je název vašeho souboru.bin

Nahrávání obvykle trvá 2–3 minuty, po dokončení uvidíte desku s detekcí 20 tříd. Posledním krokem pro nás je připojení k Arduino mega nebo Raspberry Pi.

!!! Pokud jste právě přišli z kroku 2 !

Spusťte následující příkaz ze složky, kam jste naklonovali mé úložiště github

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

Nahrávání obvykle trvá 2–3 minuty, po jeho dokončení uvidíte desku s detekcí 20 tříd. Posledním krokem pro nás je připojení k Arduino mega nebo Raspberry Pi.

Krok 5: Připojení k Arduinu

Připojení k Arduinu
Připojení k Arduinu
Připojení k Arduinu
Připojení k Arduinu
Připojení k Arduinu
Připojení k Arduinu

Použil jsem Arduino Mega s Seeed Studio Mega Shield, proto jsem připájel konektor Grove na desku Sipeed M1. Můžete však použít propojovací vodiče a připojit Sipeed M1 přímo k Arduino Mega podle tohoto schématu zapojení.

Poté nahrajte skicu camera.ino a otevřete sériový monitor. Když namíříte kameru na různé objekty (seznam 20 tříd je v náčrtu), měla by na sériovém monitoru zobrazit název třídy!

Gratulujeme! Nyní máte funkční modul detekce obrazu pro vaše Arduino!

Krok 6: Připojení k Raspberry Pi

Připojení k Raspberry Pi
Připojení k Raspberry Pi
Připojení k Raspberry Pi
Připojení k Raspberry Pi

Použil jsem klobouk Grove Pi+ pro Raspberry Pi 2B, ale opět, stejně jako u Arduina, můžete jednoduše připojit Sipeed M1 k rozhraní UART Raspberry Pi podle tohoto schématu zapojení.

Poté spusťte camera_speak.py a nasměrujte kameru na různé objekty, terminál vydá následující text „Myslím, že je“a pokud máte připojené reproduktory, vysloví tuto frázi nahlas. Docela cool, že?

Krok 7: Závěr

Toto je velmi vzrušující doba, ve které žijeme, kdy AI a strojové učení pronikají do všech oblastí našeho života. Těším se na vývoj v této oblasti. Zůstávám v kontaktu s týmem Sipeed a vím, že aktivně vyvíjejí obal pro mikropython pro všechny potřebné funkce, včetně akcelerace CNN.

Až bude připraven, velmi pravděpodobně zveřejním další instruktáže o tom, jak používat vaše vlastní modely CNN s mikropythonem. Přemýšlejte o všech vzrušujících aplikacích, které můžete mít pro desku, která může provozovat vaše vlastní neuronové sítě pro zpracování obrazu za tuto cenu as touto stopou!

Doporučuje: