Crea il tuo set di dati immagine utilizzando Opencv in Machine Learning

Contenuti

introduzione

Il machine learning e le immagini hanno un ottimo rapporto, la classificazione delle immagini è stato uno dei ruoli principali del machine learning nel corso degli anni. È stato molto utile durante la pandemia di COVID-19 riconoscere le persone che non seguono le regole come indossare maschere e mantenere le distanze.

Prerequisiti

Ogni programma ha alcuni prerequisiti per risolvere problemi legati all'ambiente.. Stiamo costruendo un set di dati per un progetto di machine learning, il requisito minimo per questo è una macchina con python3 installato e un modulo OpenCV su di esso.

Sto usando Jupyter Notebook sul mio sistema. Se anche tu vuoi usare le stesse impostazioni, devi installare Anaconda sulla tua macchina e quindi installare OpenCV.

Instalar OpenCV

Per installare OpenCV, apri il prompt dei comandi se non stai usando anaconda. Altrimenti, apri il prompt dei comandi di anaconda dalla ricerca di Windows e digita il comando indicato di seguito.

pip install opencv-python=3.4.2.17

Ora sei pronto per codificare e preparare il tuo set di dati.

Passi coinvolti

Qui tratteremo tutti i passaggi coinvolti nella creazione di questo programma.

passo 1: Importa moduli

Primo, dobbiamo importare tutti i moduli richiesti nella console del programma. Abbiamo solo bisogno di due moduli, uno è il “OpenCV” e l'altro è il modulo “tu”. Opencv viene utilizzato per acquisire e renderizzare l'immagine utilizzando la fotocamera del laptop e il modulo del sistema operativo viene utilizzato per creare una directory.

76310Screenshot2072-6768107
import cv2 as cv
import os

passo 2: Creare un oggetto fotocamera

Come dobbiamo creare il nostro set di dati di immagini, abbiamo bisogno della fotocamera, e OpenCV ci aiuta a creare oggetti della fotocamera che possono essere utilizzati in seguito per varie azioni.

30354Screenshot2076-7626402
#trama 0 is given to use the default camera of the laptop
camera = cv.VideoCapture(0)
#Now check if the camera object is created successfully
if not camera.isOpened():
    Stampa("La fotocamera non è aperta.... Uscita")
    uscita()

passo 3: creare cartelle di tag

Ora, abbiamo bisogno di creare cartelle per ogni etichetta per motivi di differenziazione. Utilizzare il codice riportato di seguito per creare queste cartelle, È possibile aggiungere tutti i tag desiderati. Abbiamo dato nomi ai nostri tag in base al gioco: pietra, carta, forbici. Stiamo preparando un dataset che potrebbe classificare l'immagine se si tratta di una pietra, un ruolo, una forbice o solo un fondo.

13797Screenshot2086-8710402
#Creazione di un elenco di lables "Puoi aggiungerne quanti ne vuoi"
Etichette = ["Sfondo","Pietra","Carta","Forbici"]
#Now create folders for each label to store images
for label in Labels:
    in caso contrario, Os.Path.exists(etichetta):
        os.mkdir(etichetta)

passo 4: passaggio finale per acquisire immagini

Questo è il passo finale e più cruciale del programma. I commenti sono stati scritti online per rendere più facile la comprensione. Aquí tenemos que capturar imágenes y almacenar esas imágenes de acuerdo con la carpeta de etiquetas. Lea el código a fondo, hemos mencionado cada pequeña cosa aquí.

per la cartella in Etichette:
    #Utilizzo della variabile Count per assegnare un nome alle immagini nel dataset.
    conteggio = 0
    #Taking input to start the capturing
    print("Premere 's' per avviare la raccolta dei dati per"+cartella)
    userinput = input()
    se userinput != 's':
        Stampa("Input errato ..........")
        uscita()
    #ticchettio 200 immagini per etichetta, È possibile modificare come si desidera.    
    mentre conta<200:
        #read returns two values one is the exit code and other is the frame
        status, frame = camera.read()
        #check if we get the frame or not
        if not status:
            Stampa("Il frame non è stato acquisito.. Uscita...")
            break
        #convert the image into gray format for fast caculation
        gray = cv.cvtColor(portafoto, cv.COLOR_BGR2GRAY)
        #display window with gray image
        cv.imshow("Finestra video",grigio)
        #resizing the image to store it
        gray = cv.resize(grigio, (28,28))
        #Store the image to specific label folder
        cv.imwrite(«C:/Utenti/HP/Documenti/AnacondaML/'+cartella+'/img'+str(contare)+'.png',grigio)
        count=count+1
        #to quite the display window press 'q'
        if cv.waitKey(1) == ord('Q'):
            rottura
# Quando tutto è fatto, release the capture
camera.release()
cv.destroyAllWindows()

Implementación práctica

Ora, ejecute el programa para crear el conjunto de datos. Primero proporcionaremos el fondo, luego la piedra, el papel y las tijeras. Antes de la implementación, dovresti sempre essere chiaro su ciò che hai codificato e su come l'output ti aiuterà a risolvere il requisito del caso d'uso. Facciamolo ...

Esegui il programma tutto in una volta

Stiamo usando il notebook jupyter per eseguire questo programma, puoi usare qualsiasi interprete Python. Primo, vai al menu della cella e fai clic su “Corri tutto”, questo eseguirà tutte le celle disponibili in un colpo solo.

41732screenshot2077-7509171

Ora, verrà generato un messaggio di input, premi 's’ e premi invio per iniziare a salvare le immagini per lo sfondo.

16976screenshot2078-2496871

Dopo aver premuto 's', catturerà 200 immagini di sfondo. Apparirà la finestra di visualizzazione e le immagini inizieranno a essere catturate., quindi esci dall'inquadratura e consenti alla fotocamera di catturare lo sfondo.

45916screenshot2080-8047816

Ora, chiederà 's’ e catturerà immagini di “pietra”. Quindi, stringi il pugno e mostralo alla telecamera in varie posizioni.

Nota: agita semplicemente la mano con il pugno chiuso, non fissare la mano in una posizione per produrre un set di dati ben etichettato.

38616screenshot2081-1074408

Ora, ripeti lo stesso processo per le immagini di carta e forbici. Non dimenticare di premere 's’ quando richiesto, altrimenti, la finestra del display sembrerà bloccata, ma non è.

26340screenshot2082-2724197
34776screenshot2083-9098614

Il programma si chiuderà automaticamente. Ora puoi controllare navigando se il set di dati è stato creato o meno.

Nota: Il set di dati dell'immagine verrà creato nella stessa directory in cui è memorizzato il programma Python. Verranno create quattro directory in base all'etichetta assegnata loro.

58640screenshot2084-9478225

sì, le cartelle sono state create con successo, ora controlla se le immagini sono state catturate e salvate. La dimensione dell'immagine non sarà la stessa di quella che stavi visualizzando durante il processo di acquisizione. Abbiamo ridotto le dimensioni dell'immagine in modo che, quando utilizzato in un progetto di apprendimento automatico per addestrare il modello, richiedono meno risorse e tempo.

83028screenshot2085-8597068

Viva! Abbiamo creato il nostro set di dati di immagini che, Cosa c'è di più, può essere utilizzato in progetti di apprendimento automatico per la classificazione.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.