Taula de continguts:

Càmera AI per a Raspberry Pi / Arduino: 7 passos
Càmera AI per a Raspberry Pi / Arduino: 7 passos

Vídeo: Càmera AI per a Raspberry Pi / Arduino: 7 passos

Vídeo: Càmera AI per a Raspberry Pi / Arduino: 7 passos
Vídeo: How to Make 3D Hologram Video Projector at Home | DIY 2024, De novembre
Anonim
Image
Image

Si heu estat seguint les notícies recentment, hi va haver una explosió d’empreses emergents que desenvolupaven xips per accelerar la inferència i la formació d’algoritmes de ML (machine learning). Tanmateix, la majoria d'aquests xips encara estan en desenvolupament i no és realment una cosa que el vostre fabricant mitjà pugui aconseguir. L'única excepció significativa fins al moment va ser Intel Movidius Neural Compute Stick, que es pot comprar i ve amb un bon SDK. Té alguns desavantatges significatius, és a dir, el preu (al voltant de 100 USD) i el fet que es presenta en format de memòria USB. És fantàstic si el voleu utilitzar amb ordinadors portàtils o Raspberry PI, però, i si voleu fer alguns projectes de reconeixement d’imatges amb Arduino? O Raspberry Pi Zero?

Pas 1: Sipeed MAix: IA al Edge

Sipeed MAix: IA al Edge
Sipeed MAix: IA al Edge

No fa molt de temps vaig posar les mans en la placa de desenvolupament Sipeed M1w K210, que té una CPU RISC-V de 64 bits de doble nucli i compta amb un KPU (processador de xarxa neuronal) integrat, dissenyat específicament per accelerar CNN per al processament d’imatges. Podeu llegir més detalls aquí.

El preu d’aquest tauler em va sorprendre francament, és de només 19 dòlars per a un tauler de desenvolupament de gamma completa amb compatibilitat Wi-Fi. Tanmateix, hi ha una advertència (és clar que sí): el microprogramari del micropitó per a la placa encara està en desenvolupament i, en general, no és massa fàcil d'utilitzar fins ara. L’única manera d’accedir a totes les seves funcions ara mateix és escriure el vostre propi codi C incrustat o modificar algunes demostracions existents.

Aquest tutorial explica com utilitzar el model de detecció de classes Mobilenet 20 per detectar els objectes i enviar el codi d'objecte detectat a través de UART, des d'on el pot rebre Arduino / Raspberry Pi.

Ara, aquest tutorial suposa que coneixeu Linux i els fonaments bàsics de la compilació del codi C. Si escoltar aquesta frase us va causar una mica de mareig:), només heu de passar al pas 4, on pengeu el meu binari preconstruït a Sipeed M1 i ometeu la compilació.

Pas 2: prepareu el vostre entorn

Prepareu el vostre entorn
Prepareu el vostre entorn

He utilitzat Ubuntu 16.04 per recopilar i penjar codi C. És possible fer-ho al Windows, però jo mateix no ho vaig provar.

Descarregueu la cadena d’eines del compilador GNU RISC-V, instal·leu totes les dependències necessàries.

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

Copieu la cadena d'eines descarregada al directori / opt. Després d'això, executeu les següents ordres

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

fer

Afegiu / opt / kendryte-toolchain / bin al vostre PATH ara.

Ja esteu preparats per compilar el codi.

Pas 3: Compileu el codi

Compileu el codi
Compileu el codi

Baixeu-vos el codi del meu repositori de github.

Descarregueu l'SDK independent de Kendryte K210

Copia la carpeta / kpu del meu dipòsit github a la carpeta / src de l'SDK.

Executeu les ordres següents a la carpeta SDK (no la carpeta / src!)

mkdir build && cd build

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

on nom_projecte és el nom del vostre projecte (fins a vosaltres) i -DTOOLCHAIN = hauria d’assenyalar la ubicació de la vostra cadena d’eines risc-v (l’heu descarregat al primer pas, recordeu?)

Genial! Ara esperem que vegeu la compilació acabada sense errors i que tingueu un fitxer.bin que podeu penjar.

Pas 4: càrrega del fitxer.bin

Carregant el fitxer.bin
Carregant el fitxer.bin

Ara connecteu el Sipeed M1 a l'ordinador i des de la carpeta / build executeu l'ordre següent

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

On kpu.bin és el nom del fitxer.bin

La càrrega normalment triga 2-3 minuts, un cop acabada, veureu el tauler executant 20 classes de detecció. L’últim pas per a nosaltres és connectar-lo a Arduino mega o Raspberry Pi.

!!! Si acabes de venir del pas 2 !

Executeu l'ordre següent des de la carpeta on heu clonat el dipòsit de github

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

La càrrega normalment triga 2-3 minuts, un cop acabada, veureu el tauler executant 20 classes de detecció. L’últim pas per a nosaltres és connectar-lo a Arduino mega o Raspberry Pi.

Pas 5: Connexió a Arduino

Connexió a Arduino
Connexió a Arduino
Connexió a Arduino
Connexió a Arduino
Connexió a Arduino
Connexió a Arduino

He utilitzat l’Arduino Mega amb Seeed Studio Mega Shield, per això he soldat un connector Grove a la placa Sipeed M1. Tot i això, només podeu utilitzar cables jumper i connectar Sipeed M1 directament a Arduino Mega, seguint aquest esquema de cablejat.

Després carregueu l'esbós camera.ino i obriu el monitor de sèrie. Quan assenyaleu la càmera cap a diferents objectes (la llista de 20 classes es troba a l'esbós), hauria de generar el nom de la classe al monitor sèrie.

Enhorabona! Ara teniu un mòdul de detecció d'imatges de treball per al vostre Arduino.

Pas 6: Connexió a Raspberry Pi

Connexió a Raspberry Pi
Connexió a Raspberry Pi
Connexió a Raspberry Pi
Connexió a Raspberry Pi

He utilitzat el barret Grove Pi + per a Raspberry Pi 2B, però de nou, igual que amb Arduino, podeu connectar directament Sipeed M1 a la interfície UART de Raspberry Pi seguint aquest esquema de cablejat.

Després d'aquest llançament camera_speak.py i apuntant la càmera cap a diferents objectes, el terminal emetrà el següent text "Crec que és" i, també, si teniu altaveus connectats, pronunciarà aquesta frase en veu alta. Bastant xulo, oi?

Pas 7: Conclusió

Són moments molt emocionants que vivim, amb la IA i l’aprenentatge automàtic que penetren a totes les àrees de la nostra vida. Estic desitjant el desenvolupament en aquesta àrea. Estic en contacte amb l'equip de Sipeed i sé que estan desenvolupant activament un embolcall de micropitons per a totes les funcions necessàries, inclosa l'acceleració CNN.

Quan estigui a punt, és probable que publiqui més instruccions sobre com utilitzar els vostres propis models CNN amb micropitó. Penseu en totes les emocionants aplicacions que podeu tenir per a una placa que pot executar les vostres pròpies xarxes neuronals de processament d’imatges per aquest preu i amb aquesta petjada.

Recomanat: