Ich versuche, ein Objektdetektionsmodul zu realisieren, das die folgenden Schritte enthält:unter Verwendung des Beutels von Worten/Merkmalen und neuronales Netz
1) extrahiert Bilddeskriptoren mit SURF, eine Matrix der Größe erstellen [x, 64] , wobei x von der Anzahl der im Bild gefundenen Schlüsselpunkte abhängt;
2) Fixieren Sie die Deskriptorgröße in einem [k, 64] -Format, indem Sie die Funktion bag of features/words verwenden. Dabei ist k die Anzahl der Cluster, die mit k-means erstellt wurden.
3) füttern Sie ein neuronales Netzwerk mit dem resultierenden Beutel der Wörter Matrix als TrainingSamples.
Bisher habe ich die Schritte 1 und 2 implementiert, aber ich bin mir nicht ganz sicher, wie man den Ausgabevektor des NN formatiert. Bei OpenCV CvANN_MLP sollte die Anzahl der Zeilen im Ausgabevektor die gleiche Anzahl der Eingabezeilen haben (ansonsten gibt es eine what() Ausnahme), aber die Anzahl der Eingabezeilen ist die Anzahl der k Cluster in Schritt 2, also I Ich verstehe nicht, wie man die Ausgabematrix basierend darauf schreibt.
Ich weiß, dass die Ausgabematrix n Spalten haben sollte, die der Anzahl der Klassen in der Ausgabe entsprechen, die ich möchte (zB 3 Klassen: Katze, Hund und Vogel ergeben eine Matrix mit 3 Spalten), aber wie organisiere ich die Zeilen dieser Matrix basierend auf den Eingabezeilen? Ich lese dieses in Verbindung stehende post, es benutzt Matlab und es sagt, dass jedes Merkmal eine Reihe sein sollte, aber ich bin nicht sicher, wie man dies auf OpenCV C++ tut. Wenn jemand eine Idee/Tipps hat, wie man damit fortfährt, wäre es sehr geschätzt.
Vielen Dank für die Antwort. Also, ich weiß nicht, ob ich richtig denke, aber für mich ist der Feature-Vektor der Vektor aus Surf (Schritt 1) extrahiert, das ist das gleiche, das ich als Eingabe für Beutel von Wörtern verwende, ich organisiere es einfach auf Cluster, weil Surf gibt einen Vektor, dessen Größe variiert. Sollte ich danach noch etwas tun? – cecelia
Sie haben also k Cluster richtig? Welche in Bag-of-words bezeichnen wir als visuelle Wörter. Jetzt müssen Sie die Merkmalsvektoren in Wortvektoren umwandeln (d. H. Die nächsten Nachbarn von Eingabedeskriptoren in Bezug auf Ihre Cluster berechnen). Hast du das gemacht? Die Ausgabe dieser Transformation sollte ein 1xN-Vektor pro Eingabebild sein (wobei N die Gesamtanzahl der Bilder ist). – NAmorim
Ooooh ok !!! Jetzt habe ich es verstanden!!! Ich war irgendwie verloren, wie man diesen 1xN-Vektor erhält, ich werde das jetzt tun, danke! :) – cecelia