YOLO Vision 2026:

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 yükle. Benzer (ve genişletilmiş) veri seti keşif özellikleri Ultralytics Platform üzerinde mevcuttur.

Giriş#

Open In Colab Explorer API, veri setlerini keşfetmek için bir Python API'sidir. SQL sorguları, vektör benzerlik araması ve anlamsal arama kullanarak veri setinizi 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="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)
Not

Belirli bir veri seti ve model çifti için Embeddings tablosu yalnızca bir kez oluşturulur ve yeniden kullanılır. Bunlar altyapıda LanceDB kullanır ve bu veri tabanı disk üzerinde ölçeklenebilir; böylece bellek aşımı yaşamadan COCO gibi büyük veri setleri için embeddings oluşturabilir ve bunları yeniden kullanabilirsin.

Gömme (embedding) tablosunu zorla güncellemek istersen, force=True değerini create_embeddings_table yöntemine geçirebilirsin.

Gelişmiş analitikler gerçekleştirmek için doğrudan LanceDB tablo nesnesine erişebilirsin. Bu konuda daha fazla bilgi edinmek için Working with Embeddings Table section bölümüne göz at.

1. Benzerlik Araması#

Benzerlik araması, belirli bir görsele benzer görselleri bulma tekniğidir. Benzer görsellerin benzer embeddings'lere sahip olacağı fikrine dayanır. Embeddings tablosu oluşturulduktan sonra, anlamsal aramayı aşağıdaki yollardan herhangi biriyle çalıştırabilirsin:

  • Veri setindeki belirli bir dizinde veya dizin listesinde: exp.get_similar(idx=[1,10], limit=10)
  • Veri setinde bulunmayan herhangi bir görselde veya görsel listesinde: exp.get_similar(img=["path/to/img1", "path/to/img2"], limit=10)

Birden fazla girdi olması durumunda, bunların embeddings'lerinin ortalaması kullanılır.

Girişe en benzer limit sayıda veri noktasını ve bunların embedding uzayındaki mesafelerini içeren bir pandas DataFrame elde edersin. Ek filtreleme yapmak için bu veri setini kullanabilirsin.

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

Benzer Görselleri Çizdirme#

Benzer görselleri plot_similar yöntemini kullanarak da çizebilirsin. Bu yöntem, get_similar ile aynı argümanları alır ve benzer görselleri bir ızgara (grid) düzeninde çizer.

Benzer Görselleri Çizdirme
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()

2. AI'ya Sor (Doğal Dil ile Sorgulama)#

Bu özellik, SQL yazmadan doğal dil kullanarak veri setini 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 insan ve 2 köpek içeren 100 görsel göster. Başka nesneler de olabilir" şeklinde sorabilirsin; sistem sorguyu oluşturacak ve sana bu sonuçları gösterecektir. Not: Bu özellik LLM'leri kullanır, bu nedenle sonuçlar olasılıksaldır ve yanlış olabilir.

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

3. SQL Sorgulama#

sql_query yöntemini kullanarak veri setin üzerinde SQL sorguları çalıştırabilirsin. Bu yöntem giriş 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="yolo11n.pt")
exp.create_embeddings_table()

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

SQL Sorgu Sonuçlarını Çizdirme#

Bir SQL sorgusunun sonuçlarını plot_sql_query yöntemini kullanarak da çizebilirsin. Bu yöntem, sql_query ile aynı argümanları alır ve sonuçları bir ızgara düzeninde çizer.

SQL Sorgu Sonuçlarını Çizdirme
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")

4. Embeddings Tablosu ile Çalışma#

Embeddings tablosuyla doğrudan da çalışabilirsin. Embeddings tablosu oluşturulduktan sonra, Explorer.table kullanarak ona erişebilirsin

İpucu

Explorer dahili olarak LanceDB tabloları üzerinde çalışır. Bu tabloya Explorer.table nesnesini kullanarak doğrudan erişebilir, ham sorgular çalıştırabilir, ön ve son filtrelemeleri (pre- ve post-filters) uygulayabilirsin.

from ultralytics import Explorer

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

Tablo ile yapabileceklerine dair bazı örnekler şunlardır:

Ham Embeddings Verilerini 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="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)

Vektör İndeksi Oluştur#

Büyük veri setleri kullanırken, daha hızlı sorgulama için özel bir vektör indeksi de 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=...)

5. Embeddings Uygulamaları#

Çeşitli keşifsel analizler gerçekleştirmek için embeddings tablosunu kullanabilirsin. İşte bazı örnekler:

Benzerlik İndeksi#

Explorer, bir similarity_index işlemiyle birlikte gelir:

  • Her veri noktasının veri kümesinin geri kalanıyla ne kadar benzer olduğunu tahmin etmeye çalışır.
  • Bu işlem, oluşturulan embedding uzayında mevcut görsele max_dist değerinden daha yakın olan kaç görsel embedding'i olduğunu sayarak gerçekleştirilir; bu sırada her seferinde top_k benzer görsel dikkate alınır.

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

  • idx: Veri setindeki görselin indeksi
  • im_file: Görsel dosyasının yolu
  • count: Veri setinde, mevcut görsele max_dist değerinden daha yakın olan görsel sayısı
  • sim_im_files: count benzer görsellerin yollarının listesi
İpucu

Belirli bir veri seti, model, max_dist ve top_k için bir kez oluşturulan benzerlik indeksi yeniden kullanılacaktır. Veri setinin değiştiği durumlarda veya yalnızca benzerlik indeksini yeniden oluşturman gerektiğinde force=True değerini geçirebilirsin.

Benzerlik İndeksi
from ultralytics import Explorer

exp = Explorer()
exp.create_embeddings_table()

sim_idx = exp.similarity_index()

Veri setini filtrelemek üzere özel koşullar oluşturmak için benzerlik indeksini kullanabilirsin. Örneğin, aşağıdaki kodu kullanarak veri setindeki başka hiçbir görsele benzer olmayan görselleri filtreleyebilirsin:

import numpy as np

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

Embedding Uzayını Görselleştirme#

Ayrıca tercih ettiğin görselleştirme aracını kullanarak embedding uzayını görselleştirebilirsin. Örneğin, Matplotlib kullanan 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 kullanarak kendi CV veri seti keşif raporlarını oluşturmaya başla. İlham almak için VOC Exploration Example sayfasına göz at.

Ultralytics Explorer Kullanılarak Oluşturulan Uygulamalar#

Explorer API tabanlı GUI Demo uygulamamızı dene

SSS#

Ultralytics 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 benzerlik araması ve semantik arama kullanarak veri setlerini filtrelemesine ve aramasına olanak tanır. Bu güçlü Python API, büyük veri setlerini işleyebilir; bu da onu Ultralytics modellerini kullanan çeşitli computer vision görevleri için ideal kılar.

Ultralytics 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 komut, Explorer API işlevselliği için gerekli tüm harici kütüphaneleri otomatik olarak yükleyecektir. Ek kurulum detayları için dokümantasyonumuzun installation section bölümüne bakın.

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

Bir embeddings tablosu oluşturarak ve benzer görseller için bu tabloyu sorgulayarak benzerlik aramaları yapmak üzere Ultralytics Explorer API'yi kullanabilirsin. Temel bir örnek aşağıdadır:

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 detay için lütfen Similarity Search section bölümünü ziyaret et.

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

Ultralytics Explorer tarafından arka planda kullanılan LanceDB, disk üzerinde ölçeklenebilir embeddings tabloları sağlar. Bu, bellek aşımı yaşamadan COCO gibi büyük veri setleri için embeddings oluşturabilmeni ve bunları yeniden kullanabilmeni sağlar. Bu tablolar yalnızca bir kez oluşturulur ve yeniden kullanılabilir, böylece veri yönetiminde verimlilik artar.

Ultralytics Explorer API'deki Ask AI özelliği nasıl çalışır?#

Ask AI özelliği, kullanıcıların doğal dil sorgularını kullanarak veri setlerini filtrelemesine olanak tanır. Bu özellik, arka planda bu sorguları 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 Ask AI section bölümüne göz at.

Yorumlar