2017-08-22 1 views
0

Der Zweck der Aufgabe besteht darin, Bilder mithilfe von SVM zu klassifizieren. Die Variable 'images' soll die Bildinformation enthalten und entsprechend labels enthält Bildbeschriftungen. Wie kann ich (welches Format und welche Maße) die images und labels haben? Ich habe versucht, images unsuccesfully ein Python-Array zu sein (abgeflachte Bilder angehängt) und dann in einem anderen Versuch, Numpy Arrays:So trainieren Sie OpenCV SVM-Klassifikator für Bilder

images=np.zeros((number_of_images, image_size)) 
labels=np.zeros((number_of_images, 1)) 

svm=cv2.SVM() 
svm.train(images, labels) 

Ist es eine richtige Ansatz, um das Problem und wenn ja, was für die Ausbildung ist der richtige Weg der Klassifikator?

Antwort

2

Ich glaube nicht, dass Sie rohe Bilddaten verwenden können, um SVM-Modell zu trainieren. Ok-ok, du kann, aber es wird nicht sehr fruchtbar sein.

Der grundlegende Ansatz ist zu Extrakt einige Merkmale aus jedem Bild und die Verwendung dieser Funktionen für Ihr Modell zu trainieren. Eine Reihe von Funktionen bildet ein Wörterbuch von Wörtern, von denen jedes Ihr Bild beschreibt. Da Sie jedes Bild mit denselben Wörtern beschreiben, können Sie Funktionen vergleichen, die verschiedenen Bildern entsprechen. This link führt weitere Details ein, überprüfen Sie es.

Was kommt als nächstes?

  1. ein Feature-Extraktor für Ihre algo wählen - HOG, SURF, SIFT (link)
  2. Extract Funktionen von jedem Bild. Sie erhalten ein Array mit der gleichen Länge wie das Bilder-Array.
  3. initialisieren bag-of-Wörter (BOG) Modell
  4. Zug SVM mit BoG

Nützliche Links:

  1. C++ vey detailed example
  2. Documentation for existing BOG classifier
+0

Sie RAW-Bild verwenden könnte Daten zum Train SVM-Modell, das sehr fruchtbar ist. Zum Beispiel, R, G, B/L, a, b Kanäle, um ein Modell für die Farbkorrektur zu trainieren. –

+0

@RickM. Aber wir diskutieren Klassifizierung, nicht wahr? – CaptainTrunky

Verwandte Themen