1

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.

Antwort

0

Haben Sie dies getan:

Doch bevor Sie Ihr neuronales Netz trainieren, wie Sie vermutet, Sie jedes Bild darstellen müssen Sie mit dieser Merkmalsvektor trainieren möchten.

Bevor Sie Ihr neurales Netzwerk speisen? Ich habe keine Erfahrung in der Verwendung von neuronalen Netzen, aber nachdem Sie this und Ihre Frage gelesen haben, scheint es, dass Sie versuchen, die Beutel-von-Wörter-Cluster Ihrem neuronalen Netzwerk zuzuführen, was falsch ist.

+0

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

+0

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

+0

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

Verwandte Themen