Ultralytics Explorer API

Topluluk Notu ⚠️

ultralytics>=8.3.12 itibarıyla Ultralytics Explorer kaldırılmıştır. Explorer'ı kullanmak için pip install ultralytics==8.3.11 komutunu yükle. Benzer (ve genişletilmiş) veri seti keşif özellikleri Ultralytics Platform'da mevcuttur.

Giriş

Open In Colab Explorer API, veri kümelerini keşfetmen için bir Python API'sidir. SQL sorguları, vektör benzerlik araması ve anlamsal arama kullanarak veri kümeni filtrelemeyi ve aramayı destekler.



Watch: Ultralytics Explorer API Overview

Kurulum

Explorer, bazı işlevleri için harici kütüphanelere bağımlıdır. Bunlar, Explorer'ı kullandığında otomatik olarak yüklenir. Bu bağımlılıkları manuel olarak yüklemek için aşağıdaki komutu kullan:

pip install ultralytics[explorer]

Kullanım

from ultralytics import Explorer

# Create an Explorer object
explorer = Explorer(data="coco128.yaml", model="yolo26n.pt")

# Create embeddings for your dataset
explorer.create_embeddings_table()

# Search for similar images to a given image/images
df = explorer.get_similar(img="path/to/image.jpg")

# Or search for similar images to a given index/indices
df = explorer.get_similar(idx=0)
Not

Belirli bir veri kümesi ve model çifti için Gömü tablosu yalnızca bir kez oluşturulur ve yeniden kullanılır. Bunlar arka planda, disk üzerinde ölçeklenebilen LanceDB'yi kullanır; böylece bellek sorunu yaşamadan COCO gibi büyük veri kümeleri için gömüleri oluşturabilir ve yeniden kullanabilirsin.

In case you want to force update the embeddings table, you can pass force=True to create_embeddings_table method.

Gelişmiş analiz gerçekleştirmek için doğrudan LanceDB tablo nesnesine erişebilirsin. Gömü Tablosu ile Çalışma bölümünde bu konu hakkında daha fazla bilgi edinebilirsin.

1. Benzerlik Araması

Benzerlik araması, verilen bir görüntüye benzer görüntüleri bulmak için kullanılan bir tekniktir. Benzer görüntülerin benzer gömülere sahip olacağı fikrine dayanır. Gömü tablosu oluşturulduktan sonra, aşağıdaki yollardan herhangi biriyle anlamsal arama yapabilirsin:

  • Veri kümesindeki belirli bir dizin veya dizin listesi üzerinde: exp.get_similar(idx=[1,10], limit=10)
  • Veri kümesinde olmayan herhangi bir görüntü veya görüntü listesi üzerinde: exp.get_similar(img=["path/to/img1", "path/to/img2"], limit=10)

Birden fazla girdi durumunda, gömülerinin toplamı kullanılır.

Girdiyle en benzer limit sayıdaki veri noktasını ve bunların gömü uzayındaki mesafelerini içeren bir pandas DataFrame elde edersin. Bu veri kümesini daha fazla filtreleme yapmak için kullanabilirsin.

Anlamsal Arama
from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolo26n.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())

Benzer Görüntüleri Çizdirme

Ayrıca plot_similar metodunu kullanarak benzer görüntüleri çizebilirsin. Bu metot, get_similar ile aynı argümanları alır ve benzer görüntüleri bir ızgara üzerinde çizer.

Benzer Görüntüleri Çizdirme
from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolo26n.pt")
exp.create_embeddings_table()

plt = exp.plot_similar(img="https://ultralytics.com/images/bus.jpg", limit=10)
plt.show()

2. Yapay Zekaya Sor (Doğal Dil ile Sorgulama)

Bu özellik, SQL yazmana gerek kalmadan doğal dil kullanarak veri kümeni filtrelemeni sağlar. Yapay zeka destekli sorgu oluşturucu, yazdığın komutu bir sorguya dönüştürür ve eşleşen sonuçları döndürür. Örneğin, "bana tam olarak bir insan ve 2 köpek bulunan 100 görüntüyü göster. Başka nesneler de olabilir" diye sorabilirsin; sistem sorguyu oluşturacak ve sana sonuçları gösterecektir. Not: Bu özellik LLM'leri kullandığı için sonuçlar olasılıksaldır ve hatalı olabilir.

Yapay Zekaya Sor
from ultralytics.data.explorer import plot_query_result

from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolo26n.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 Sorgulama

sql_query metodunu kullanarak veri kümen üzerinde SQL sorguları çalıştırabilirsin. Bu metot girdi olarak bir SQL sorgusu alır ve sonuçları içeren bir pandas DataFrame döndürür.

SQL Sorgusu
from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolo26n.pt")
exp.create_embeddings_table()

df = exp.sql_query("WHERE labels LIKE '%person%' AND labels LIKE '%dog%'")
print(df.head())

SQL Sorgusu Sonuçlarını Çizdirme

Ayrıca plot_sql_query metodunu kullanarak bir SQL sorgusunun sonuçlarını çizebilirsin. Bu metot, sql_query ile aynı argümanları alır ve sonuçları bir ızgara üzerinde çizer.

SQL Sorgusu Sonuçlarını Çizdirme
from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolo26n.pt")
exp.create_embeddings_table()

# plot the SQL Query
exp.plot_sql_query("WHERE labels LIKE '%person%' AND labels LIKE '%dog%' LIMIT 10")

4. Gömü Tablosu ile Çalışma

Ayrıca doğrudan gömü tablosuyla da çalışabilirsin. Gömü tablosu oluşturulduktan sonra ona Explorer.table üzerinden erişebilirsin.

İpucu

Explorer, dahili olarak LanceDB tabloları üzerinde çalışır. Explorer.table nesnesini kullanarak bu tabloya doğrudan erişebilir, ham sorgular çalıştırabilir ve ön/son filtreler uygulayabilirsin.

from ultralytics import Explorer

exp = Explorer()
exp.create_embeddings_table()
table = exp.table

Tabloyla yapabileceklerine dair bazı örnekler şunlardır:

Ham Gömüleri Al

Örnek
from ultralytics import Explorer

exp = Explorer()
exp.create_embeddings_table()
table = exp.table

embeddings = table.to_pandas()["vector"]
print(embeddings)

Ön ve son filtrelerle Gelişmiş Sorgulama

Örnek
from ultralytics import Explorer

exp = Explorer(model="yolo26n.pt")
exp.create_embeddings_table()
table = exp.table

# Dummy embedding
embedding = [i for i in range(256)]
rs = table.search(embedding).metric("cosine").where("").limit(10)

Vektör Dizini Oluştur

Büyük veri kümeleri kullanırken, daha hızlı sorgulama için özel bir vektör dizini oluşturabilirsin. Bu işlem, LanceDB tablosu üzerinde create_index metodu kullanılarak yapılır.

table.create_index(num_partitions=..., num_sub_vectors=...)

5. Gömü Uygulamaları

Gömü tablosunu çeşitli keşifsel analizler yapmak için kullanabilirsin. İşte bazı örnekler:

Benzerlik Dizini

Explorer, bir similarity_index işlemine sahiptir:

  • Her veri noktasının veri kümesinin geri kalanıyla ne kadar benzer olduğunu tahmin etmeye çalışır.
  • It does that by counting how many image embeddings lie closer than max_dist to the current image in the generated embedding space, considering top_k similar images at a time.

Şu sütunları içeren bir pandas DataFrame döndürür:

  • idx: Veri kümesindeki görüntünün dizini
  • im_file: Görüntü dosyasının yolu
  • count: Veri kümesinde mevcut görüntüye max_dist mesafesinden daha yakın olan görüntü sayısı
  • sim_im_files: count kadar benzer görüntünün dosya yollarının listesi
İpucu

Belirli bir veri kümesi, model, max_dist ve top_k için oluşturulan benzerlik dizini yeniden kullanılacaktır. Veri kümen değiştiyse veya benzerlik dizinini yeniden oluşturman gerekiyorsa force=True parametresini geçebilirsin.

Benzerlik Dizini
from ultralytics import Explorer

exp = Explorer()
exp.create_embeddings_table()

sim_idx = exp.similarity_index()

Veri kümesini filtrelemek için özel koşullar oluşturmak adına benzerlik dizinini kullanabilirsin. Örneğin, aşağıdaki kodu kullanarak veri kümesindeki başka hiçbir görüntüye benzemeyen görüntüleri filtreleyebilirsin:

import numpy as np

sim_count = np.array(sim_idx["count"])
sim_idx["im_file"][sim_count > 30]

Gömü Uzayını Görselleştir

Ayrıca dilediğin çizim aracını kullanarak gömü uzayını görselleştirebilirsin. Örneğin, işte Matplotlib kullanan basit bir örnek:

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()

Explorer API'yi kullanarak kendi CV veri kümesi keşif raporlarını oluşturmaya başla. İlham almak için VOC Keşif Örneğine göz at.

Ultralytics Explorer Kullanılarak Oluşturulan Uygulamalar

Explorer API tabanlı GUI Demo'muzu dene

SSS

Ultralytics Explorer API ne için kullanılır?

Ultralytics Explorer API, kapsamlı veri kümesi keşfi için tasarlanmıştır. Kullanıcıların SQL sorguları, vektör benzerlik araması ve anlamsal arama kullanarak veri kümelerini filtrelemesine ve aramasına olanak tanır. Bu güçlü Python API, büyük veri kümelerini işleyebilir ve Ultralytics modellerini kullanan çeşitli bilgisayarlı görü görevleri için idealdir.

Ultralytics Explorer API'yi nasıl kurabilirim?

Ultralytics Explorer API'yi ve bağımlılıklarını kurmak için aşağıdaki komutu kullan:

pip install ultralytics[explorer]

Bu, Explorer API işlevselliği için gerekli tüm harici kütüphaneleri otomatik olarak kuracaktır. Ek kurulum detayları için dokümantasyonumuzun kurulum bölümüne bakabilirsin.

Ultralytics Explorer API'yi benzerlik araması için nasıl kullanabilirim?

Ultralytics Explorer API'yi, bir gömü tablosu oluşturup benzer görüntüler için sorgulama yaparak benzerlik aramaları gerçekleştirmek üzere kullanabilirsin. İşte temel bir örnek:

from ultralytics import Explorer

# Create an Explorer object
explorer = Explorer(data="coco128.yaml", model="yolo26n.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())

Daha fazla detay için lütfen Benzerlik Araması bölümünü ziyaret et.

LanceDB'yi Ultralytics Explorer ile kullanmanın avantajları nelerdir?

Ultralytics Explorer tarafından arka planda kullanılan LanceDB, ölçeklenebilir, disk tabanlı gömü tabloları sağlar. Bu, COCO gibi büyük veri kümeleri için bellek sorunu yaşamadan gömüler oluşturmanı ve bunları yeniden kullanmanı sağlar. Bu tablolar yalnızca bir kez oluşturulur ve yeniden kullanılabilir, bu da veri işleme verimliliğini artırır.

Ultralytics Explorer API'deki Yapay Zekaya Sor özelliği nasıl çalışır?

Yapay Zekaya Sor özelliği, kullanıcıların doğal dil sorguları kullanarak veri kümelerini filtrelemesine olanak tanır. Bu özellik, bu sorguları arka planda SQL sorgularına dönüştürmek için LLM'lerden yararlanır. İşte bir örnek:

from ultralytics import Explorer

# Create an Explorer object
explorer = Explorer(data="coco128.yaml", model="yolo26n.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())

Daha fazla örnek için Yapay Zekaya Sor bölümüne göz at.

Yorumlar