Ultralytics Explorer-API
Gemeinschaftsnote ⚠️
Ab dem ultralytics>=8.3.10
Die Unterstützung von Ultralytics explorer wurde abgeschafft. Aber keine Sorge! Sie können jetzt auf ähnliche und sogar erweiterte Funktionen über Ultralytics HUBunserer intuitiven No-Code-Plattform, die Ihren Arbeitsablauf optimiert. Mit Ultralytics HUB können Sie Ihre Daten mühelos erforschen, visualisieren und verwalten, ohne eine einzige Zeile Code zu schreiben. Probieren Sie es aus und nutzen Sie die Vorteile der leistungsstarken Funktionen!🚀
Einführung
Die Explorer API ist eine Python API für die Erkundung Ihrer Datensätze. Sie unterstützt das Filtern und Durchsuchen Ihres Datensatzes mithilfe von SQL-Abfragen, Vektorähnlichkeitssuche und semantischer Suche.
Beobachten: Ultralytics Explorer-API-Übersicht
Einrichtung
Der Explorer ist für einige seiner Funktionen auf externe Bibliotheken angewiesen. Diese werden bei der Verwendung automatisch installiert. Um diese Abhängigkeiten manuell zu installieren, verwenden Sie den folgenden Befehl:
Verwendung
from ultralytics import Explorer
# Create an Explorer object
explorer = Explorer(data="coco128.yaml", model="yolo11n.pt")
# Create embeddings for your dataset
explorer.create_embeddings_table()
# Search for similar images to a given image/images
dataframe = explorer.get_similar(img="path/to/image.jpg")
# Or search for similar images to a given index/indices
dataframe = explorer.get_similar(idx=0)
Hinweis
Die Tabelle mit den Einbettungen für einen bestimmten Datensatz und ein bestimmtes Modellpaar wird nur einmal erstellt und wiederverwendet. Diese verwenden unter der Haube LanceDB, die auf der Festplatte skaliert, sodass Sie Einbettungen für große Datensätze wie COCO erstellen und wiederverwenden können, ohne dass der Speicherplatz knapp wird.
Falls Sie die Aktualisierung der Einbettungstabelle erzwingen wollen, können Sie force=True
zu create_embeddings_table
Methode.
Sie können direkt auf das LanceDB-Tabellenobjekt zugreifen, um erweiterte Analysen durchzuführen. Erfahren Sie mehr darüber im Abschnitt Arbeiten mit Einbettungstabellen
1. Ähnlichkeitssuche
Die Ähnlichkeitssuche ist eine Technik zum Auffinden ähnlicher Bilder zu einem bestimmten Bild. Sie basiert auf der Idee, dass ähnliche Bilder auch ähnliche Einbettungen haben. Sobald die Einbettungstabelle erstellt ist, können Sie die semantische Suche auf eine der folgenden Arten durchführen:
- Für einen bestimmten Index oder eine Liste von Indizes im Datensatz:
exp.get_similar(idx=[1,10], limit=10)
- Bei jedem Bild oder jeder Liste von Bildern, die nicht im Datensatz enthalten sind:
exp.get_similar(img=["path/to/img1", "path/to/img2"], limit=10)
Bei mehreren Eingaben wird die Summe ihrer Einbettungen verwendet.
Sie erhalten einen Pandas-Datenrahmen mit dem limit
Anzahl der Datenpunkte, die der Eingabe am ähnlichsten sind, zusammen mit ihrem Abstand im Einbettungsraum. Sie können diesen Datensatz verwenden, um weitere Filterungen vorzunehmen
Semantische Suche
from ultralytics import Explorer
# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolo11n.pt")
exp.create_embeddings_table()
similar = exp.get_similar(img="https://ultralytics.com/images/bus.jpg", limit=10)
print(similar.head())
# Search using multiple indices
similar = exp.get_similar(
img=["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/bus.jpg"],
limit=10,
)
print(similar.head())
from ultralytics import Explorer
# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolo11n.pt")
exp.create_embeddings_table()
similar = exp.get_similar(idx=1, limit=10)
print(similar.head())
# Search using multiple indices
similar = exp.get_similar(idx=[1, 10], limit=10)
print(similar.head())
Plotten ähnlicher Bilder
Sie können die ähnlichen Bilder auch mit der Funktion plot_similar
Methode. Diese Methode nimmt die gleichen Argumente wie get_similar
und stellt die ähnlichen Bilder in einem Raster dar.
Plotten ähnlicher Bilder
2. Ask AI (Abfrage in natürlicher Sprache)
So können Sie in natürlicher Sprache schreiben, wie Sie Ihren Datensatz filtern möchten. Sie müssen sich nicht mit dem Schreiben von SQL-Abfragen auskennen. Unser KI-gestützter Abfragegenerator erledigt das automatisch unter der Haube. Sie können zum Beispiel sagen: "Zeige mir 100 Bilder mit genau einer Person und 2 Hunden. Es kann auch andere Objekte geben", und es wird intern die Abfrage generieren und Ihnen die Ergebnisse zeigen. Hinweis: Dies funktioniert mit LLMs unter der Haube, so dass die Ergebnisse probabilistisch sind und manchmal falsch sein können.
Fragen Sie AI
from ultralytics import Explorer
from ultralytics.data.explorer import plot_query_result
# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolo11n.pt")
exp.create_embeddings_table()
df = exp.ask_ai("show me 100 images with exactly one person and 2 dogs. There can be other objects too")
print(df.head())
# plot the results
plt = plot_query_result(df)
plt.show()
3. SQL-Abfragen
Sie können SQL-Abfragen zu Ihrem Datensatz mit der Funktion sql_query
Methode. Diese Methode nimmt eine SQL-Abfrage als Eingabe und gibt einen Pandas-Datenrahmen mit den Ergebnissen zurück.
SQL-Abfrage
SQL-Abfrageergebnisse grafisch darstellen
Sie können die Ergebnisse einer SQL-Abfrage auch mit der Funktion plot_sql_query
Methode. Diese Methode nimmt die gleichen Argumente wie sql_query
und stellt die Ergebnisse in einem Raster dar.
SQL-Abfrageergebnisse grafisch darstellen
4. Arbeiten mit Einbettungstabelle
Sie können auch direkt mit der Einbettungstabelle arbeiten. Sobald die Einbettungstabelle erstellt ist, können Sie darauf mit der Funktion Explorer.table
Tipp
Explorer arbeitet mit LanceDB Tabellen intern. Sie können direkt auf diese Tabelle zugreifen, indem Sie Explorer.table
Objekt und führen Sie Rohabfragen aus, schieben Sie Vor- und Nachfilter ein usw.
Hier sind einige Beispiele dafür, was Sie mit der Tabelle machen können:
Rohe Einbettungen erhalten
Beispiel
Erweiterte Abfragen mit Vor- und Nachfiltern
Beispiel
Vektorindex erstellen
Bei großen Datensätzen können Sie zur schnelleren Abfrage auch einen eigenen Vektorindex erstellen. Dies geschieht mit Hilfe der create_index
Methode für die Tabelle LanceDB.
Weitere Details zu den verfügbaren Vektorindizes und Parametern finden Sie hier. In Zukunft werden wir Unterstützung für die Erstellung von Vektorindizes direkt aus der Explorer API hinzufügen.
5. Einbettungen Anwendungen
Mit Hilfe der Einbettungstabelle können Sie eine Vielzahl von explorativen Analysen durchführen. Hier sind einige Beispiele:
Ähnlichkeitsindex
Explorer wird mit einem similarity_index
Betrieb:
- Es wird versucht abzuschätzen, wie ähnlich jeder Datenpunkt dem Rest des Datensatzes ist.
- Dazu wird gezählt, wie viele Bildeinbettungen näher liegen als
max_dist
zum aktuellen Bild im generierten Einbettungsraum unter Berücksichtigungtop_k
ähnliche Bilder zu einer Zeit.
Sie gibt einen Pandas-Datenrahmen mit den folgenden Spalten zurück:
idx
: Index des Bildes im Datensatzim_file
: Pfad zur Bilddateicount
: Anzahl der Bilder im Datensatz, die näher sind alsmax_dist
zum aktuellen Bildsim_im_files
: Liste der Pfade zu dencount
ähnliche Bilder
Tipp
Für einen bestimmten Datensatz, Modell, max_dist
& top_k
wird der einmal erstellte Ähnlichkeitsindex wiederverwendet. Falls sich Ihr Datensatz geändert hat oder Sie den Ähnlichkeitsindex einfach neu erstellen müssen, können Sie force=True
.
Ähnlichkeitsindex
Sie können den Ähnlichkeitsindex verwenden, um benutzerdefinierte Bedingungen zum Herausfiltern des Datensatzes zu erstellen. Mit dem folgenden Code können Sie zum Beispiel Bilder herausfiltern, die keinem anderen Bild im Datensatz ähnlich sind:
Einbettungsraum visualisieren
Sie können den Einbettungsraum auch mit einem Diagrammwerkzeug Ihrer Wahl visualisieren. Hier zum Beispiel ein einfaches Beispiel mit matplotlib:
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
# Reduce dimensions using PCA to 3 components for visualization in 3D
pca = PCA(n_components=3)
reduced_data = pca.fit_transform(embeddings)
# Create a 3D scatter plot using Matplotlib Axes3D
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection="3d")
# Scatter plot
ax.scatter(reduced_data[:, 0], reduced_data[:, 1], reduced_data[:, 2], alpha=0.5)
ax.set_title("3D Scatter Plot of Reduced 256-Dimensional Data (PCA)")
ax.set_xlabel("Component 1")
ax.set_ylabel("Component 2")
ax.set_zlabel("Component 3")
plt.show()
Beginnen Sie mit der Erstellung Ihrer eigenen Berichte zur Erkundung von Lebenslaufdatensätzen mithilfe der Explorer-API. Inspiration finden Sie in der
Mit Ultralytics Explorer erstellte Anwendungen
Testen Sie unsere GUI-Demo auf Basis der Explorer API
Demnächst verfügbar
- [ ] Bestimmte Beschriftungen aus Datensätzen zusammenführen. Beispiel - Alle importieren
person
Etiketten von COCO undcar
Etiketten von Cityscapes - [ ] Bilder mit einem höheren Ähnlichkeitsindex als dem angegebenen Schwellenwert entfernen
- [ ] Neue Datensätze nach dem Zusammenführen/Entfernen von Einträgen automatisch beibehalten
- Erweiterte Datensatz-Visualisierungen [ ]
FAQ
Wofür wird die Ultralytics Explorer API verwendet?
Die Ultralytics Explorer API ist für die umfassende Erforschung von Datensätzen konzipiert. Sie ermöglicht Benutzern das Filtern und Durchsuchen von Datensätzen mithilfe von SQL-Abfragen, Vektorähnlichkeitssuche und semantischer Suche. Diese leistungsstarke Python API kann große Datensätze verarbeiten und ist daher ideal für verschiedene Computer-Vision-Aufgaben mit Ultralytics Modellen.
Wie installiere ich die Ultralytics Explorer API?
Um die Ultralytics Explorer API zusammen mit ihren Abhängigkeiten zu installieren, verwenden Sie den folgenden Befehl:
Dadurch werden automatisch alle erforderlichen externen Bibliotheken für die Explorer-API-Funktionalität installiert. Weitere Einzelheiten zur Einrichtung finden Sie im Abschnitt zur Installation in unserer Dokumentation.
Wie kann ich die Ultralytics Explorer API für die Ähnlichkeitssuche verwenden?
Sie können die Ultralytics Explorer API verwenden, um Ähnlichkeitssuchen durchzuführen, indem Sie eine Einbettungstabelle erstellen und diese nach ähnlichen Bildern abfragen. Hier ist ein einfaches Beispiel:
from ultralytics import Explorer
# Create an Explorer object
explorer = Explorer(data="coco128.yaml", model="yolo11n.pt")
explorer.create_embeddings_table()
# Search for similar images to a given image
similar_images_df = explorer.get_similar(img="path/to/image.jpg")
print(similar_images_df.head())
Weitere Einzelheiten finden Sie im Abschnitt Ähnlichkeitssuche.
Was sind die Vorteile der Verwendung von LanceDB mit Ultralytics Explorer?
LanceDB, das unter der Haube von Ultralytics Explorer verwendet wird, bietet skalierbare, auf der Festplatte gespeicherte Einbettungstabellen. Dadurch wird sichergestellt, dass Sie Einbettungen für große Datensätze wie COCO erstellen und wiederverwenden können, ohne dass Ihnen der Speicherplatz ausgeht. Diese Tabellen werden nur einmal erstellt und können wiederverwendet werden, was die Effizienz bei der Datenverarbeitung erhöht.
Wie funktioniert die Ask AI-Funktion in der Ultralytics Explorer API?
Mit der Funktion "Ask AI" können Nutzer Datensätze mithilfe von Abfragen in natürlicher Sprache filtern. Diese Funktion nutzt LLMs, um diese Abfragen hinter den Kulissen in SQL-Abfragen umzuwandeln. Hier ist ein Beispiel:
from ultralytics import Explorer
# Create an Explorer object
explorer = Explorer(data="coco128.yaml", model="yolo11n.pt")
explorer.create_embeddings_table()
# Query with natural language
query_result = explorer.ask_ai("show me 100 images with exactly one person and 2 dogs. There can be other objects too")
print(query_result.head())
Weitere Beispiele finden Sie in der Rubrik Ask AI.