Link to this sectionUltralytics Explorer API#
ultralytics>=8.3.12 sürümü itibarıyla Ultralytics Explorer kaldırılmıştır. Explorer'ı kullanmak için pip install ultralytics==8.3.11 komutunu kullanarak yükleme yap. Benzer (ve genişletilmiş) veri seti keşif özellikleri Ultralytics Platform üzerinde mevcuttur.
Link to this sectionGiriş#
Explorer API, veri setlerini keşfetmen için tasarlanmış bir Python API'sidir. SQL sorguları, vektör benzerliği araması ve anlamsal arama kullanarak veri setini filtrelemeni ve arama yapmanı destekler.
Watch: Ultralytics Explorer API Overview
Link to this sectionKurulum#
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 istersen şu komutu kullanabilirsin:
pip install ultralytics[explorer]Link to this sectionKullanım#
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
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)Belirli bir veri seti ve model çifti için Embeddings tablosu yalnızca bir kez oluşturulur ve yeniden kullanılır. Bunlar arka planda disk üzerinde ölçeklenen LanceDB kullanır, bu sayede COCO gibi büyük veri setleri için belleği tüketmeden gömmeler (embeddings) 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 yapmak için doğrudan LanceDB tablo nesnesine erişebilirsin. Bunun hakkında daha fazla bilgiyi Gömmeler Tablosu ile Çalışma bölümünde bulabilirsin.
Link to this section1. Benzerlik Araması#
Benzerlik araması, verilen bir görsele benzer görselleri bulmak için kullanılan bir tekniktir. Benzer görsellerin benzer gömmelere sahip olacağı fikrine dayanır. Gömmeler tablosu oluşturulduktan sonra, anlamsal aramayı aşağıdaki yöntemlerden herhangi biriyle çalıştırabilirsin:
- Veri setindeki belirli bir dizin veya dizin listesi üzerinde:
exp.get_similar(idx=[1,10], limit=10) - Veri setinde olmayan herhangi bir görsel veya görsel listesi üzerinde:
exp.get_similar(img=["path/to/img1", "path/to/img2"], limit=10)
Birden fazla girdi durumunda, gömmelerinin toplamı kullanılır.
Girdiyle en çok benzerlik gösteren limit sayıda veri noktasını içeren bir pandas DataFrame elde edersin; bu sonuçlar gömme uzayındaki mesafeleriyle birlikte sunulur. Bu veri setini daha fazla filtreleme yapmak için kullanabilirsin.
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())Link to this sectionBenzer Görselleri Çizdirme#
Ayrıca plot_similar yöntemini kullanarak benzer görselleri çizebilirsin. Bu yöntem get_similar ile aynı argümanları alır ve benzer görselleri bir ızgara üzerinde çizer.
from ultralytics import Explorer
# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolo11n.pt")
exp.create_embeddings_table()
plt = exp.plot_similar(img="https://ultralytics.com/images/bus.jpg", limit=10)
plt.show()Link to this section2. Yapay Zekaya Sor (Doğal Dil Sorgulama)#
Bu özellik, SQL yazmana gerek kalmadan veri setini doğal dil kullanarak filtrelemeni sağlar. Yapay zeka destekli sorgu oluşturucu, komutunu bir sorguya dönüştürür ve eşleşen sonuçları döndürür. Örneğin: "bana tam olarak bir kişi ve 2 köpeğin olduğu 100 görseli göster. Başka nesneler de olabilir" diye sorabilirsin; sistem sorguyu oluşturacak ve sana bu sonuçları gösterecektir. Not: Bu özellik LLM 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="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()Link to this section3. SQL Sorgulama#
sql_query yöntemini kullanarak veri setin üzerinde SQL sorguları çalıştırabilirsin. Bu yöntem 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="yolo11n.pt")
exp.create_embeddings_table()
df = exp.sql_query("WHERE labels LIKE '%person%' AND labels LIKE '%dog%'")
print(df.head())Link to this sectionSQL Sorgu Sonuçlarını Çizdirme#
Ayrıca plot_sql_query yöntemini kullanarak bir SQL sorgusunun sonuçlarını çizebilirsin. Bu yöntem 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="yolo11n.pt")
exp.create_embeddings_table()
# plot the SQL Query
exp.plot_sql_query("WHERE labels LIKE '%person%' AND labels LIKE '%dog%' LIMIT 10")Link to this section4. Gömmeler Tablosu ile Çalışma#
Gömmeler tablosu ile doğrudan da çalışabilirsin. Tablo oluşturulduktan sonra ona Explorer.table aracılığıyla erişebilirsin.
Explorer dahili olarak LanceDB tabloları üzerinde çalışır. Explorer.table nesnesini kullanarak bu tabloya doğrudan erişebilir ve ham sorgular çalıştırabilir, ön ve son filtreler uygulayabilirsin.
from ultralytics import Explorer
exp = Explorer()
exp.create_embeddings_table()
table = exp.tableİşte tabloyla yapabileceklerine dair bazı örnekler:
Link to this sectionHam Gömmeleri Al#
from ultralytics import Explorer
exp = Explorer()
exp.create_embeddings_table()
table = exp.table
embeddings = table.to_pandas()["vector"]
print(embeddings)Link to this sectionÖn ve son filtrelerle Gelişmiş Sorgulama#
from ultralytics import Explorer
exp = Explorer(model="yolo11n.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)Link to this sectionVektör İndeksi Oluştur#
Büyük veri setleri kullanırken, daha hızlı sorgulama için özel bir vektör indeksi oluşturabilirsin. Bu işlem LanceDB tablosu üzerinde create_index yöntemi kullanılarak yapılır.
table.create_index(num_partitions=..., num_sub_vectors=...)Link to this section5. Gömmeler Uygulamaları#
Gömmeler tablosunu çeşitli keşifsel analizler yapmak için kullanabilirsin. İşte bazı örnekler:
Link to this sectionBenzerlik İndeksi#
Explorer bir similarity_index işlemine sahiptir:
- Her veri noktasının veri setinin 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.
Aşağıdaki sütunları içeren bir pandas DataFrame döndürür:
idx: Veri setindeki görselin indeksiim_file: Görsel dosyasının yolucount: Veri setinde mevcut görseldenmax_distdeğerinden daha yakın olan görsel sayısısim_im_files:countkadar benzer görselin yollarının listesi
Belirli bir veri seti, model, max_dist ve top_k için benzerlik indeksi bir kez oluşturulduktan sonra yeniden kullanılacaktır. Veri setin değiştiyse veya sadece benzerlik indeksini yeniden oluşturman gerekiyorsa force=True parametresini kullanabilirsin.
from ultralytics import Explorer
exp = Explorer()
exp.create_embeddings_table()
sim_idx = exp.similarity_index()Benzerlik indeksini, veri setini filtrelemek için özel koşullar oluşturmak amacıyla kullanabilirsin. Örneğin, aşağıdaki kodu kullanarak veri setindeki başka hiçbir görsele benzemeyen görselleri filtreleyebilirsin:
import numpy as np
sim_count = np.array(sim_idx["count"])
sim_idx["im_file"][sim_count > 30]Link to this sectionGömme Uzayını Görselleştir#
Ayrıca tercih ettiğin çizim aracını kullanarak gömme uzayını görselleştirebilirsin. Örneğin, Matplotlib kullanarak basit bir örnek aşağıdadır:
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 bilgisayarlı görü (CV) veri seti keşif raporlarını oluşturmaya başla. İlham almak için VOC Keşif Örneğine göz at.
Link to this sectionUltralytics Explorer Kullanılarak Oluşturulan Uygulamalar#
Explorer API tabanlı GUI Demo uygulamamızı dene.
Link to this sectionSSS#
Link to this sectionUltralytics Explorer API ne için kullanılır?#
Ultralytics Explorer API, kapsamlı veri seti keşfi için tasarlanmıştır. Kullanıcıların SQL sorguları, vektör benzerliği araması ve anlamsal arama kullanarak veri setlerini filtrelemelerine ve aramalarına olanak tanır. Bu güçlü Python API, büyük veri setlerini işleyebilir, bu da onu Ultralytics modellerini kullanarak yapılan çeşitli bilgisayarlı görü görevleri için ideal kılar.
Link to this sectionUltralytics Explorer API'yi nasıl kurarım?#
Ultralytics Explorer API'yi ve bağımlılıklarını kurmak için şu komutu kullan:
pip install ultralytics[explorer]Bu, Explorer API işlevselliği için gerekli tüm harici kütüphaneleri otomatik olarak yükleyecektir. Ek kurulum ayrıntıları için dokümantasyonumuzdaki kurulum bölümüne bak.
Link to this sectionUltralytics Explorer API'yi benzerlik araması için nasıl kullanabilirim?#
Bir gömmeler tablosu oluşturup benzer görseller için sorgulayarak benzerlik aramaları yapmak üzere Ultralytics Explorer API'yi kullanabilirsin. İşte temel bir örnek:
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())Daha fazla ayrıntı için lütfen Benzerlik Araması bölümünü ziyaret et.
Link to this sectionLanceDB kullanmanın Ultralytics Explorer ile avantajları nelerdir?#
Ultralytics Explorer tarafından arka planda kullanılan LanceDB, disk üzerinde ölçeklenebilir gömmeler tabloları sağlar. Bu, COCO gibi büyük veri setleri için belleği tüketmeden gömmeler oluşturmanı ve yeniden kullanmanı sağlar. Bu tablolar sadece bir kez oluşturulur ve yeniden kullanılabilir, bu da veri işlemede verimliliği artırır.
Link to this sectionUltralytics 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 setlerini filtrelemelerini sağlar. 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="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())Daha fazla örnek için Yapay Zekaya Sor bölümüne göz at.