0

Ich möchte bewerten, ob ein Ereignis in meinem Bildschirm passiert, jedes Mal, wenn es passiert, zeigt eine bestimmte Box/Bild in einer Bildschirmregion mit sehr ähnlicher Struktur.Python - Bilderkennung Klassifikator

Ich habe eine Reihe von 84x94 .pngRGB Bilder von diesem Bildschirmbereich gesammelt und ich würde gerne einen Klassifikator bauen, um mir zu sagen, ob das Ereignis passiert ist oder nicht.

Daher meine Idee, ein pd.DataFrame (df), die 2 Spalten zu erstellen war, enthält df['np_array'] jedes Bild als np.array und df['is_category'] enthält sagen Boolesche Werte, wenn das Bild, das anzeigt, dass das Ereignis passiert ist oder nicht.

Die Struktur sieht wie folgt aus (mit = Größe!):

I Größe verändert haben die Bilder für die Ausbildung 10x10 und umgewandelt

df = pd.DataFrame(
    {'np_array': [np.random.random((10, 10,2)) for x in range(0,10)], 
    'is_category': [bool(random.getrandbits(1)) for x in range(0,10)] 
    }) 

Mein Problem in Graustufen ist, dass ich nicht kann passen Sie einen scikit lernen Klassifikator indem Sie clf.fit(df['np_array'],df['is_category'])

Ich habe noch nie Bilderkennung versucht, danke im Voraus für jede Hilfe!

Antwort

1

Wenn ihr ein 10x10 Graubild, können Sie es glätten:

import numpy as np 
from sklearn import ensemble 

# generate random 2d arrays 
image_data = np.random.rand(10,10, 100) 

# generate random labels 
labels = np.random.randint(0,2, 100) 

X = image_data.reshape(100, -1) 

# then use any scikit-learn classification model 
clf = ensemble.RandomForestClassifier() 
clf.fit(X, y) 

By the way, für Bilder mit der besten Performance-Algorithmen sind Faltungs neuronale Netze.

+1

Vielen Dank für die Lösung und den Algorithmus Tipp, dies löste mein Problem! Wie gesagt, die Bilder waren sehr ähnlich, mit weniger als 500 Bildern habe ich 100% Genauigkeit im Testset. – EduGord