Ultralytics Explorer API
EinfĂĽhrung
Die Explorer API ist eine Python API zur Erkundung deiner Datensätze. Sie unterstützt das Filtern und Durchsuchen deiner Datensätze mithilfe von SQL-Abfragen, Vektorähnlichkeitssuche und semantischer Suche.
Pass auf: Ultralytics Explorer API Ăśbersicht
Installation
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, verwende 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
Embeddings table for a given dataset and model pair is only created once and reused. These use LanceDB under the hood, which scales on-disk, so you can create and reuse embeddings for large datasets like COCO without running out of memory.
Wenn du die Aktualisierung der Einbettungstabelle erzwingen willst, kannst du force=True
zu create_embeddings_table
Methode.
Du kannst direkt auf das Tabellenobjekt LanceDB zugreifen, um erweiterte Analysen durchzuführen. Mehr dazu erfährst du im Abschnitt Arbeiten mit Einbettungstabellen
1. Ă„hnlichkeitssuche
Die Ähnlichkeitssuche ist eine Technik, um ähnliche Bilder wie ein bestimmtes Bild zu finden. Sie basiert auf der Idee, dass ähnliche Bilder auch ähnliche Einbettungen haben. Sobald die Einbettungstabelle erstellt ist, kannst du 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)
- Auf 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)
Wenn es mehrere Eingaben gibt, wird die Summe ihrer Einbettungen verwendet.
Du erhältst einen Pandas-Datenrahmen mit dem limit
Anzahl der Datenpunkte, die der Eingabe am ähnlichsten sind, zusammen mit ihrem Abstand im Einbettungsraum. Du kannst 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())
Ă„hnliche Bilder einzeichnen
Du kannst die ähnlichen Bilder auch mit der plot_similar
Methode. Diese Methode nimmt die gleichen Argumente wie get_similar
und stellt die ähnlichen Bilder in einem Raster dar.
Ă„hnliche Bilder einzeichnen
2. Ask AI (Natural Language Querying)
So kannst du in natürlicher Sprache schreiben, wie du deinen Datensatz filtern willst. Du musst dich nicht mit dem Schreiben von SQL-Abfragen auskennen. Unser KI-gestützter Abfragegenerator erledigt das automatisch unter der Haube. Du kannst zum Beispiel sagen: "Zeige mir 100 Bilder mit genau einer Person und 2 Hunden. Es können auch andere Objekte dabei sein", und schon wird die Abfrage intern erstellt und dir die Ergebnisse angezeigt. Hinweis: Dies funktioniert mit LLMs unter der Haube, daher sind die Ergebnisse probabilistisch und können manchmal falsch sein.
KI fragen
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-Abfrage
Du kannst SQL-Abfragen auf deinem Datensatz ausfĂĽhren, indem du die sql_query
Methode. Diese Methode nimmt eine SQL-Abfrage als Eingabe und gibt einen Pandas-Datenrahmen mit den Ergebnissen zurĂĽck.
SQL-Abfrage
Plotten von SQL-Abfrageergebnissen
Du kannst 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.
Plotten von SQL-Abfrageergebnissen
4. Arbeiten mit Einbettungstabelle
Du kannst auch direkt mit der Einbettungstabelle arbeiten. Sobald die Einbettungstabelle erstellt ist, kannst du sie mit der Funktion Explorer.table
Tipp
Der Explorer funktioniert auf LanceDB Tabellen intern. Du kannst direkt auf diese Tabelle zugreifen, indem du Explorer.table
Objekt und fĂĽhre Rohabfragen aus, schiebe Vor- und Nachfilter nach unten usw.
Hier sind einige Beispiele dafĂĽr, was du mit der Tabelle machen kannst:
Rohe Einbettungen erhalten
Beispiel
Erweiterte Abfragen mit Vor- und Nachfiltern
Beispiel
Vektorindex erstellen
Wenn du große Datensätze verwendest, kannst du auch einen eigenen Vektorindex erstellen, um die Abfrage zu beschleunigen. Dies geschieht mit dem create_index
Methode fĂĽr die Tabelle LanceDB.
Weitere Details zu den verfĂĽgbaren Vektorindizes und Parametern findest du hier. In Zukunft werden wir die Erstellung von Vektorindizes direkt ĂĽber die Explorer API unterstĂĽtzen.
5. Einbettungen Anwendungen
Du kannst die Tabelle mit den Einbettungen fĂĽr eine Vielzahl von explorativen Analysen nutzen. Hier sind einige Beispiele:
Ă„hnlichkeitsindex
Explorer kommt mit einer similarity_index
Betrieb:
- Sie versucht abzuschätzen, wie ähnlich jeder Datenpunkt dem Rest des Datensatzes ist.
- Dabei 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 das Modell, max_dist
& top_k
wird der einmal erstellte Ähnlichkeitsindex wiederverwendet. Falls sich dein Datensatz geändert hat oder du den Ähnlichkeitsindex einfach neu erstellen musst, kannst du die force=True
.
Ă„hnlichkeitsindex
Du kannst den Ähnlichkeitsindex verwenden, um benutzerdefinierte Bedingungen zum Herausfiltern des Datensatzes zu erstellen. Mit dem folgenden Code kannst du zum Beispiel Bilder herausfiltern, die keinem anderen Bild im Datensatz ähnlich sind:
Einbettungsraum visualisieren
Du kannst den Einbettungsraum auch mit einem Diagrammwerkzeug deiner Wahl visualisieren. Hier ist 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()
Erstelle mit der Explorer-API deine eigenen Berichte zur Erkundung von Lebenslaufdaten. Als Inspiration kannst du dir die
Mit Ultralytics Explorer erstellte Apps
Teste unsere GUI-Demo auf Basis der Explorer API
Demnächst
- [ ] Führe bestimmte Beschriftungen aus Datensätzen zusammen. Beispiel - Alle importieren
person
Etiketten von COCO undcar
Etiketten von Cityscapes - [ ] Bilder entfernen, die einen höheren Ähnlichkeitsindex als den angegebenen Schwellenwert haben
- [ ] Neue Datensätze nach dem Zusammenführen/Entfernen von Einträgen automatisch beibehalten
- [Erweiterte Datensatzvisualisierungen
FAQ
WofĂĽr wird die Ultralytics Explorer API verwendet?
The Ultralytics Explorer API is designed for comprehensive dataset exploration. It allows users to filter and search datasets using SQL queries, vector similarity search, and semantic search. This powerful Python API can handle large datasets, making it ideal for various computer vision tasks using Ultralytics models.
Wie kann ich die Ultralytics Explorer API installieren?
Um die Ultralytics Explorer API zusammen mit ihren Abhängigkeiten zu installieren, verwende den folgenden Befehl:
This will automatically install all necessary external libraries for the Explorer API functionality. For additional setup details, refer to the installation section of our documentation.
Wie kann ich die Ultralytics Explorer API fĂĽr die Ă„hnlichkeitssuche nutzen?
Mit der Ultralytics Explorer API kannst du Ähnlichkeitssuchen durchführen, indem du eine Einbettungstabelle erstellst und sie nach ähnlichen Bildern abfragst. 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())
For more details, please visit the Similarity Search section.
Was sind die Vorteile der Verwendung von LanceDB mit Ultralytics Explorer?
LanceDB, die unter der Haube von Ultralytics Explorer verwendet wird, bietet skalierbare, auf der Festplatte gespeicherte Einbettungstabellen. Dadurch wird sichergestellt, dass du Einbettungen für große Datensätze wie COCO erstellen und wiederverwenden kannst, ohne dass dir 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 Funktion Ask AI in der Ultralytics Explorer API?
Die Funktion Ask AI ermöglicht es Nutzern, Datensätze mithilfe von Abfragen in natürlicher Sprache zu 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 findest du in der Rubrik Ask AI.