Ultralytics Explorer API
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ş
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)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.
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.
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.
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.
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.
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.
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.tableTabloyla yapabileceklerine dair bazı örnekler şunlardır:
Ham Gömüleri Al
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
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_distto the current image in the generated embedding space, consideringtop_ksimilar 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 diziniim_file: Görüntü dosyasının yolucount: Veri kümesinde mevcut görüntüyemax_distmesafesinden daha yakın olan görüntü sayısısim_im_files:countkadar benzer görüntünün dosya yollarının listesi
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.
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.