Ich versuche, das Bag of Features-Modell zu implementieren.Bag of Feature: Wie erstellt man das Abfrage-Histogramm?
Gegeben ein Deskriptor-Matrixobjekt (das ein Bild darstellt), das zu dem ursprünglichen Datensatz gehört, berechnen Sie sein Histogramm einfach, da wir bereits wissen, zu welchem Cluster jeder Deskriptorvektor von k-means gehört.
Aber was ist, wenn wir das Histogramm einer Abfrage-Matrix berechnen wollen? Die einzige Lösung, die mir in den Sinn kommt, ist die Berechnung der Entfernung zwischen jedem Vektordeskriptor zu jedem der k
Clusterschwerpunkte.
Dies kann ineffizient sein: unter der Annahme, k=100
(also 100 Zentroide), dann haben wir ein Anfrage Bild durch 1000 SIFT-Deskriptoren, so eine Matrix 1000x100
dargestellt.
Was wir jetzt tun müssen, ist 1000 * 100
eucledian Entfernungen in 128
Dimensionen zu berechnen. Das scheint wirklich ineffizient zu sein.
Wie löst man dieses Problem?
HINWEIS: können Sie mir einige Implementierungen vorschlagen, in denen dieser Punkt erklärt wird?
HINWEIS: Ich weiß, LSH ist eine Lösung (da wir High-Dim-Vektoren verwenden), aber ich glaube nicht, dass die tatsächlichen Implementierungen es verwenden.
UPDATE:
Ich war mit einem Kollegen von mir sprechen: einen hierarchischen Cluster-Ansatz anstelle von klassischen k-Mitteln sollten so viel den Prozess beschleunigen! Ist es richtig zu sagen, dass, wenn wir k
Zentroide haben, mit einem hierarchischen Cluster müssen wir nur log(k)
Vergleiche zu tun, um den nächsten Schwerpunkt statt k
Vergleiche zu finden?
Sie haben Recht, für jede der '1000' Funktionen müssen Sie ihre entsprechenden Zentren finden, um das Histogramm zu erstellen. Das sind 1000 Nearest-Neighbor-Abfragen pro Abfragematrix. Umgang mit NN sind kd-Bäume, zufällige Wälder, Produktquantisierung und LSH um nur einige zu nennen. Jeder hat seine Stärken und Schwächen. – BeyelerStudios
Danke für Ihre Kommentare. Ich denke, dass Sie Recht haben, und ich denke, dass der Hauptpunkt der von Ihnen vorgeschlagenen Lösungen die Vektordimensionalität und -geschwindigkeit ist. Zum Beispiel ist LSH für hohe Dimensionalität in einer schnellen (und ungefähren) Weise. Sind Sie einverstanden? Kennen Sie außerdem einige BoF-Implementierungen in großem Raum? – justHelloWorld
Kd-Bäume und zufällige Wälder sind beide exakte Lösungen, während Produktquantisierung sein kann und LSH ist eine Annäherung. Diese Methoden werden normalerweise kombiniert (z.B. Produktquantisierung und kd-Baum), um Probleme wie Ihre zu lösen. Für Implementierungen folgen Sie den Recherchen, ich müsste googeln, genau wie Sie. – BeyelerStudios