Inhaltsverzeichnis:

AI-Kamera für Raspberry Pi/Arduino - Gunook
AI-Kamera für Raspberry Pi/Arduino - Gunook

Video: AI-Kamera für Raspberry Pi/Arduino - Gunook

Video: AI-Kamera für Raspberry Pi/Arduino - Gunook
Video: Pixy2 Camera - Image Recognition for Arduino & Raspberry Pi 2024, Juni
Anonim
Image
Image

Wenn Sie die Nachrichten in letzter Zeit verfolgt haben, gab es eine Explosion von Start-ups, die Chips zur Beschleunigung der Inferenz und des Trainings von ML-Algorithmen (Machine Learning) entwickelten. Die meisten dieser Chips befinden sich jedoch noch in der Entwicklung und sind nicht wirklich etwas, das Ihr durchschnittlicher Hersteller in die Hände bekommen kann. Die einzige nennenswerte Ausnahme war bisher der Intel Movidius Neural Compute Stick, der käuflich zu erwerben ist und mit einem guten SDK geliefert wird. Es hat einige wesentliche Nachteile - nämlich den Preis (ca. 100 USD) und die Tatsache, dass es im USB-Stick-Format geliefert wird. Es ist großartig, wenn Sie es mit einem Laptop oder Raspberry PI verwenden möchten, aber was, wenn Sie einige Bilderkennungsprojekte mit Arduino durchführen möchten? Oder Raspberry Pi Zero?

Schritt 1: Sipeed MAix: KI am Edge

Sipeed MAix: KI am Edge
Sipeed MAix: KI am Edge

Vor nicht allzu langer Zeit habe ich das Entwicklungsboard Sipeed M1w K210 in die Hände bekommen, das über eine Dual-Core-RISC-V-64-Bit-CPU und eine integrierte KPU (Neural Network Processor) verfügt, die speziell für die Beschleunigung von CNN für die Bildverarbeitung entwickelt wurde. Weitere Details können Sie hier lesen.

Der Preis dieses Boards hat mich ehrlich gesagt schockiert, es beträgt nur 19 USD für ein vollwertiges AI-on-the-Edge-Entwicklungsboard mit Wi-Fi-Unterstützung! Es gibt jedoch einen Vorbehalt (natürlich gibt es): Die Micropython-Firmware für das Board befindet sich noch in der Entwicklung und ist insgesamt derzeit nicht allzu benutzerfreundlich. Die einzige Möglichkeit, auf alle Funktionen zuzugreifen, besteht derzeit darin, Ihren eigenen eingebetteten C-Code zu schreiben oder einige vorhandene Demos zu modifizieren.

In diesem Tutorial wird erklärt, wie Sie das Mobilenet 20-Klassenerkennungsmodell verwenden, um die Objekte zu erkennen und den erkannten Objektcode über UART zu senden, von wo aus er von Arduino/Raspberry Pi empfangen werden kann.

In diesem Tutorial wird davon ausgegangen, dass Sie mit Linux und den Grundlagen der Kompilierung von C-Code vertraut sind. Wenn Ihnen das Hören dieses Satzes ein wenig schwindelig wurde:), dann fahren Sie einfach mit Schritt 4 fort, wo Sie meine vorgefertigte Binärdatei auf Sipeed M1 hochladen und das Kompilieren überspringen.

Schritt 2: Bereiten Sie Ihre Umgebung vor

Bereiten Sie Ihre Umgebung vor
Bereiten Sie Ihre Umgebung vor

Ich habe Ubuntu 16.04 zum Kompilieren und Hochladen von C-Code verwendet. Unter Windows ist das möglich, aber ich selbst habe es nicht ausprobiert.

Laden Sie die RISC-V GNU Compiler Toolchain herunter und installieren Sie alle erforderlichen Abhängigkeiten.

git clone --rekursive

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

Kopieren Sie die heruntergeladene Toolchain in das Verzeichnis /opt. Führen Sie danach die folgenden Befehle aus

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

machen

Fügen Sie jetzt /opt/kendryte-toolchain/bin zu Ihrem PATH hinzu.

Sie können jetzt den Code kompilieren!

Schritt 3: Kompilieren Sie den Code

Kompilieren Sie den Code
Kompilieren Sie den Code

Laden Sie den Code aus meinem Github-Repository herunter.

Kendryte K210 Standalone-SDK herunterladen

Kopieren Sie den Ordner /kpu aus meinem Github-Repository in den Ordner /src im SDK.

Führen Sie die folgenden Befehle im SDK-Ordner aus (nicht im /src-Ordner!)

mkdir build && cd build

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

wobei project_name der Name Ihres Projekts ist (bis zu Ihnen) und -DTOOLCHAIN= auf den Speicherort Ihrer risc-v-Toolchain zeigen sollte (Sie haben sie im ersten Schritt heruntergeladen, erinnern Sie sich?)

Groß! Jetzt sehen Sie hoffentlich, dass die Kompilierung ohne Fehler abgeschlossen wurde und Sie eine.bin-Datei haben, die Sie hochladen können.

Schritt 4: Hochladen der.bin-Datei

Hochladen der.bin-Datei
Hochladen der.bin-Datei

Verbinden Sie nun Ihren Sipeed M1 mit dem Computer und führen Sie aus dem /build-Ordner den folgenden Befehl aus

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

Dabei ist kpu.bin der Name Ihrer.bin-Datei

Der Upload dauert normalerweise 2-3 Minuten, danach wird das Board 20 Klassen erkennen. Der letzte Schritt für uns ist die Verbindung mit Arduino mega oder Raspberry Pi.

!!! Wenn Sie gerade von Schritt 2 gekommen sind !

Führen Sie den folgenden Befehl aus dem Ordner aus, in dem Sie mein Github-Repository geklont haben

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

Der Upload dauert normalerweise 2-3 Minuten, danach wird das Board 20 Klassen erkennen. Der letzte Schritt für uns ist die Verbindung mit Arduino mega oder Raspberry Pi.

Schritt 5: Anschließen an Arduino

Verbindung zu Arduino
Verbindung zu Arduino
Verbindung zu Arduino
Verbindung zu Arduino
Verbindung zu Arduino
Verbindung zu Arduino

Ich habe den Arduino Mega mit Seeed Studio Mega Shield verwendet, deshalb habe ich einen Grove-Stecker an die Sipeed M1-Platine gelötet. Sie können jedoch einfach Überbrückungsdrähte verwenden und Sipeed M1 direkt an Arduino Mega anschließen, indem Sie diesem Schaltplan folgen.

Laden Sie danach die Camera.ino-Skizze hoch und öffnen Sie den Serial Monitor. Wenn Sie die Kamera auf verschiedene Objekte richten (die Liste der 20 Klassen ist in der Skizze) sollte der Name der Klasse im seriellen Monitor ausgegeben werden!

Herzliche Glückwünsche! Sie haben jetzt ein funktionierendes Bilderkennungsmodul für Ihr Arduino!

Schritt 6: Anschließen an Raspberry Pi

Verbindung mit Raspberry Pi
Verbindung mit Raspberry Pi
Verbindung mit Raspberry Pi
Verbindung mit Raspberry Pi

Ich habe Grove Pi + Hut für Raspberry Pi 2B verwendet, aber wie bei Arduino können Sie Sipeed M1 einfach direkt an die UART-Schnittstelle von Raspberry Pi anschließen, indem Sie diesem Schaltplan folgen.

Danach starten Sie camera_speak.py und richten Sie die Kamera auf verschiedene Objekte. Das Terminal gibt den folgenden Text aus: "Ich denke, es ist" und auch wenn Sie Lautsprecher angeschlossen haben, wird es diesen Satz laut aussprechen. Ziemlich cool, nicht wahr?

Schritt 7: Fazit

Wir leben in sehr aufregenden Zeiten, in denen KI und maschinelles Lernen alle Bereiche unseres Lebens durchdringen. Ich freue mich auf die Entwicklung in diesem Bereich. Ich bleibe in Kontakt mit dem Sipeed-Team und weiß, dass sie aktiv Micropython-Wrapper für alle notwendigen Funktionen entwickeln, einschließlich der CNN-Beschleunigung.

Wenn es fertig ist, werde ich sehr wahrscheinlich weitere Anleitungen zur Verwendung Ihrer eigenen CNN-Modelle mit Micropython veröffentlichen. Denken Sie an all die aufregenden Anwendungen, die Sie für ein Board haben können, das zu diesem Preis und mit diesem Footprint Ihre eigenen neuronalen Bildverarbeitungsnetze betreiben kann!

Empfohlen: