2010-11-29 9 views
4

für meine abschlussarbeit ich versuche, ein 3d-gesichtserkennungssystem durch die kombination von farbe und tiefe information aufzubauen. Der erste Schritt, den ich gemacht habe, besteht darin, den Datenkopf mit dem iterativen Algorithmus des nächsten Punktes auf einen gegebenen Modellkopf auszurichten. Für den Erkennungsschritt dachte ich über die Verwendung der libsvm nach. aber ich verstehe nicht, wie man die Tiefe und die Farbinformation zu einem Merkmalsvektor kombiniert? Sie sind abhängige Informationen (jeder Punkt besteht aus Farbe (RGB), Tiefeninformationen und Scan-Qualität) .. Was schlagen Sie vor? etwas wie Gewichtung?maschinelles lernen - svm feature fusion techique

bearbeiten: Letzte Nacht habe ich einen Artikel über SURF/SIFT Funktionen gelesen, die ich gerne verwenden würde! könnte es funktionieren? Das Konzept wäre das Folgende: Extrahieren dieser Features aus dem Farbbild und dem Tiefenbild (Entfernungsbild), wobei jedes Merkmal als ein einziger Merkmalsvektor für das SVM verwendet wird?

+0

Wie Steve sagte, verketten Sie die beiden Vektoren. Ich würde dann PCA durchführen. – Eamorr

+0

Letzte Nacht habe ich einen Artikel über SURF/SIFT Funktionen gelesen .. ich möchte sie benutzen! könnte es funktionieren? Das Konzept wäre folgendes: - Extrahieren dieser Merkmale aus dem Farbbild und dem Tiefenbild (Entfernungsbild) an – Ben

Antwort

1

Es klingt einfach, aber Sie können einfach die beiden Vektoren zu einem verketten. Viele Forscher tun dies.

4

Verkettung ist in der Tat eine Möglichkeit. Da Sie jedoch an der 3D-Gesichtserkennung arbeiten, sollten Sie eine Strategie haben, wie Sie vorgehen. Die Rotation und Übersetzung von Gesichtern ist mit einem "einfachen" Ansatz schwer zu erkennen.

Sie sollten entscheiden, ob Sie versuchen, eine Erkennung des Gesichts als Ganzes oder von Untermerkmalen durchzuführen. Sie könnten versuchen, die Rotation zu erkennen, indem Sie einige Kernfunktionen (Augen, Nase usw.) finden.

Denken Sie auch daran, dass SVMs inhärent binär sind (d. H. Sie trennen sich zwischen zwei Klassen). Abhängig von Ihrer genauen Anwendung werden Sie sehr wahrscheinlich eine Multi-Klassen-Strategie (One-gegen-All oder One-gegen-Viele) anwenden müssen.

Ich würde empfehlen, einige Literaturrecherche zu tun, um zu sehen, wie andere das Problem angegriffen haben (eine Google-Suche wird ein guter Anfang sein).

0

Was Sie erreicht haben, ist ein wichtiges offenes Problem. Ja, es gibt einige Wege damit umzugehen, wie hier von Eamorr erwähnt. Zum Beispiel können Sie verketten und machen PCA (oder einige non linear dimensionality reduction Methode). Es ist jedoch schwierig, die praktische Anwendbarkeit zu rechtfertigen, wenn man bedenkt, dass PCA eine O (n^3) -Zeit in der Anzahl der Merkmale benötigt. Dies allein kann für Daten in der Sicht, die Tausende von Funktionen aufweisen können, nicht sinnvoll sein.

0

Wie von anderen erwähnt, besteht der einfachste Ansatz darin, einfach die beiden Merkmalssätze zu einer zu kombinieren.

SVM zeichnet sich durch die Hyperebene normal bis zur maximalen Marge aus, deren Komponenten die Gewichte/Wichtigkeit der Merkmale angeben, so dass höhere absolute Werte einen größeren Einfluss auf die Entscheidungsfunktion haben. Somit ordnet SVM jedem Merkmal eigene Gewichte zu.

Damit dies funktioniert natürlich würden Sie alle Attribute normalisieren müssen den gleichen Maßstab haben (sagen wir verwandeln alle Funktionen im Bereich sein [-1,1] oder [0,1])

Verwandte Themen