Πίνακας περιεχομένων:
- Βήμα 1: Η βασική ιδέα και τα απαιτούμενα μέρη
- Βήμα 2: Εγκαταστήστε την ενότητα OpenCV
- Βήμα 3: Εκτύπωση της βάσης κάμερας
- Βήμα 4: Ολοκλήρωση της βάσης κάμερας
- Βήμα 5: Το μοντέλο εκπαίδευσης μηχανικής εκμάθησης
- Βήμα 6: Ο κώδικας που τα κάνει όλα να συμβούν
- Βήμα 7: Ο μηχανισμός ανοίγματος του κουτιού
- Βήμα 8: Κάνοντας το κουτί The Harry Potter Themed
Βίντεο: Real Working Harry Potter Wand Using Computer Vision: 8 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:35
"Κάθε επαρκώς προηγμένη τεχνολογία δεν διακρίνεται από τη μαγεία" - Arthur C. Clarke
Λίγους μήνες πριν ο αδερφός μου επισκέφθηκε την Ιαπωνία και είχε πραγματική εμπειρία μάγων στον κόσμο των μάγων του Χάρι Πότερ στα Universal Studios που έγινε δυνατή μέσω της τεχνολογίας του Computer Vision.
Στο Wizarding World of Harry Potter στα Universal Studios οι τουρίστες μπορούν να κάνουν "πραγματική μαγεία" σε ορισμένες τοποθεσίες (όπου είναι εγκατεστημένο το σύστημα λήψης κίνησης) χρησιμοποιώντας ειδικά κατασκευασμένα ραβδιά με ρετρό-ανακλαστικές χάντρες στο άκρο. Τα ραβδιά μπορούν να αγοραστούν από ένα πραγματικό Ollivander's Shop που είναι ακριβώς όπως αυτό που παρουσιάζεται στις ταινίες του Χάρι Πότερ αλλά θυμούνται: "Είναι το ραβδί που επιλέγει τον μάγο": P
Σε αυτές τις συγκεκριμένες τοποθεσίες εάν το άτομο εκτελεί μια συγκεκριμένη χειρονομία με ραβδί, το σύστημα καταγραφής κίνησης αναγνωρίζει τη χειρονομία και όλες οι χειρονομίες αντιστοιχούν σε ένα συγκεκριμένο ξόρκι που προκαλεί ορισμένες δραστηριότητες στη γύρω περιοχή, όπως το άνοιγμα του συντριβανιού κ.λπ.
Έτσι, σε αυτό το Instructable θα δείξω πώς μπορείτε να δημιουργήσετε ένα φθηνό και αποτελεσματικό σύστημα καταγραφής κίνησης στο σπίτι για να κάνετε "πραγματική μαγεία" ανοίγοντας ένα κουτί με το χτύπημα του ραβδιού σας: D χρησιμοποιώντας μια κανονική Νυχτερινή Κάμερα, μερικά ηλεκτρονικά, και κάποιο κώδικα python χρησιμοποιώντας τη βιβλιοθήκη OpenCV Computer Vision και τη μηχανική εκμάθηση !!!
Βήμα 1: Η βασική ιδέα και τα απαιτούμενα μέρη
Τα ραβδιά που αγοράζονται από τον κόσμο των μάγων του Χάρι Πότερ στα Universal Studios, έχουν μια ανάστροφη χάντρα στην άκρη τους. Αυτά τα αντανακλαστικά σφαιρίδια αντανακλούν μεγάλη ποσότητα υπέρυθρου φωτός που εκπέμπεται από την κάμερα στο σύστημα λήψης κίνησης. Έτσι, αυτό που εμείς οι άνθρωποι αντιλαμβανόμαστε ως ένα όχι και τόσο διακριτικό άκρο του ραβδιού που κινείται στον αέρα, το σύστημα λήψης κίνησης αντιλαμβάνεται ως μια φωτεινή κηλίδα που μπορεί εύκολα να απομονωθεί στη ροή βίντεο και να εντοπιστεί για να αναγνωρίσει το μοτίβο που έχει σχεδιαστεί από το άτομο και να εκτελέσει την απαιτούμενη ενέργεια. Όλη αυτή η επεξεργασία πραγματοποιείται σε πραγματικό χρόνο και κάνει χρήση του Computer Vision και της Machine Learning.
Μια απλή κάμερα νυχτερινής όρασης μπορεί να χρησιμοποιηθεί ως η κάμερά μας για τη λήψη κίνησης, καθώς εκπέμπουν επίσης υπέρυθρο φως που δεν είναι ορατό στους ανθρώπους, αλλά μπορεί να φανεί καθαρά με μια κάμερα που δεν έχει φίλτρο υπερύθρων. Έτσι, η ροή βίντεο από την κάμερα τροφοδοτείται σε ένα βατόμουρο pi που έχει ένα πρόγραμμα python που τρέχει OpenCV το οποίο χρησιμοποιείται για τον εντοπισμό, την απομόνωση και την παρακολούθηση του άκρου του ραβδιού. Στη συνέχεια, χρησιμοποιούμε τον αλγόριθμο SVM (Simple Vector Machine) της Machine Learning για να αναγνωρίσουμε το μοτίβο που σχεδιάστηκε και, επομένως, να ελέγξουμε τα GPIO του raspberry pi για να εκτελέσουμε κάποιες δραστηριότητες.
Τα απαιτούμενα υλικά:
1) Ένα Raspberry Pi 3 μοντέλο Β και τα απαιτούμενα αξεσουάρ όπως πληκτρολόγιο και ποντίκι
2) Raspberry Pi NoIR (No Infrared) Camera Module
3) Ράβδος Χάρι Πότερ με έναν αντανακλαστήρα στην άκρη: Μην ανησυχείτε αν δεν έχετε. Οτιδήποτε έχει ανακλαστήρα μπορεί να χρησιμοποιηθεί. Έτσι, μπορείτε να χρησιμοποιήσετε οποιοδήποτε ραβδί που μοιάζει με ραβδί και να εφαρμόσετε ταινία με αντανακλαστήρα, χρώμα ή χάντρες στην άκρη και θα πρέπει να λειτουργεί όπως φαίνεται στο βίντεο του William Osman: Δείτε το βίντεο
4) 10 υπέρυθρες λυχνίες LED
5) Τρισδιάστατος εκτυπωτής και νήμα PLA της επιλογής σας
6) Προσαρμογέας τοίχου 12V - 1A και υποδοχή DC
7) Ένας σερβοκινητήρας
8) Ένα παλιό κουτί και μια κουβέντα από τον τροχό ενός κύκλου
9) Ένα πιστόλι θερμής κόλλας
10) Εκτυπώσεις λογότυπων και εικόνων που σχετίζονται με τον Χάρι Πότερ σε γυαλιστερό φύλλο χαρτιού
11) Πράσινα και κίτρινα βελούδινα σεντόνια.
ΣΗΜΕΙΩΣΗ: Προσπάθησα επίσης να χρησιμοποιήσω μια παλιά κανονική κάμερα web για νυχτερινή όραση αφαιρώντας το υπέρυθρο φίλτρο, αλλά κατέληξα να καταστρέψω/να μετατοπίσω τον φακό του που επηρέασε πολύ την ποιότητα του βίντεο και δεν μπορούσα να το χρησιμοποιήσω. Αλλά αν θέλετε να το δοκιμάσετε, μπορείτε να περάσετε από αυτό το υπέροχο διδακτικό κλικ εδώ
Βήμα 2: Εγκαταστήστε την ενότητα OpenCV
Τώρα ήρθε η ώρα για το πρώτο και ίσως το μεγαλύτερο βήμα ολόκληρου αυτού του έργου: Η εγκατάσταση και η δημιουργία της μονάδας OpenCV στο Raspberry Pi σας.
Η εγκατάσταση των εξαρτήσεων για τη μονάδα OpenCV δεν απαιτεί πολύ χρόνο, αλλά η διαδικασία κατασκευής μπορεί να διαρκέσει έως και 2 έως 3 ώρες !! Οπότε, Λυγίστε !!:Π
Υπάρχουν πολλά σεμινάρια στο διαδίκτυο τα οποία μπορείτε να ακολουθήσετε για να εγκαταστήσετε την ενότητα OpenCV 4.1.0. Εδώ είναι ο σύνδεσμος αυτού που ακολούθησα: Κάντε κλικ εδώ
ΣΗΜΕΙΩΣΗ: Συνιστώ ανεπιφύλακτα την εγκατάσταση της μονάδας OpenCV σε εικονικό περιβάλλον, όπως φαίνεται στο σεμινάριο, καθώς θα αποτρέψει διάφορα είδη διενέξεων που μπορεί να συμβούν λόγω εγκατάστασης εξαρτήσεων διαφορετικών μονάδων ή κατά την εργασία με διαφορετικές εκδόσεις python.
Βήμα 3: Εκτύπωση της βάσης κάμερας
Η φωτογραφική μηχανή NoIR δεν έχει φίλτρο υπερύθρων, επομένως μπορεί να χρησιμοποιηθεί ως κάμερα νυχτερινής όρασης, αλλά εξακολουθεί να μην διαθέτει πηγή υπέρυθρου φωτός. Όλες οι κάμερες νυχτερινής όρασης έχουν τη δική τους πηγή υπέρυθρου φωτός που εκπέμπει ακτίνες IR στο σκοτάδι που είναι αόρατες με γυμνό μάτι, αλλά οι ακτίνες μπορούν να γίνουν ορατές από την κάμερα χωρίς φίλτρο υπέρυθρων μετά την ανάκλαση από οποιοδήποτε αντικείμενο.
Έτσι, βασικά χρειαζόμαστε μια πηγή υπέρυθρου φωτός και κάτι για να τοποθετήσουμε την κάμερα. Για αυτό σχεδίασα ένα απλό τρισδιάστατο μοντέλο ενός αντικειμένου στο οποίο θα μπορούσαμε να τοποθετήσουμε την κάμερα την οποία θα περιβάλλαμε από 10 ακτίνες IR σε έναν κύκλο. Το μοντέλο δημιουργήθηκε με το SketchUp και εκτυπώθηκε με το μαύρο PLA σε περίπου 40 λεπτά.
Βήμα 4: Ολοκλήρωση της βάσης κάμερας
Μετά την εκτύπωση του μοντέλου, το τρίψαμε πρώτα με ένα χαρτί άμμου 80 και στη συνέχεια άρχισα να τοποθετώ τα led IR στις οπές τους σύμφωνα με το διάγραμμα που δόθηκε παραπάνω.
Ασφάλισα τα led στη θέση τους με κάποια θερμή κόλλα και έπειτα ένωσα τα θετικά και αρνητικά καλώδια δύο συνεχόμενων led μαζί και στη συνέχεια τα συγκολλούσα για να δημιουργήσω μια σειρά σύνδεσης των led.
Ο θετικός αγωγός ενός μολύβδου και ο αρνητικός μολύβδος του μολύβδου δίπλα του στο κάτω μέρος έμειναν χωρίς συγκόλληση για να συνδεθούν τα θετικά και αρνητικά άκρα από τον προσαρμογέα τοίχου 12 volt.
Βήμα 5: Το μοντέλο εκπαίδευσης μηχανικής εκμάθησης
Για την αναγνώριση του γράμματος που έγραψε ένα άτομο, εκπαίδευσα ένα μοντέλο μηχανικής μάθησης βασισμένο στον αλγόριθμο Υποστήριξη Διανυσματικού Μηχανήματος (SVM) χρησιμοποιώντας ένα σύνολο δεδομένων χειρόγραφων αγγλικών αλφαβήτων που βρήκα εδώ. Τα SVM είναι πολύ αποδοτικοί αλγόριθμοι μηχανικής μάθησης που μπορούν να δώσουν υψηλή ακρίβεια, περίπου 99,2% σε αυτή την περίπτωση !! Διαβάστε περισσότερα για τα SVM
Το σύνολο δεδομένων έχει τη μορφή αρχείου.csv το οποίο περιέχει 785 στήλες και περισσότερες από 300.000 σειρές όπου κάθε γραμμή αντιπροσωπεύει μια εικόνα 28 x 28 και κάθε στήλη σε αυτήν τη σειρά περιέχει την τιμή του εικονοστοιχείου για αυτήν την εικόνα με μια επιπλέον στήλη σε η αρχή που περιέχει την ετικέτα, ένας αριθμός από 0 έως 25, ο καθένας που αντιστοιχεί σε ένα αγγλικό γράμμα. Μέσω ενός απλού κώδικα python, έκοψα τα δεδομένα για να πάρω όλες τις εικόνες μόνο για τα 2 γράμματα (Α και Γ) που ήθελα και εκπαίδευσα ένα μοντέλο γι 'αυτά.
Έχω επισυνάψει το εκπαιδευμένο μοντέλο (alphabet_classifier.pkl) και επίσης τον εκπαιδευτικό κώδικα μπορείτε να το περάσετε ή να κάνετε οποιεσδήποτε αλλαγές για την εκπαίδευση του μοντέλου με διαφορετικά γράμματα ή να δοκιμάσετε διαφορετικούς αλγόριθμους. Μετά την εκτέλεση του προγράμματος, αποθηκεύει αυτόματα το εκπαιδευμένο μοντέλο στον ίδιο κατάλογο όπου αποθηκεύεται ο κωδικός σας.
Βήμα 6: Ο κώδικας που τα κάνει όλα να συμβούν
Μετά τη δημιουργία του εκπαιδευμένου μοντέλου, το τελευταίο βήμα είναι να γράψουμε ένα πρόγραμμα python για το Raspberry Pi που μας επιτρέπει να κάνουμε τα εξής:
- Αποκτήστε πρόσβαση σε βίντεο από την picamera σε πραγματικό χρόνο
- Εντοπίστε και παρακολουθήστε λευκές κηλίδες (στην περίπτωση αυτή η άκρη του ραβδιού που ανάβει στη νυχτερινή όραση) στο βίντεο
- Ξεκινήστε να εντοπίζετε τη διαδρομή της κινούμενης σταγόνας στο βίντεο μετά από κάποιο συμβάν ενεργοποίησης (εξηγείται παρακάτω)
- Διακοπή παρακολούθησης μετά από ένα άλλο συμβάν ενεργοποίησης (εξηγείται παρακάτω)
- Επιστρέψτε το τελευταίο πλαίσιο με το μοτίβο που σχεδιάστηκε από τον χρήστη
- Εκτελέστε προεπεξεργασία στο πλαίσιο όπως κατώφλι, αφαίρεση θορύβου, αλλαγή μεγέθους κ.λπ.
- Χρησιμοποιήστε το επεξεργασμένο τελευταίο πλαίσιο για πρόβλεψη.
- Εκτελέστε κάποια μαγεία ελέγχοντας τα GPIO του Raspberry Pi σύμφωνα με την πρόβλεψη
Για αυτό το έργο δημιούργησα ένα κουτί με θέμα τον Χάρι Πότερ το οποίο μπορώ να ανοίξω και να κλείσω χρησιμοποιώντας ένα σερβοκινητήρα που ελέγχεται από το GPIO του Raspberry Pi. Δεδομένου ότι το γράμμα "Α" σημαίνει "Alohamora" (ένα από τα πιο διάσημα ξόρκια από τις ταινίες του Χάρι Πότερ που επιτρέπει σε έναν μάγο να ανοίξει οποιαδήποτε κλειδαριά !!), εάν ένα άτομο τραβήξει το γράμμα Α με το ραβδί, το pi δίνει εντολή στον σερβο ανοίξτε το κουτί. Εάν το άτομο σχεδιάσει το γράμμα 'C' που σημαίνει κλείσιμο (καθώς δεν μπορούσα να σκεφτώ κάποιο κατάλληλο ξόρκι που χρησιμοποιείται για κλείσιμο ή κλείδωμα: P), το pi δίνει εντολή στο σερβο να κλείσει το κουτί.
Όλη η εργασία που σχετίζεται με την επεξεργασία εικόνας/βίντεο, όπως η ανίχνευση blob, η ανίχνευση της διαδρομής του blob, η προεπεξεργασία του τελευταίου καρέ κ.λπ., γίνεται μέσω της ενότητας OpenCV.
Για τα συμβάντα ενεργοποίησης που αναφέρθηκαν παραπάνω, δημιουργούνται δύο κύκλοι στο βίντεο σε πραγματικό χρόνο, ένας πράσινος και ένας κόκκινος κύκλος. Όταν το σταγόνα εισέλθει στην περιοχή μέσα στον πράσινο κύκλο, το πρόγραμμα αρχίζει να εντοπίζει τη διαδρομή που ακολουθεί το κομμάτι μετά από εκείνη τη στιγμή επιτρέποντας στο άτομο να αρχίσει να δημιουργεί το γράμμα. Όταν η φούσκα φτάσει στον κόκκινο κύκλο, το βίντεο σταματά και το τελευταίο καρέ μεταφέρεται σε μια λειτουργία που εκτελεί την προεπεξεργασία στο πλαίσιο για να είναι έτοιμο για πρόβλεψη.
Έχω επισυνάψει τα αρχεία κώδικα σε αυτό το βήμα. Μη διστάσετε να το περάσετε και να κάνετε όποιες αλλαγές θέλετε.
ΣΗΜΕΙΩΣΗ: Έπρεπε να δημιουργήσω δύο ξεχωριστά αρχεία python που λειτουργούν με διαφορετικές εκδόσεις python, ένα που εισάγει το OpenCV module (Python 2.7) και το άλλο που εισάγει το modle sklearn (Python 3.5) για πρόβλεψη μετά τη φόρτωση του εκπαιδευμένου μοντέλου, καθώς το OpenCV μου εγκαταστάθηκε για την έκδοση Python 2.7 ενώ το sklearn ήταν εγκατεστημένο για python 3.5. Έτσι, χρησιμοποίησα τη μονάδα υποεπεξεργασίας για να τρέξω το αρχείο HarryPotterWandsklearn.py (για πρόβλεψη) από το HarryPotterWandcv.py (για όλες τις εργασίες opencv και εγγραφή βίντεο σε πραγματικό χρόνο) και να λάβω την έξοδο. Με αυτόν τον τρόπο δεν έχω παρά να τρέξω το αρχείο HarryPotterWandcv.py.
Βήμα 7: Ο μηχανισμός ανοίγματος του κουτιού
Είχα ένα παλιό κουτί με κόκκινο χρώμα γύρω από το οποίο χρησιμοποίησα για αυτό το έργο.
Για τον μηχανισμό ανοίγματος κουτιού:
- Έχω κολλήσει ένα σερβο κοντά στο πίσω άκρο του κουτιού σε ένα χαρτόνι κοντά στο χείλος του κουτιού.
- Στη συνέχεια πήρα μια ακτίνα από τον τροχό ενός κύκλου και την κόλλησα ζεστά στο μπράτσο του σερβο.
- Το άλλο άκρο της ακτίνας ήταν προσαρτημένο στο καπάκι του κουτιού χρησιμοποιώντας ένα κομμάτι σύρμα.
- Το θετικό σερβο συνδέθηκε στο +5V Pin 2 στο Raspberry Pi.
- Το αρνητικό του σερβο συνδέθηκε με το GND Pin 39.
- Το σήμα του σερβο ήταν συνδεδεμένο στο Pin 12
Βήμα 8: Κάνοντας το κουτί The Harry Potter Themed
Για να φτιάξω το κουτί με θέμα τον Χάρι Πότερ, εκτύπωσα μερικές έγχρωμες εικόνες διαφόρων πραγμάτων, όπως το λογότυπο του Χάρι Πότερ, το Χόγκουαρτς Κρεστ, το λοφίο καθενός από τα τέσσερα σπίτια κ.λπ. σε γυαλιστερό φύλλο μεγέθους Α4 και τις επικολλήσα στο κουτί σε διάφορα θέσεις.
Χρησιμοποίησα επίσης ένα κίτρινο βελούδινο φύλλο για να κόψω λωρίδες και τις έβαλα στο καπάκι για να δώσω στο κουτί το ίδιο χρώμα με αυτό του Gryffindor House. Κάλυψα το εσωτερικό του καπακιού και το χαρτόνι για σερβο με πράσινο βελούδινο φύλλο. Στο εσωτερικό του καπακιού κόλλησα περισσότερα σύμβολα και ένα έμβλημα που έδειχνε τα ζώα που αντιπροσωπεύουν κάθε σπίτι της Σχολής του Χόγκουαρτς.
Στη συνέχεια, έβαλα όλα τα πράγματα που σχετίζονται με τον Χάρι Πότερ στο κουτί, το οποίο περιελάμβανε έναν σιγαστήρα Gryffindor, ένα ημερολόγιο με τη στολή του Χόγκουαρτς και το Elder Wand που χρησιμοποιήθηκε σε αυτό το έργο: D
Συνιστάται:
UK Ring Video Doorbell Pro Working With Mechanical Chime: 6 βήματα (με εικόνες)
UK Ring Video Doorbell Pro Working With Mechanical Chime: ************************************* *************** Σημειώστε ότι αυτή η μέθοδος λειτουργεί μόνο με τροφοδοτικό AC αυτή τη στιγμή Θα ενημερώσω εάν/όταν βρω μια λύση για κουδούνια πόρτας χρησιμοποιώντας DC power Εν τω μεταξύ, εάν έχετε τροφοδοσία DC προμήθεια, θα χρειαστείτε
DIY Harry Potter Moving Portrait with Raspberry Pi: 3 βήματα
DIY Harry Potter Moving Portrait With Raspberry Pi: Moving Portrait εμπνευσμένο από τις ταινίες του Χάρι Πότερ. Το Moving Portrait είναι χτισμένο χρησιμοποιώντας ένα παλιό σπασμένο φορητό υπολογιστή. Μπορεί ακόμη και να κατασκευαστεί χρησιμοποιώντας ένα Raspberry Pi συνδεδεμένο με μια οθόνη ή μια παλιά οθόνη. Το Moving Portrait Frame φαίνεται φοβερό, μπορούμε να δούμε οικογενειακές φωτογραφίες
Working Counter Geiger W/ Ελάχιστα ανταλλακτικά: 4 βήματα (με εικόνες)
Εργασία μετρητή Geiger W/ Ελάχιστα ανταλλακτικά: Εδώ είναι, κατά τη γνώση μου, ο απλούστερος λειτουργικός μετρητής Geiger που μπορείτε να φτιάξετε. Αυτό χρησιμοποιεί ένα ρωσικής κατασκευής σωλήνα SMB-20 Geiger, που κινείται από ένα κύκλωμα αύξησης υψηλής τάσης που έχει λησθεί από ένα ηλεκτρονικό χτύπημα μύγας. Ανιχνεύει σωματίδια βήτα και gam
Working Sorting Hat From Harry Potter: 8 Βήματα
Working Sorting Hat From Harry Potter: Στον κόσμο μας, δεν υπάρχει μαγικό καπέλο που να μας χωρίζει στα σπίτια μας. Έχω χρησιμοποιήσει λοιπόν αυτήν την ευκαιρία καραντίνας για να φτιάξω ένα καπέλο διαλογής
DIY Harry Potter Moving Portrait Project: 9 βήματα (με εικόνες)
DIY Harry Potter Moving Portrait Project: Το παρακάτω είναι ένα διδακτικό που προορίζεται μόνο για μάγους καθαρού αίματος. Εάν δεν είστε καθαρόαιμος, συγκεκριμένα ο Slytherin, έχετε προειδοποιηθεί για την αναπόφευκτη αποτυχία και ήττα που θα συναντήσετε ως κακοποιός, μάγκας, Hufflepuff ή λάσπης