Πίνακας περιεχομένων:

Κάμερα AI για Raspberry Pi/Arduino: 7 βήματα
Κάμερα AI για Raspberry Pi/Arduino: 7 βήματα

Βίντεο: Κάμερα AI για Raspberry Pi/Arduino: 7 βήματα

Βίντεο: Κάμερα AI για Raspberry Pi/Arduino: 7 βήματα
Βίντεο: Простой робот с камерой | Orange pi | Raspberry pi | OpenCV 2024, Νοέμβριος
Anonim
Image
Image

Εάν παρακολουθείτε τις ειδήσεις πρόσφατα, υπήρξε μια έκρηξη νεοσύστατων επιχειρήσεων που αναπτύσσουν τσιπ για την επιτάχυνση των συμπερασμάτων και της εκπαίδευσης των αλγορίθμων ML (μηχανικής μάθησης). Ωστόσο, τα περισσότερα από αυτά τα τσιπ είναι ακόμη υπό ανάπτυξη και δεν είναι κάτι που ο μέσος κατασκευαστής σας μπορεί να πιάσει. Η μόνη σημαντική εξαίρεση μέχρι στιγμής ήταν το Intel Movidius Neural Compute Stick, το οποίο είναι διαθέσιμο για αγορά και συνοδεύεται από ένα καλό SDK. Έχει όντως μερικά σημαντικά μειονεκτήματα - συγκεκριμένα την τιμή (περίπου 100 USD) και το γεγονός ότι έρχεται σε μορφή USB stick. Είναι υπέροχο αν θέλετε να το χρησιμοποιήσετε με φορητό υπολογιστή ή Raspberry PI, αλλά τι γίνεται αν θέλετε να κάνετε κάποια έργα αναγνώρισης εικόνας με το Arduino; Ras Raspberry Pi Zero;

Βήμα 1: Sipeed MAix: AI at the Edge

Sipeed MAix: AI στο Edge
Sipeed MAix: AI στο Edge

Πριν από πολύ καιρό πήρα στα χέρια μου τον πίνακα ανάπτυξης Sipeed M1w K210, ο οποίος διαθέτει διπύρηνο RISC-V 64bit CPU και διαθέτει ενσωματωμένο KPU (Neural Network Processor), ειδικά σχεδιασμένο για την επιτάχυνση του CNN για επεξεργασία εικόνας. Μπορείτε να διαβάσετε περισσότερες λεπτομέρειες εδώ.

Η τιμή αυτού του πίνακα ειλικρινά με συγκλόνισε, είναι μόλις 19 δολάρια για την πλήρη ανάπτυξη του AI-on-the-edge πίνακα ανάπτυξης με υποστήριξη Wi-fi! Ωστόσο, υπάρχει μια προειδοποίηση (φυσικά υπάρχει): το υλικολογισμικό micropython για τον πίνακα είναι ακόμα σε εξέλιξη και συνολικά δεν είναι πολύ φιλικό προς το χρήστη από τώρα. Ο μόνος τρόπος για να αποκτήσετε πρόσβαση σε όλες τις λειτουργίες του αυτή τη στιγμή είναι να γράψετε τον δικό σας ενσωματωμένο κώδικα C ή να τροποποιήσετε ορισμένες υπάρχουσες επιδείξεις.

Αυτό το σεμινάριο εξηγεί πώς να χρησιμοποιήσετε το μοντέλο ανίχνευσης κλάσης Mobilenet 20 για τον εντοπισμό των αντικειμένων και την αποστολή του κωδικού αντικειμένου που εντοπίστηκε μέσω του UART, από όπου μπορεί να ληφθεί από το Arduino/Raspberry Pi.

Τώρα, αυτό το σεμινάριο υποθέτει ότι είστε εξοικειωμένοι με το Linux και τα βασικά της σύνταξης του κώδικα C. Εάν το άκουσμα αυτής της φράσης σας έκανε λίγο ζαλάδα:) τότε απλά μεταβείτε στο Βήμα 4, όπου ανεβάζετε το προκατασκευασμένο μου δυαδικό αρχείο στο Sipeed M1 και παραλείπετε τη μεταγλώττιση.

Βήμα 2: Προετοιμάστε το περιβάλλον σας

Προετοιμάστε το Περιβάλλον σας
Προετοιμάστε το Περιβάλλον σας

Χρησιμοποίησα το Ubuntu 16.04 για συλλογή και μεταφόρτωση κώδικα C. Είναι δυνατό να το κάνετε αυτό στα Windows, αλλά εγώ ο ίδιος δεν το δοκίμασα.

Κατεβάστε το RISC-V GNU Compiler Toolchain, εγκαταστήστε όλες τις απαραίτητες εξαρτήσεις.

git clone-επαναληπτικό

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

Αντιγράψτε τη ληφθείσα αλυσίδα εργαλείων στον κατάλογο /opt. Στη συνέχεια, εκτελέστε τις ακόλουθες εντολές

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

φτιαχνω, κανω

Προσθέστε/opt/kendryte-toolchain/bin στο PATH σας τώρα.

Είστε τώρα έτοιμοι για τη σύνταξη του κώδικα!

Βήμα 3: Μεταγλωττίστε τον κώδικα

Συντάξτε τον Κώδικα
Συντάξτε τον Κώδικα

Κατεβάστε τον κώδικα από το αποθετήριο github μου.

Κατεβάστε το αυτόνομο SDK Kendryte K210

Αντιγραφή φακέλου /kpu από το αποθετήριο github μου στο φάκελο /src στο SDK.

Εκτελέστε τις ακόλουθες εντολές στο φάκελο SDK (φάκελος όχι /src!)

mkdir build && cd build

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

όπου το project_name είναι το όνομα του έργου σας (εξαρτάται από εσάς) και -DTOOLCHAIN = πρέπει να δείχνει τη θέση της αλυσίδας εργαλείων risc -v (το κατεβάσατε στο πρώτο βήμα, θυμάστε;)

Μεγάλος! Τώρα ελπίζουμε ότι θα δείτε τη συλλογή να έχει ολοκληρωθεί χωρίς σφάλματα και έχετε ένα αρχείο.bin που μπορείτε να ανεβάσετε.

Βήμα 4: Μεταφόρτωση του αρχείου.bin

Μεταφόρτωση του αρχείου.bin
Μεταφόρτωση του αρχείου.bin

Τώρα συνδέστε το Sipeed M1 στον υπολογιστή και από το φάκελο /build εκτελέστε την ακόλουθη εντολή

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

Όπου kpu.bin είναι το όνομα του αρχείου σας.bin

Η μεταφόρτωση διαρκεί συνήθως 2-3 λεπτά, αφού ολοκληρωθεί, θα δείτε τον πίνακα να εκτελεί ανίχνευση 20 τάξεων. Το τελευταίο βήμα για εμάς είναι να το συνδέσουμε με Arduino mega ή Raspberry Pi.

!!! Αν μόλις ήρθατε από το Βήμα 2 !

Εκτελέστε την ακόλουθη εντολή από το φάκελο όπου κλωνοποιήσατε το αποθετήριο github μου

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

Η μεταφόρτωση διαρκεί συνήθως 2-3 λεπτά, αφού ολοκληρωθεί θα δείτε τον πίνακα να εκτελεί ανίχνευση 20 τάξεων. Το τελευταίο βήμα για εμάς είναι να το συνδέσουμε με Arduino mega ή Raspberry Pi.

Βήμα 5: Σύνδεση στο Arduino

Σύνδεση με Arduino
Σύνδεση με Arduino
Σύνδεση με Arduino
Σύνδεση με Arduino
Σύνδεση με Arduino
Σύνδεση με Arduino

Χρησιμοποίησα το Arduino Mega με το Seeed Studio Mega Shield, αυτός είναι ο λόγος για τον οποίο συγκολλήσα μια υποδοχή Grove στην πλακέτα Sipeed M1. Ωστόσο, μπορείτε απλά να χρησιμοποιήσετε καλώδια βραχυκυκλωτήρων και να συνδέσετε το Sipeed M1 απευθείας στο Arduino Mega, ακολουθώντας αυτό το διάγραμμα καλωδίωσης.

Στη συνέχεια, ανεβάστε το σκίτσο του camera.ino και ανοίξτε τη Σειριακή οθόνη. Όταν στρέφετε την κάμερα σε διαφορετικά αντικείμενα (η λίστα των 20 κλάσεων βρίσκεται στο σκίτσο) θα πρέπει να εξάγει το όνομα της τάξης στη σειριακή οθόνη!

Συγχαρητήρια! Έχετε πλέον λειτουργική μονάδα ανίχνευσης εικόνας για το Arduino σας!

Βήμα 6: Σύνδεση στο Raspberry Pi

Σύνδεση με το Raspberry Pi
Σύνδεση με το Raspberry Pi
Σύνδεση με το Raspberry Pi
Σύνδεση με το Raspberry Pi

Χρησιμοποίησα το καπέλο Grove Pi+ για το Raspberry Pi 2B, αλλά και πάλι, καθώς με το Arduino μπορείτε απλώς να συνδέσετε απευθείας το Sipeed M1 στη διεπαφή UART του Raspberry Pi ακολουθώντας αυτό το διάγραμμα καλωδίωσης.

Μετά την εκκίνηση του camera_speak.py και δείξτε την κάμερα σε διαφορετικά αντικείμενα, το τερματικό θα βγάλει το ακόλουθο κείμενο "Νομίζω ότι είναι" και επίσης αν έχετε συνδεδεμένα ηχεία, θα μιλήσει αυτή τη φράση δυνατά. Αρκετά δροσερό, έτσι δεν είναι;

Βήμα 7: Συμπέρασμα

Αυτοί είναι πολύ έξοχοι καιροί που ζούμε, με την τεχνητή νοημοσύνη και τη μηχανική μάθηση να διαπερνούν όλους τους τομείς της ζωής μας. Ανυπομονώ για την εξέλιξη σε αυτόν τον τομέα. Διατηρώ επαφή με την ομάδα Sipeed και γνωρίζω ότι αναπτύσσουν ενεργά περιτύλιγμα μικροπύθωνος για όλες τις απαραίτητες λειτουργίες, συμπεριλαμβανομένης της επιτάχυνσης του CNN.

Όταν είναι έτοιμο, πιθανότατα θα δημοσιεύσω περισσότερες οδηγίες σχετικά με τον τρόπο χρήσης των δικών σας μοντέλων CNN με μικροπύθωνα. Σκεφτείτε όλες τις συναρπαστικές εφαρμογές που μπορείτε να έχετε για έναν πίνακα που μπορεί να τρέξει τα δικά σας νευρωνικά δίκτυα επεξεργασίας εικόνας σε αυτήν την τιμή και με αυτό το αποτύπωμα!

Συνιστάται: