Ich lese viel über Wortschatzbäume, wenn es um schnelle Abfragen für ähnliche Bilder oder Texte in großen Datenbanken geht. Aber ich konnte keine gute (leicht verständliche) Beschreibung darüber finden, was ein solcher Vokabelbaum ist und wie man eines der Features erstellt.Was ist ein Vokabelbaum und wie man einen erstellt?
Antwort
Vokabelbaum ist eine kompakte Möglichkeit, Bilder abrufen zu können. Es gibt grundsätzlich drei Schritte, um diesen Algorithmus zu implementieren, und er hängt stark von anderen Computer-Vision-Techniken ab, z. SIFT-Funktionen.
Der erste Schritt besteht darin, einen kmeans-Baum mit Hilfe von sift-Deskriptoren zu erstellen. Die Blattknoten dieses Baumes enthalten einen "Sack" von Siebdeskriptoren. Im zweiten Schritt erstellen Sie eine Bilddatenbank mit dem im ersten Schritt erstellten Vokabular. Sie können diesen Prozess als Quantisierung eines Bildes in einen Vektorraum betrachten. Dann ist der dritte Schritt, das Bild gegen die Bilddatenbank abzufragen. Natürlich gibt es einige detaillierte Techniken wie invertierte Liste, etc.
Hier ist eine gute Umsetzung von Vokabelbaum - libvot. Es folgt grundsätzlich den drei oben beschriebenen Schritten. Es verwendet die C++ 11 Standard-Multithread-Bibliothek, um den Build-Prozess zu beschleunigen, so dass es ziemlich schnell läuft.
Hier ist die ursprüngliche Forschung paper darüber. Es hat große Auswirkungen auf Computer Vision in diesen Jahren.
Vocabulary Baum ist etwas, das durch Clustering visuelle Worte in Cluster gemacht wird. Dafür wird die Baumstruktur verwendet, die es zum Vokabular macht. Das folgende Diagramm wird die Dinge verdeutlichen.
Überprüfen Sie auch this:
- 1. Wie erstellt man ein Pipelineskript?
- 2. Wie erstellt man einen Systemwiederherstellungspunkt?
- 3. Wie erstellt man einen DataAccessLayer?
- 4. Wie erstellt man ein Dateifeld?
- 5. Was ist ein PHP-Framework und was ist ein guter?
- 6. Wie erstellt man ein Wissensdiagramm?
- 7. Wie erstellt man einen HTML-Parser?
- 8. Wie man einen Typedef für Funktionszeiger erstellt
- 9. Wie erstellt man einen Web-Datei-Browser?
- 10. Wie erstellt man einen WPF Shape Editor?
- 11. Wie erstellt man einen Baum in C++?
- 12. Wie erstellt man einen String mit Wagenrücklauf?
- 13. Wie erstellt man einen Zugfahrplan in SQLite3?
- 14. Wie erstellt man einen "Fortschrittsbalken" mit printf?
- 15. Wie erstellt man einen neuen (und leeren!) "Root" Zweig?
- 16. Was ist ein Verweis auf einen Zeiger?
- 17. Wie erstellt man einen Gradientenrahmen von UIView?
- 18. Wie erstellt man einen Dialog mit VbScript?
- 19. Wie erstellt man einen Vektor von Funktionen?
- 20. Wie erstellt man ein Konst-Element für einen unveränderlichen Typ?
- 21. Wie erstellt man einen robusten Fibonacci-Algorithmus?
- 22. Jenkins - wie man einen bestimmten Zweig erstellt
- 23. Wie erstellt man einen RTSP-Streaming-Server
- 24. Wie erstellt man ein ASP.NET-Verknüpfungsformular für einen SharePoint-Workflow?
- 25. Wie erstellt man einen Online-Javascript-Editor?
- 26. Wie erstellt man einen flächendeckenden radialen Farbverlauf?
- 27. Wie erstellt man einen Faltbandkopf mit Innenverlauf?
- 28. Wie erstellt man ein Diagramm von summaryRprof?
- 29. Wie erstellt man einen Fortschrittsbalken mit Kolben?
- 30. Wie erstellt und verwendet man einen benutzerdefinierten IFormatProvider für DateTime?