Créez votre propre ensemble de données d'images à l'aide d'Opencv dans Machine Learning

Contenu

introduction

L'apprentissage automatique et les images ont une excellente relation, la classification d'images a été l'un des principaux rôles de l'apprentissage automatique au fil des ans. Il a été très utile pendant la pandémie de COVID-19 de reconnaître les personnes qui ne respectent pas les règles telles que le port de masques et le maintien de leurs distances.

Conditions préalables

Chaque programme a des prérequis pour résoudre des problèmes liés à l'environnement.. Nous construisons un ensemble de données pour un projet d'apprentissage automatique, l'exigence minimale pour cela est une machine avec python3 installé et un module OpenCV dessus.

J'utilise Jupyter Notebook sur mon système. Si vous souhaitez également utiliser les mêmes paramètres, vous devez installer Anaconda sur votre machine, puis installer OpenCV.

Installer OpenCV

Pour installer OpenCV, ouvrez l'invite de commande si vous n'utilisez pas anaconda. Au contraire, ouvrez l'invite de commande anaconda à partir de la recherche Windows et tapez la commande ci-dessous.

pip installer opencv-python=3.4.2.17

Vous êtes maintenant prêt à coder et préparer votre ensemble de données.

Étapes impliquées

Ici, nous allons couvrir toutes les étapes impliquées dans la création de ce programme.

Paso 1: Importer des modules

Premier, nous devons importer tous les modules requis dans la console du programme. Nous n'avons besoin que de deux modules, l'un est le « OpenCV » et l'autre est le module « tu ». Opencv est utilisé pour capturer et rendre l'image à l'aide de la caméra de l'ordinateur portable et le module du système d'exploitation est utilisé pour créer un répertoire.

76310capture d
importer cv2 en tant que cv
importer le système d'exploitation

Paso 2: créer un objet caméra

Comment nous devons créer notre propre ensemble de données d'images, nous avons besoin de la caméra, et OpenCV nous aide à créer des objets caméra qui peuvent être utilisés plus tard pour diverses actions.

30354capture d
#argument 0 est donné d'utiliser la caméra par défaut de l'ordinateur portable
caméra = cv.VideoCapture(0)
#Vérifiez maintenant si l'objet caméra est créé avec succès
sinon camera.isOpened():
    imprimer("L'appareil photo n'est pas ouvert....Sortie")
    sortir()

Paso 3: créer des dossiers de balises

À présent, nous devons créer des dossiers pour chaque balise dans un souci de différenciation. Utilisez le code fourni ci-dessous pour créer ces dossiers, vous pouvez ajouter autant de balises que vous le souhaitez. Nous avons nommé nos étiquettes en fonction du jeu: calcul, papier, paire de ciseaux. Nous préparons un jeu de données qui pourrait classer l'image si c'est une pierre, un papier, des ciseaux ou juste un bas.

13797capture d
#créer une liste de lables "Vous pouvez en ajouter autant que vous voulez"
Étiquettes = ["Contexte","Calcul","Papier","Ciseaux"]
#Créez maintenant des dossiers pour chaque étiquette pour stocker des images
pour l'étiquette dans les étiquettes:
    sinon os.path.existe(étiqueter):
        os.mkdir(étiqueter)

Paso 4: dernière étape pour capturer des images

C'est l'étape finale et la plus cruciale du programme.. Des commentaires en ligne ont été rédigés pour faciliter la compréhension. Ici, nous devons capturer des images et stocker ces images en fonction du dossier de balises. Lisez attentivement le code, nous avons mentionné chaque petite chose ici.

pour le dossier dans les étiquettes:
    #utiliser la variable count pour nommer les images dans l'ensemble de données.
    compter = 0
    #Prise d'entrée pour démarrer la capture
    imprimer("Appuyez sur 's' pour démarrer la collecte de données pour"+dossier)
    entrée utilisateur = entrée()
    si entrée utilisateur != 's':
        imprimer("Mauvaise entrée ........")
        sortir()
    #en cliquant 200 images par étiquette, tu peux changer comme tu veux.    
    tout en comptant<200:
        #read renvoie deux valeurs l'une est le code de sortie et l'autre est le cadre
        statut, frame = camera.read()
        #vérifier si nous obtenons le cadre ou non
        sinon statut:
            imprimer("L'image n'a pas été capturée..Sortie...")
            Pause
        #convertir l'image au format gris pour un calcul rapide
        gris = cv.cvtCouleur(Cadre, cv.COLOR_BGR2GRAY)
        #fenêtre d'affichage avec image grise
        cv.imshow("Fenêtre vidéo",gris)
        #redimensionner l'image pour la stocker
        gris = cv.redimensionner(gris, (28,28))
        #Stocker l'image dans un dossier d'étiquettes spécifique
        cv.imwrite('C:/Utilisateurs/HP/Documents/AnacondaML/'+dossier+'/img'+str(compter)+'.png',gris)
        compte=compte+1
        #pour quitter la fenêtre d'affichage, appuyez sur 'q'
        si cv.waitKey(1) == ordre('q'):
            Pause
# Quand tout est fait, libérer la capture
appareil.photo()
cv.destroyAllWindows()

Mise en œuvre pratique

À présent, exécuter le programme pour créer l'ensemble de données. Nous fournirons d'abord le contexte, puis la pierre, le papier et les ciseaux. Avant la mise en œuvre, vous devez toujours être clair sur ce que vous avez codé et comment la sortie vous aidera à résoudre les exigences du cas d'utilisation. Faisons le ...

Exécuter le programme en une seule fois

Nous utilisons jupyter notebook pour exécuter ce programme, vous pouvez utiliser n'importe quel interpréteur python. Premier, allez dans le menu de la cellule et cliquez sur « Exécuter tout », cela exécutera toutes les cellules disponibles en un seul coup.

41732capture d

À présent, un message d'entrée sera généré, presse ‘s’ et appuyez sur Entrée pour commencer à enregistrer des images pour l'arrière-plan.

16976capture d

Después de presionar ‘s’, va capturer 200 images d'arrière-plan. La fenêtre d'affichage apparaît et les images commencent à être capturées., alors sortez du cadre et laissez la caméra capturer l'arrière-plan.

45916capture d

À présent, pedirá ‘s’ et capturera des images de « calcul ». Ensuite, serrez le poing et montrez-le à la caméra dans différentes positions.

Noter: agitez simplement votre main avec votre poing fermé, ne fixez pas votre main dans une position pour produire un ensemble de données bien étiqueté.

38616capture d

À présent, répéter le même processus pour les images papier et ciseaux. N'oubliez pas d'appuyer ‘s’ lorsque vous y êtes invité, au contraire, la fenêtre de visualisation semblera bloquée, mais ce n'est pas.

26340capture d
34776capture d

Le programme se fermera automatiquement. Vous pouvez maintenant vérifier en parcourant si le jeu de données a été créé ou non.

Noter: L'ensemble de données d'image sera créé dans le même répertoire où le programme Python est stocké. Quatre répertoires seront créés selon l'étiquette qui leur est attribuée.

58640capture d

Oui, les dossiers ont été créés avec succès, vérifiez maintenant si les images ont été capturées et enregistrées. La taille de l'image ne sera pas la même que celle que vous visualisiez pendant le processus de capture. Nous avons réduit la taille de l'image afin que, lorsqu'il est utilisé dans un projet d'apprentissage automatique pour entraîner le modèle, nécessitent moins de ressources et de temps.

83028capture d

Viva! Nous avons créé notre propre jeu de données d'images qui, en outre, peut être utilisé dans des projets d'apprentissage automatique pour la classification.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.