Table des matières:

Démos Sipeed MaiX Bit OpenMV - Vision par ordinateur : 3 étapes
Démos Sipeed MaiX Bit OpenMV - Vision par ordinateur : 3 étapes

Vidéo: Démos Sipeed MaiX Bit OpenMV - Vision par ordinateur : 3 étapes

Vidéo: Démos Sipeed MaiX Bit OpenMV - Vision par ordinateur : 3 étapes
Vidéo: Приложение No Code Edge AI Tool: демонстрация безопасности склада 2024, Septembre
Anonim
Image
Image

Ceci est le deuxième article de la série sur Sipeed AI sur la plate-forme de microcontrôleur Edge. Cette fois, j'écrirai sur MaiX Bit (lien vers Seeed Studio Shop), une carte de développement plus petite et prête pour la maquette. Ses spécifications sont très similaires à MaiX Dock, la carte que j'ai utilisée pour le dernier tutoriel, car ils utilisent la même puce, Kendryte K210.

Nous allons utiliser le micrologiciel micropython pour essayer des démos OpenMV. Voici la description de la page d'accueil d'OpenMV:

Le projet OpenMV consiste à créer des modules de vision industrielle peu coûteux, extensibles et alimentés par Python et vise à devenir «l'Arduino de la vision industrielle».…Python facilite grandement le travail avec les algorithmes de vision industrielle. Par exemple, la méthode find_blobs() dans le code trouve les blobs de couleur et renvoie une liste d'objets à 8 valeurs représentant chaque blobs de couleur trouvé. En Python, parcourir la liste des objets renvoyés par find_blobs() et dessiner un rectangle autour de chaque blob de couleur se fait facilement en seulement deux lignes de code.

Ainsi, bien que MaiX Bit dispose d'un accélérateur de réseau neuronal dédié, il peut parfois être plus facile d'utiliser simplement des algorithmes codés en dur OpenMV pour faire le travail ou de les utiliser les uns à côté des autres.

Certains cas d'utilisation qui me viennent à l'esprit sont:

1) Détection de ligne pour le bot suiveur de ligne

2) Détection des feux de circulation avec détection de cercle et de couleur

3) Utilisation de la détection de visage pour trouver les visages pour la reconnaissance faciale (avec DNN)

Dépôt Github pour cet article

Étape 1: Micrologiciel Flash Micropython

Se connecter à MaiX Bit
Se connecter à MaiX Bit

Tout d'abord, nous devrons flasher le micrologiciel micropython sur notre carte. Un binaire précompilé est inclus dans le référentiel github pour cet article, avec kflash.py (un utilitaire flash). Si vous souhaitez compiler le firmware à partir du code source, téléchargez simplement le code source sur https://github.com/sipeed/MaixPy, installez la chaîne d'outils et compilez le code source dans le fichier maixpy.bin. Des instructions de construction détaillées peuvent être trouvées ici.

Flashez le fichier binaire avec

sudo python3 kflash.py kpu.bin

Après un clignotement réussi, passez à l'étape suivante.

Étape 2: Connectez-vous à MaiX Bit

Maintenant, notre MaiX Bit devrait être accessible via une connexion série USB avec un débit en bauds de 115200. Vous pouvez utiliser votre logiciel préféré pour la communication série ou simplement les commandes cat et echo, selon vos besoins. J'utilisais un écran pour la communication série et je le trouve très pratique.

La commande d'établissement d'une session de communication série avec écran est

écran sudo /dev/ttyUSB0 115200

où /dev/ttyUSB0 est l'adresse de votre appareil.

Vous devrez peut-être appuyer sur le bouton de réinitialisation de votre microcontrôleur pour voir le message d'accueil et l'invite de l'interpréteur python.

Étape 3: lancez les démos

Vous pouvez maintenant accéder au mode copie en appuyant sur Ctrl+E et copier-coller les codes de démonstration. Pour les exécuter, appuyez sur Ctrl+D en mode copie.

Si vous ne souhaitez pas enregistrer les vidéos, vous devez commenter les lignes d'enregistrement vidéo. Sinon, le code lèvera une exception s'il n'y a pas de carte SD insérée

Voici une brève description de chaque démo:

Find circles - utilise la fonction find_circles d'OpenMV. Nécessite plus de réglages pour votre application spécifique, en particulier le seuil (contrôle les cercles détectés à partir de la transformation de Hough. Seuls les cercles d'une amplitude supérieure ou égale au seuil sont renvoyés) et les valeurs r_min, r_max.

Rechercher des rectangles - utilise la fonction find_rects d'OpenMV. Vous pouvez jouer avec la valeur seuil, mais la valeur que j'ai dans la démo fonctionne assez bien pour trouver des rectangles.

Trouver des visages, trouver des yeux - utilise la fonction find_features avec Haar Cascades pour détecter les yeux et le visage frontal dans l'image. Vous pouvez jouer avec les valeurs de seuil et d'échelle pour le bon compromis vitesse-précision.

Rechercher des lignes infinies - utilise la fonction find_lines pour trouver toutes les lignes infinies de l'image à l'aide de la transformation de Hough.

Détecter la couleur - utilise la fonction get_statistics pour obtenir un objet centile, puis convertit les valeurs moyennes du tuple LAB en tuple des valeurs RVB. J'ai écrit cet exemple moi-même et cela fonctionne assez bien, mais gardez à l'esprit que les résultats de la détection des couleurs seront affectés par les conditions de lumière ambiante.

Vous pouvez trouver de nombreuses autres démos intéressantes dans le référentiel github d'OpenMV ! Ils sont pour la plupart compatibles avec le micropython MaiX Bit, la seule chose dont vous devez vous souvenir est d'ajouter sensor.run(1) après avoir défini le format pix et la taille du cadre.

Bonne expérimentation avec le code OpenMV. Si vous avez des questions ou souhaitez partager certains de vos résultats intéressants, n'hésitez pas à me joindre sur Youtube ou LinkedIn. Maintenant, excusez-moi, je vais faire des robots !

Conseillé: