Table des matières:

Véritable baguette de travail de Harry Potter à l'aide de la vision par ordinateur : 8 étapes (avec photos)
Véritable baguette de travail de Harry Potter à l'aide de la vision par ordinateur : 8 étapes (avec photos)

Vidéo: Véritable baguette de travail de Harry Potter à l'aide de la vision par ordinateur : 8 étapes (avec photos)

Vidéo: Véritable baguette de travail de Harry Potter à l'aide de la vision par ordinateur : 8 étapes (avec photos)
Vidéo: Je saigne à la salle de sport 🩸🥵 2024, Novembre
Anonim
Image
Image
Véritable baguette de travail de Harry Potter à l'aide de la vision par ordinateur
Véritable baguette de travail de Harry Potter à l'aide de la vision par ordinateur
Véritable baguette de travail de Harry Potter à l'aide de la vision par ordinateur
Véritable baguette de travail de Harry Potter à l'aide de la vision par ordinateur
Véritable baguette de travail de Harry Potter à l'aide de la vision par ordinateur
Véritable baguette de travail de Harry Potter à l'aide de la vision par ordinateur

"Toute technologie suffisamment avancée est indiscernable de la magie" - Arthur C. Clarke

Il y a quelques mois, mon frère a visité le Japon et a eu une véritable expérience de sorcellerie dans le monde sorcier de Harry Potter aux studios Universal, rendue possible grâce à la technologie de Computer Vision.

Dans le monde magique de Harry Potter à Universal Studios, les touristes peuvent effectuer une "vraie magie" à certains endroits (où le système de capture de mouvement est installé) à l'aide de baguettes spécialement conçues avec des perles rétro-réfléchissantes à la pointe. Les baguettes peuvent être achetées dans un vrai Ollivander's Shop qui sont exactement comme celles montrées dans les films Harry Potter, mais rappelez-vous: "C'est la baguette qui choisit le sorcier":P

À certains endroits, si la personne effectue un geste particulier avec la baguette, le système de capture de mouvement reconnaît le geste et tous les gestes correspondent à un certain sort qui provoque certaines activités dans les environs, comme allumer la fontaine, etc.

Donc, dans ce Instructable, je vais montrer comment vous pouvez créer un système de capture de mouvement bon marché et efficace à la maison pour effectuer une « vraie magie » en ouvrant une boîte avec le coup de baguette:D en utilisant juste une caméra de vision nocturne normale, de l'électronique, et du code python utilisant la bibliothèque OpenCV Computer Vision et Machine Learning !!!

Étape 1: L'idée de base et les pièces requises

L'idée de base et les pièces requises
L'idée de base et les pièces requises
L'idée de base et les pièces requises
L'idée de base et les pièces requises
L'idée de base et les pièces requises
L'idée de base et les pièces requises
L'idée de base et les pièces requises
L'idée de base et les pièces requises

Les baguettes qui sont achetées au Wizarding World of Harry Potter dans Universal Studios, ont une perle rétroréfléchissante à leur extrémité. Ces billes rétroréfléchissantes reflètent une grande quantité de lumière infrarouge qui est émise par la caméra dans le système de capture de mouvement. Ainsi, ce que nous, les humains, percevons comme un bout pas si distinctif de la baguette se déplaçant dans l'air, le système de capture de mouvement le perçoit comme une goutte brillante qui peut être facilement isolée dans le flux vidéo et suivie pour reconnaître le motif dessiné par la personne et exécuter l'action requise. Tout ce traitement a lieu en temps réel et utilise la vision par ordinateur et l'apprentissage automatique.

Une simple caméra de vision nocturne peut être utilisée comme caméra pour la capture de mouvement, car elle émet également une lumière infrarouge qui n'est pas visible pour les humains mais qui peut être clairement vue avec une caméra sans filtre infrarouge. Ainsi, le flux vidéo de la caméra est introduit dans un raspberry pi qui a un programme python exécutant OpenCV qui est utilisé pour détecter, isoler et suivre la pointe de la baguette. Ensuite, nous utilisons l'algorithme SVM (Simple Vector Machine) de Machine Learning pour reconnaître le motif dessiné et contrôler en conséquence les GPIO du raspberry pi pour effectuer certaines activités.

Les matériaux requis:

1) Un Raspberry Pi 3 modèle B et les accessoires nécessaires comme le clavier et la souris

2) Module de caméra Raspberry Pi NoIR (sans infrarouge)

3) Baguette Harry Potter avec rétroréflecteur à la pointe: Ne vous inquiétez pas si vous n'en avez pas. Tout ce qui a un rétroréflecteur peut être utilisé. Ainsi, vous pouvez utiliser n'importe quel bâton en forme de baguette et appliquer du ruban rétroréflecteur, de la peinture ou des perles à la pointe et cela devrait fonctionner comme indiqué dans la vidéo de William Osman: Regardez la vidéo

4) 10 LED infrarouges

5) Une imprimante 3D et un filament PLA de votre choix

6) Adaptateur mural 12V - 1A et prise CC

7) Un servomoteur

8) Une vieille boîte et un rayon de la roue d'un cycle

9) Un pistolet à colle chaude

10) Impressions de certains logos et images liés à Harry Potter sur une feuille de papier glacé

11) Draps de velours vert et jaune.

REMARQUE: j'ai également essayé d'utiliser une vieille webcam ordinaire pour la vision nocturne en retirant son filtre infrarouge, mais j'ai fini par endommager/déplacer son objectif, ce qui a considérablement affecté la qualité de la vidéo et je n'ai pas pu l'utiliser. Mais si vous voulez essayer, vous pouvez passer par ce grand instructable Cliquez ici

Étape 2: Installez le module OpenCV

Il est maintenant temps pour la première et probablement la plus longue étape de tout ce projet: l'installation et la construction du module OpenCV dans votre Raspberry Pi.

L'installation des dépendances pour le module OpenCV ne prend pas beaucoup de temps mais le processus de construction peut prendre jusqu'à 2 à 3 heures !! Alors, attachez-vous !!:P

Il existe de nombreux tutoriels en ligne que vous pouvez suivre pour installer le module OpenCV 4.1.0. Voici le lien de celui que j'ai suivi: Cliquez ici

REMARQUE: je recommande fortement d'installer le module OpenCV dans un environnement virtuel, comme indiqué dans le didacticiel, car cela empêchera divers types de conflits pouvant survenir en raison de l'installation de dépendances de différents modules ou lors de l'utilisation de différentes versions de python.

Étape 3: Impression du support de caméra

Impression du support de caméra
Impression du support de caméra
Impression du support de caméra
Impression du support de caméra
Impression du support de caméra
Impression du support de caméra

La picamera NoIR n'a pas de filtre infrarouge, elle peut donc être utilisée comme caméra de vision nocturne, mais il lui manque toujours une source de lumière infrarouge. Toutes les caméras de vision nocturne ont leur propre source de lumière infrarouge qui émet des rayons IR dans l'obscurité qui sont invisibles à l'œil nu, mais les rayons peuvent être vus par la caméra sans filtre infrarouge après avoir été réfléchis par un objet.

Donc, nous avons essentiellement besoin d'une source de lumière infrarouge et de quelque chose pour monter la caméra. Pour cela j'ai conçu un modèle 3D simple d'un objet sur lequel on pourrait monter la caméra qui sera entourée de 10 leds IR en cercle. Le modèle a été créé avec SketchUp et imprimé avec du PLA noir en 40 minutes environ.

Étape 4: Finition du support de caméra

Finition du support de caméra
Finition du support de caméra
Finition du support de caméra
Finition du support de caméra
Finition du support de caméra
Finition du support de caméra

Après avoir imprimé le modèle, je l'ai d'abord poncé avec un papier de verre grain 80, puis j'ai commencé à placer les leds IR dans leurs trous selon le schéma donné ci-dessus.

J'ai fixé les leds à leur place avec de la colle chaude, puis j'ai joint les fils positifs et négatifs de deux leds consécutives ensemble, puis je les ai soudées pour créer une connexion en série des leds.

Le fil positif d'une led et le fil négatif de la led à côté en bas ont été laissés non soudés afin de connecter les extrémités positive et négative de l'adaptateur mural 12 volts.

Étape 5: Le modèle d'apprentissage automatique formé

Dans le but de reconnaître la lettre dessinée par une personne, j'ai formé un modèle d'apprentissage automatique basé sur l'algorithme Support Vector Machine (SVM) à l'aide d'un ensemble de données d'alphabets anglais manuscrits que j'ai trouvés ici. Les SVM sont des algorithmes d'apprentissage machine très efficaces qui peuvent donner une grande précision, autour de 99,2% dans ce cas !! En savoir plus sur les SVM

L'ensemble de données se présente sous la forme d'un fichier.csv qui contient 785 colonnes et plus de 300 000 lignes où chaque ligne représente une image 28 x 28 et chaque colonne de cette ligne contient la valeur de ce pixel pour cette image avec une colonne supplémentaire dans le début qui contient l'étiquette, un nombre de 0 à 25, correspondant chacun à une lettre anglaise. Grâce à un simple code python, j'ai découpé les données pour obtenir toutes les images pour seulement les 2 lettres (A et C) que je voulais et j'ai formé un modèle pour elles.

J'ai joint le modèle entraîné (alphabet_classifier.pkl) ainsi que le code d'entraînement, n'hésitez pas à le parcourir ou à apporter des modifications pour entraîner le modèle avec différentes lettres ou essayer différents algorithmes. Après avoir exécuté le programme, il enregistre automatiquement le modèle entraîné dans le même répertoire où votre code est enregistré.

Étape 6: Le code qui rend tout cela possible

Le code qui rend tout cela possible !!
Le code qui rend tout cela possible !!

Après avoir créé le modèle entraîné, la dernière étape consiste à écrire un programme python pour notre Raspberry Pi qui nous permet d'effectuer les opérations suivantes:

  • Accéder à la vidéo depuis la picamera en temps réel
  • Détectez et suivez les taches blanches (dans ce cas la pointe de la baguette qui s'illumine en vision nocturne) dans la vidéo
  • Commencez à tracer le chemin du blob en mouvement dans la vidéo après un événement déclencheur (expliqué ci-dessous)
  • Arrêter le traçage après un autre événement déclencheur (expliqué ci-dessous)
  • Renvoie la dernière image avec le motif dessiné par l'utilisateur
  • Effectuez un pré-traitement sur la trame comme le seuillage, la suppression du bruit, le redimensionnement, etc.
  • Utilisez la dernière image traitée pour la prédiction.
  • Effectuez une sorte de magie en contrôlant les GPIO du Raspberry Pi selon la prédiction

Pour ce projet, j'ai créé une boîte sur le thème de Harry Potter que je peux ouvrir et fermer à l'aide d'un servomoteur contrôlé par le GPIO du Raspberry Pi. Puisque la lettre 'A' signifie 'Alohamora' (l'un des sorts les plus célèbres des films Harry Potter qui permet à un sorcier d'ouvrir n'importe quel verrou !!), si une personne dessine la lettre A avec la baguette, le pi commande au servo de Ouvre la boite. Si la personne dessine la lettre 'C' qui signifie fermer (car je ne pouvais penser à aucun sort approprié utilisé pour fermer ou verrouiller:P), le pi commande au servo de fermer la boîte.

Tout le travail lié au traitement d'image/vidéo, comme la détection de blob, le traçage du chemin du blob, le pré-traitement de la dernière image etc., se fait via le module OpenCV.

Pour les événements déclencheurs mentionnés ci-dessus, deux cercles sont créés sur la vidéo en temps réel, un cercle vert et un cercle rouge. Lorsque le blob pénètre dans la région à l'intérieur du cercle vert, le programme commence à tracer le chemin emprunté par le blob après ce moment, permettant à la personne de commencer à créer la lettre. Lorsque le blob atteint le cercle rouge, la vidéo s'arrête et la dernière image est transmise à une fonction qui effectue le pré-traitement sur l'image pour la préparer à la prédiction.

J'ai joint les fichiers de code dans cette étape. N'hésitez pas à le parcourir et à apporter les modifications que vous souhaitez.

REMARQUE: j'ai dû créer deux fichiers python distincts fonctionnant avec différentes versions de python, l'un qui importe le module OpenCV (Python 2.7) et l'autre qui importe le module sklearn (Python 3.5) pour la prédiction après le chargement du modèle formé, car mon OpenCV a été installé pour la version Python 2.7 tandis que le sklearn était installé pour python 3.5. J'ai donc utilisé le module de sous-processus pour exécuter le fichier HarryPotterWandsklearn.py (pour la prédiction) à partir de HarryPotterWandcv.py (pour tout le travail opencv et l'enregistrement vidéo en temps réel) et obtenir sa sortie. De cette façon, je n'ai qu'à exécuter le fichier HarryPotterWandcv.py.

Étape 7: Le mécanisme d'ouverture de la boîte

Le mécanisme d'ouverture de la boîte
Le mécanisme d'ouverture de la boîte
Le mécanisme d'ouverture de la boîte
Le mécanisme d'ouverture de la boîte
Le mécanisme d'ouverture de la boîte
Le mécanisme d'ouverture de la boîte

J'avais une vieille boîte de couleur rouge qui traînait autour de laquelle j'ai utilisé pour ce projet.

Pour le mécanisme Box-Opening:

  1. J'ai collé à chaud un servo près de l'extrémité arrière de la boîte sur un morceau de carton près du bord de la boîte.
  2. Ensuite, j'ai pris un rayon de la roue d'un cycle et je l'ai collé à chaud sur le bras du servo.
  3. L'autre extrémité du rayon était attachée au couvercle de la boîte à l'aide d'un morceau de fil.
  4. Le positif du servo était connecté à +5V Pin 2 sur Raspberry Pi.
  5. Le négatif du servo était connecté à la broche GND 39.
  6. Le signal du servo était connecté à la broche 12

Étape 8: Fabriquer la boîte sur le thème de Harry Potter

Faire la boîte sur le thème de Harry Potter
Faire la boîte sur le thème de Harry Potter
Faire la boîte sur le thème de Harry Potter
Faire la boîte sur le thème de Harry Potter
Faire la boîte sur le thème de Harry Potter
Faire la boîte sur le thème de Harry Potter

Pour créer la boîte sur le thème de Harry Potter, j'ai imprimé des images colorées de diverses choses comme le logo Harry Potter, l'écusson de Poudlard, l'écusson de chacune des quatre maisons, etc. des endroits.

J'ai également utilisé une feuille de velours de couleur jaune pour découper des bandes et les coller sur le couvercle pour donner à la boîte la même couleur que celle de la maison Gryffondor. J'ai recouvert l'intérieur du couvercle et le carton du servo d'une feuille de velours vert. A l'intérieur du couvercle, j'ai collé d'autres symboles et un emblème montrant les animaux qui représentent chaque maison de l'école de Poudlard.

Puis finalement j'ai fourré tous mes objets liés à Harry Potter dans la boîte qui comprenait un silencieux Gryffondor, un journal avec l'uniforme de Poudlard et la baguette de sureau utilisée dans ce projet:D

Conseillé: