2014-05-13 13 views
5

Ich versuche, HoG + SVM Objekte in verschiedene Kategorien zu klassifizieren. Das Problem ist, dass die Dimension der Trainingsbilder unterschiedlich ist. Die resultierenden HoG-Deskriptoren haben also variable Längen. Ich habe die Merkmale aller Trainingsbilder in eine Zelle extrahiert. Jedes Element i der Zelle ist ein Vektor von HoG-Deskriptoren für das Bild i in dem Datensatz. Meine Frage ist, wie mache ich es kompatibel für das Training der SVM-Klassifikator (mit Svmtrain-Funktion)?Training SVM mit variabler Größe Beschreibung der Trainingsbilder (MATLAB)

Antwort

7

Wie lejlot richtig erwähnt, kann SVM nicht mit Vektoren variabler Länge trainiert werden.

Sie können die Bildgröße einfach auf eins normieren, d. H. 256x256. Es gibt 3 Möglichkeiten, dies zu tun:

  1. Crop die 256x256 Patch um den Mittelpunkt.
  2. Bildgröße auf 256x256 ändern und das ursprüngliche Seitenverhältnis verwerfen.
  3. Bild auf 256xM skalieren, wobei M < 256 ist - das ursprüngliche Seitenverhältnis bleibt erhalten. Dann füge graue Streifen links und rechts (oder oben und unten) hinzu, um das Bild auf 256x256 zu füllen.

Alle Varianten werden von verschiedenen Autoren verwendet und Sie müssen überprüfen, welche für Ihre Aufgabe am besten geeignet ist.

+0

Vielen Dank old-ufo, das war sehr hilfreich. Ich werde es jetzt ausprobieren. –

3

SVM kann nicht trainiert werden mit Vektoren variabler Länge. Sie müssen eine Art von Transformation verwenden, die Ihre Daten in eine Darstellung mit konstanter Länge abbildet. Sie können zum Beispiel bekannte Dimensionalitätsreduktionstechniken ausführen.

+0

Irgendwelche Ideen zum Umgang mit dem Problem außer Dimensionalität Reduktion? –

Verwandte Themen