Sommario:
- Passaggio 1: Sipeed MAix: AI at the Edge
- Passaggio 2: prepara il tuo ambiente
- Passaggio 3: compila il codice
- Passaggio 4: caricamento del file.bin
- Passaggio 5: connessione ad Arduino
- Passaggio 6: connessione a Raspberry Pi
- Passaggio 7: conclusione
Video: Fotocamera AI per Raspberry Pi/Arduino: 7 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:03
Se hai seguito le notizie di recente, c'è stata un'esplosione di start-up che sviluppano chip per accelerare l'inferenza e l'addestramento degli algoritmi ML (apprendimento automatico). Tuttavia, la maggior parte di questi chip è ancora in fase di sviluppo e non è proprio qualcosa su cui il tuo produttore medio può mettere le mani. L'unica eccezione significativa finora è stata Intel Movidius Neural Compute Stick, che è disponibile per l'acquisto e viene fornita con un buon SDK. Presenta alcuni svantaggi significativi, ovvero il prezzo (circa 100 USD) e il fatto che sia disponibile in formato chiavetta USB. È fantastico se vuoi usarlo con laptop o Raspberry PI, ma cosa succede se vuoi fare alcuni progetti di riconoscimento delle immagini con Arduino? O Raspberry Pi Zero?
Passaggio 1: Sipeed MAix: AI at the Edge
Non molto tempo fa ho messo le mani sulla scheda di sviluppo Sipeed M1w K210, che ha una CPU RISC-V a 64 bit dual-core e vanta una KPU (Neural Network Processor) integrata, specificamente progettata per accelerare la CNN per l'elaborazione delle immagini. Puoi leggere maggiori dettagli qui.
Il prezzo di questa scheda mi ha francamente scioccato, sono solo 19 USD per una scheda di sviluppo AI-on-the-edge completa con supporto Wi-Fi! C'è però un avvertimento (ovviamente c'è): il firmware micropython per la scheda è ancora in fase di sviluppo e nel complesso non è troppo facile da usare per ora. L'unico modo per accedere a tutte le sue funzioni in questo momento è scrivere il tuo codice C incorporato o modificare alcune demo esistenti.
Questo tutorial spiega come utilizzare il modello di rilevamento della classe Mobilenet 20 per rilevare gli oggetti e inviare il codice dell'oggetto rilevato tramite UART, da dove può essere ricevuto da Arduino/Raspberry Pi.
Ora, questo tutorial presuppone che tu abbia familiarità con Linux e le basi della compilazione del codice C. Se sentire questa frase ti ha fatto venire un po' le vertigini:) allora vai al passaggio 4, dove carichi il mio binario pre-costruito su Sipeed M1 e salti la compilazione.
Passaggio 2: prepara il tuo ambiente
Ho usato Ubuntu 16.04 per la compilazione e il caricamento del codice C. È possibile farlo in Windows, ma io stesso non l'ho provato.
Scarica la Toolchain del compilatore GNU RISC-V, installa tutte le dipendenze necessarie.
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
Copia la toolchain scaricata nella directory /opt. Dopodiché esegui i seguenti comandi
./configure --prefix=/opt/kendryte-toolchain --with-cmodel=medany
fare
Aggiungi ora /opt/kendryte-toolchain/bin al tuo PATH.
Ora sei pronto per compilare il codice!
Passaggio 3: compila il codice
Scarica il codice dal mio repository github.
Scarica Kendryte K210 SDK standalone
Copia la cartella /kpu dal mio repository github alla cartella /src in SDK.
Esegui i seguenti comandi nella cartella SDK (non nella cartella /src!)
mkdir build && build cd
cmake.. -DPROJ=nome_progetto -DTOOLCHAIN=/opt/kendryte-toolchain/bin && make
dove project_name è il nome del tuo progetto (dipende da te) e -DTOOLCHAIN= dovrebbe puntare alla posizione della tua toolchain risc-v (l'hai scaricato nel primo passaggio, ricordi?)
Grande! Ora si spera che vedrai la compilazione terminata senza errori e che tu abbia un file.bin che puoi caricare.
Passaggio 4: caricamento del file.bin
Ora collega il tuo Sipeed M1 al computer e dalla cartella /build esegui il seguente comando
sudo python3 isp_auto.py -d /dev/ttyUSB0 -b 200000 kpu.bin
Dove kpu.bin è il nome del tuo file.bin
Il caricamento richiede solitamente 2-3 minuti, al termine vedrai la scheda eseguire il rilevamento di 20 classi. L'ultimo passo per noi è collegarlo ad Arduino mega o Raspberry Pi.
!!! Se sei appena tornato dal passaggio 2 !
Esegui il seguente comando dalla cartella in cui hai clonato il mio repository github
sudo python3 isp_auto.py -d /dev/ttyUSB0 -b 200000 kpu_bin.bin
Il caricamento richiede solitamente 2-3 minuti, al termine vedrai la scheda eseguire il rilevamento di 20 classi. L'ultimo passo per noi è collegarlo ad Arduino mega o Raspberry Pi.
Passaggio 5: connessione ad Arduino
Ho usato Arduino Mega con Seeed Studio Mega Shield, ecco perché ho saldato un connettore Grove alla scheda Sipeed M1. Tuttavia puoi semplicemente usare i cavi dei ponticelli e collegare Sipeed M1 direttamente ad Arduino Mega, seguendo questo schema elettrico.
Dopodiché carica lo sketch camera.ino e apri il monitor seriale. Quando punti la fotocamera su oggetti diversi (l'elenco delle 20 classi è nello schizzo) dovrebbe visualizzare il nome della classe nel monitor seriale!
Congratulazioni! Ora hai un modulo di rilevamento delle immagini funzionante per il tuo Arduino!
Passaggio 6: connessione a Raspberry Pi
Ho usato il cappello Grove Pi+ per Raspberry Pi 2B, ma ancora una volta, come con Arduino, puoi semplicemente collegare direttamente Sipeed M1 all'interfaccia UART di Raspberry Pi seguendo questo schema elettrico.
Dopodiché avvia camera_speak.py e punta la fotocamera su oggetti diversi, il terminale emetterà il seguente testo "Penso che sia" e anche se hai degli altoparlanti collegati, pronuncerà questa frase ad alta voce. Abbastanza bello, non è vero?
Passaggio 7: conclusione
Stiamo vivendo tempi molto eccitanti, con l'intelligenza artificiale e l'apprendimento automatico che penetrano in tutte le aree della nostra vita. Non vedo l'ora per lo sviluppo in questo settore. Mi tengo in contatto con il team di Sipeed e so che stanno sviluppando attivamente wrapper micropython per tutte le funzioni necessarie, inclusa l'accelerazione della CNN.
Quando sarà pronto, molto probabilmente pubblicherò più istruzioni su come utilizzare i tuoi modelli CNN con micropython. Pensa a tutte le entusiasmanti applicazioni che puoi avere per una scheda in grado di eseguire le tue reti neurali di elaborazione delle immagini a questo prezzo e con questa impronta!
Consigliato:
Realizza un supporto per DSLR per meno di 6 $ utilizzando tubi in PVC (monopiede/treppiede per qualsiasi fotocamera): 6 Passaggi
Realizza un supporto per DSLR per meno di 6 $ utilizzando tubi in PVC (monopiede/treppiede per qualsiasi fotocamera): Sì… Puoi crearne uno tuo con solo un tubo in PVC e T È leggero… È perfettamente bilanciato… È solido forte… È facile da personalizzare… Sono Sooraj Bagal e condividerò la mia esperienza su questo supporto per fotocamera che ho creato per
FOTOCAMERA UNICORN - Costruzione della fotocamera Raspberry Pi Zero W NoIR da 8 MP: 7 passaggi (con immagini)
UNICORN CAMERA - Fotocamera Raspberry Pi Zero W NoIR 8MP Build: Pi Zero W NoIR 8MP Camera BuildQuesto Instructable è stato creato per aiutare chiunque desideri una fotocamera a infrarossi o una fotocamera portatile davvero fantastica o una fotocamera portatile Raspberry Pi o vuole solo divertirsi, heheh . Questo è il più conveniente e configurabile
Stabilizzatore per fotocamera per ENV2 o altri telefoni con fotocamera: 6 passaggi
Stabilizzatore per fotocamera per ENV2 o altri telefoni con fotocamera: hai mai desiderato fare un video ma hai solo un telefono con fotocamera? Hai mai fatto un video con un cellulare con fotocamera ma non riesci a tenerlo fermo? Bene, questo è l'istruibile per te
Aggiungi un jack per la sincronizzazione del PC a un cavo Ttl Nikon Sc-28 (usa le impostazioni automatiche per il flash della fotocamera e i flash della fotocamera con trigger disattivato!!): 4 passaggi
Aggiungi un jack per la sincronizzazione del PC a un cavo Ttl Nikon Sc-28 (usa le impostazioni automatiche per un flash della fotocamera e flash della fotocamera Trigger Off!!): in questo tutorial ti mostrerò come rimuovere uno di quei fastidiosi connettori TTL proprietari a 3 pin su il lato di un cavo TTL esterno Nikon SC-28 e sostituirlo con un connettore di sincronizzazione PC standard. questo ti permetterà di usare un flash dedicato, s
Scatta incredibili foto macro con qualsiasi fotocamera del telefono con fotocamera Soprattutto un iPhone: 6 passaggi
Scatta incredibili foto macro con qualsiasi fotocamera del telefono con fotocamera… Soprattutto un iPhone: hai mai desiderato ottenere una di quelle fantastiche foto ravvicinate… quella che dice… WOW!?… con la fotocamera di un telefono con fotocamera nientemeno !? Fondamentalmente, questo è un addon di potenziamento per qualsiasi fotocamera del telefono con fotocamera per ingrandire l'obiettivo della fotocamera esistente per prendere un w