Ultralytics API Explorer
Community Note ⚠️
As of ultralytics>=8.3.10
, Ultralytics explorer support has been deprecated. But don't worry! You can now access similar and even enhanced functionality through Ultralytics HUB, our intuitive no-code platform designed to streamline your workflow. With Ultralytics HUB, you can continue exploring, visualizing, and managing your data effortlessly, all without writing a single line of code. Make sure to check it out and take advantage of its powerful features!🚀
Introduzione
L'API Explorer è un'API Python per esplorare i tuoi set di dati. Supporta il filtraggio e la ricerca del tuo set di dati utilizzando query SQL, la ricerca di similarità vettoriale e la ricerca semantica.
Guarda: Ultralytics Panoramica dell'API Explorer
Installazione
Explorer dipende da librerie esterne per alcune delle sue funzionalità. Queste vengono installate automaticamente al momento dell'utilizzo. Per installare manualmente queste dipendenze, usa il seguente comando:
Utilizzo
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)
Nota
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.
Nel caso in cui si voglia forzare l'aggiornamento della tabella degli embeddings, si può passare il comando force=True
a create_embeddings_table
metodo.
Puoi accedere direttamente all'oggetto tabella LanceDB per eseguire analisi avanzate. Per saperne di più, consulta la sezione Lavorare con la tabella Embeddings.
1. Ricerca per somiglianza
La ricerca per similarità è una tecnica per trovare immagini simili a un'immagine data. Si basa sull'idea che immagini simili avranno embeddings simili. Una volta costruita la tabella degli embeddings, puoi eseguire la ricerca semantica in uno dei seguenti modi:
- Su un dato indice o su un elenco di indici nel set di dati:
exp.get_similar(idx=[1,10], limit=10)
- Su qualsiasi immagine o elenco di immagini non presenti nel set di dati:
exp.get_similar(img=["path/to/img1", "path/to/img2"], limit=10)
In caso di più ingressi, viene utilizzato l'aggregato delle loro incorporazioni.
Si ottiene un dataframe pandas con l'opzione limit
numero di punti dati più simili all'input, insieme alla loro distanza nello spazio di incorporazione. È possibile utilizzare questo set di dati per eseguire ulteriori filtri
Ricerca semantica
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())
Tracciare immagini simili
Puoi anche tracciare le immagini simili utilizzando la funzione plot_similar
metodo. Questo metodo accetta gli stessi argomenti di get_similar
e traccia le immagini simili in una griglia.
Tracciare immagini simili
2. Ask AI (interrogazione in linguaggio naturale)
Questo ti permette di scrivere come vuoi filtrare il tuo set di dati usando il linguaggio naturale. Non è necessario essere esperti nella scrittura di query SQL. Il nostro generatore di query alimentato dall'intelligenza artificiale lo farà automaticamente. Ad esempio, puoi dire: "Mostrami 100 immagini con esattamente una persona e due cani. Possono esserci anche altri oggetti" e il generatore di query genererà internamente la query e ti mostrerà i risultati. Nota: questo funziona utilizzando gli LLM sotto il cofano, quindi i risultati sono probabilistici e a volte potrebbero essere sbagliati.
Chiedi all'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. Interrogazione SQL
Puoi eseguire delle query SQL sul tuo set di dati utilizzando la funzione sql_query
metodo. Questo metodo prende in input una query SQL e restituisce un dataframe pandas con i risultati.
Query SQL
Tracciare i risultati di una query SQL
Puoi anche tracciare i risultati di una query SQL utilizzando l'opzione plot_sql_query
metodo. Questo metodo accetta gli stessi argomenti di sql_query
e traccia i risultati in una griglia.
Tracciare i risultati di una query SQL
4. Lavorare con la tabella delle incorporazioni
Puoi anche lavorare direttamente con la tabella degli embeddings. Una volta creata la tabella degli embeddings, puoi accedervi utilizzando il metodo Explorer.table
Suggerimento
Explorer funziona su LanceDB internamente. Puoi accedere a questa tabella direttamente, utilizzando Explorer.table
ed eseguire query grezze, inserire pre e post-filtri, ecc.
Ecco alcuni esempi di ciò che puoi fare con la tabella:
Ottieni le incorporazioni grezze
Esempio
Interrogazione avanzata con pre e post-filtri
Esempio
Creare un indice vettoriale
Quando utilizzi grandi insiemi di dati, puoi anche creare un indice vettoriale dedicato per velocizzare le interrogazioni. Per farlo si utilizza l'opzione create_index
sulla tabella LanceDB.
Per maggiori dettagli sul tipo di indici vettoriali disponibili e sui parametri, clicca qui In futuro, aggiungeremo il supporto per la creazione di indici vettoriali direttamente dall'API di Explorer.
5. Applicazioni delle incorporazioni
Puoi utilizzare la tabella delle incorporazioni per eseguire una serie di analisi esplorative. Ecco alcuni esempi:
Indice di somiglianza
Explorer è dotato di un similarity_index
operazione:
- Cerca di stimare quanto ogni punto di dati sia simile al resto del set di dati.
- Lo fa contando quante incorporazioni di immagini si trovano più vicine rispetto a
max_dist
all'immagine corrente nello spazio di incorporamento generato, considerandotop_k
immagini simili alla volta.
Restituisce un dataframe pandas con le seguenti colonne:
idx
: Indice dell'immagine nel set di datiim_file
: Percorso del file immaginecount
: Numero di immagini nel set di dati che si avvicinano di più rispetto amax_dist
all'immagine correntesim_im_files
: Elenco dei percorsi dei filecount
immagini simili
Suggerimento
Per un dato set di dati, il modello, max_dist
& top_k
l'indice di similarità una volta generato sarà riutilizzato. Nel caso in cui il tuo set di dati sia cambiato o semplicemente tu abbia bisogno di rigenerare l'indice di somiglianza, puoi passare force=True
.
Indice di somiglianza
Puoi utilizzare l'indice di somiglianza per creare condizioni personalizzate per filtrare il set di dati. Ad esempio, puoi filtrare le immagini che non sono simili a nessun'altra immagine del set di dati utilizzando il seguente codice:
Visualizzare lo spazio di incorporazione
Puoi anche visualizzare lo spazio di incorporazione utilizzando uno strumento di plottaggio di tua scelta. Ecco un semplice esempio che utilizza 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()
Inizia a creare i tuoi report di esplorazione dei set di dati CV utilizzando l'API di Explorer. Per trarre ispirazione, dai un'occhiata al sito
Applicazioni costruite con Ultralytics Explorer
Prova la nostra demo dell'interfaccia grafica basata sull'API di Explorer
Prossimamente
- [ ] Unisci etichette specifiche dai set di dati. Esempio - Importa tutti
person
etichette di COCO ecar
etichette di Cityscapes - [Rimuovi le immagini che hanno un indice di somiglianza superiore alla soglia indicata.
- [ ] Persevera automaticamente i nuovi set di dati dopo aver unito/rimosso le voci
- [ ] Visualizzazioni avanzate del set di dati
DOMANDE FREQUENTI
A cosa serve l'API di Ultralytics Explorer?
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.
Come si installa l'API di Ultralytics Explorer?
Per installare l'API di Ultralytics Explorer e le sue dipendenze, usa il seguente comando:
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.
Come posso utilizzare l'API di Ultralytics Explorer per la ricerca di somiglianze?
Puoi utilizzare l'API di Ultralytics Explorer per eseguire ricerche di somiglianza creando una tabella di embeddings e interrogandola per trovare immagini simili. Ecco un esempio di base:
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.
Quali sono i vantaggi dell'utilizzo di LanceDB con Ultralytics Explorer?
LanceDB, utilizzato da Ultralytics Explorer, fornisce tabelle di incorporazioni scalabili e su disco. Questo garantisce la possibilità di creare e riutilizzare embeddings per grandi insiemi di dati come COCO senza esaurire la memoria. Queste tabelle vengono create una sola volta e possono essere riutilizzate, migliorando l'efficienza nella gestione dei dati.
Come funziona la funzione Ask AI nell'API di Ultralytics Explorer?
La funzione Ask AI consente agli utenti di filtrare i set di dati utilizzando query in linguaggio naturale. Questa funzione sfrutta gli LLM per convertire queste query in query SQL dietro le quinte. Ecco un esempio:
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())
Per ulteriori esempi, consulta la sezione Ask AI.